import { disconnectVincentAbilityClients, getVincentAbilityClient, isAbilityResponseFailure } from '@lit-protocol/vincent-app-sdk/abilityClient';
import { bundledVincentAbility as uniswapBundledAbility } from '@lit-protocol/vincent-ability-uniswap-swap';
import { delegateeEthersSigner } = from './ethersSigner';
import { ETH_RPC_URL, BASE_RPC_URL } from './rpcConfigs';
const uniswapAbilityClient = getVincentAbilityClient({
bundledVincentAbility: uniswapBundledAbility,
ethersSigner: delegateeEthersSigner,
});
// First, call `precheck()` to get a best-estimate result indicating that the ability execution in the LIT action runtime will not fail
const precheckResult = await uniswapSwapAbilityClient.precheck({
ethRpcUrl: ETH_RPC_URL,
rpcUrlForUniswap: BASE_RPC_URL,
chainIdForUniswap: 8453, // Base
tokenInAddress: '0x4200000000000000000000000000000000000006', // WETH
tokenInDecimals: 18,
tokenInAmount: 0.0000077,
tokenOutAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base
tokenOutDecimals: 8,
},
{
delegatorPkpEthAddress: '0x123456789123456789123456789...',
});
const uniswapSwapExecutionResult = await uniswapSwapAbilityClient.execute({
ethRpcUrl: ETH_RPC_URL,
rpcUrlForUniswap: BASE_RPC_URL,
chainIdForUniswap: 8453,
tokenInAddress: '0x4200000000000000000000000000000000000006', // WETH
tokenInDecimals: 18,
tokenInAmount: 0.0000077,
tokenOutAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // USDC on Base
tokenOutDecimals: 8,
},
{
delegatorPkpEthAddress: '0x123456789123456789123456789...',
});
if(isAbilityResponseFailure(uniswapSwapExecutionResult)) {
...handle failure
} else {
...handle result
}