Comment on page
Swap Tokens on Uniswap
Swapping tokens on Uniswap likely requires some interaction with the Uniswap SDK in order to generate the
path
and assetAmount
parameters shown below. import {
callOnIntegrationArgs,
uniswapV2TakeOrderArgs,
IntegrationManagerActionId,
takeOrderSelector,
ComptrollerLib
} from '@enzymefinance/protocol';
// create a local signer connected to your chosen Ethereum node
const provider = providers.StaticJsonRpcProvider(ethNodeAddress, ethNetwork);
const signer = new Wallet(managerEthPrivateKey, provider);
// the address of the adapter for the extension you wish to use
const uniswapV2Adapter = '0x23sdfsn...'; // for example only
// the address of the protocol release's integration manager contract
const integrationManagerAddress = '0x32sdf...'; // for example only
// the address of your vault's comptroller
const comptrollerAddress = '0x8syweo...'; // for example only
// assemble the arguments for the integration
const takeOrderArgs = uniswapV2TakeOrderArgs({
path: aPath, // for example only
minIncomingAssetAmount: aMinIncomingAssetAmount, // for example only
outgoingAssetAmount: anOutgoingAssetAmount, // for example only
});
// assemble and encode the arguments for callOnExtension()
const callArgs = callOnIntegrationArgs({
adapter: uniswapV2Adapter,
selector: takeOrderSelector,
encodedCallArgs: takeOrderArgs,
});
// instantiate your comptroller
const vaultComptroller = new ComptrollerLib(comptrollerAddress, signer);
const swapTx = vaultComptroller.callOnExtension.args(
integrationManagerAddress,
IntegrationManagerActionId.CallOnIntegration,
callArgs
);
const swapTxReceipt = await swapTx.send();
console.log('Pending transaction:', swapTxReceipt.transactionHash);
console.log('Transaction included in block number:', swapTxReceipt.blockNumber);