1inch-agent-kit
Version:
AI Agent Kit for 1inch - Connect any LLM to 1inch DeFi protocols
259 lines • 11.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.balanceAPI = balanceAPI;
exports.getAggregatedBalancesAndAllowances = getAggregatedBalancesAndAllowances;
exports.getBalances = getBalances;
exports.getCustomTokenBalances = getCustomTokenBalances;
exports.getMultipleWalletsTokenBalances = getMultipleWalletsTokenBalances;
exports.getBalancesAndAllowances = getBalancesAndAllowances;
exports.getCustomTokenBalancesAndAllowances = getCustomTokenBalancesAndAllowances;
exports.getAllowances = getAllowances;
exports.getCustomTokenAllowances = getCustomTokenAllowances;
const fetcher_1 = require("../../utils/fetcher");
const wallet_1 = require("../../utils/wallet");
/**
* Get balances and allowances by spender for list of wallets addresses
*/
async function getAggregatedBalancesAndAllowances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
let url = `/balance/v1.2/${params.chain}/aggregatedBalancesAndAllowances/${params.spender}`;
const queryParams = {
wallets: params.wallets
};
if (params.filterEmpty !== undefined) {
queryParams.filterEmpty = params.filterEmpty;
}
return await fetcher.get(url, queryParams);
}
/**
* Get balances of tokens for walletAddress
*/
async function getBalances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
const url = `/balance/v1.2/${params.chain}/balances/${params.walletAddress}`;
return await fetcher.get(url);
}
/**
* Get balances of custom tokens for walletAddress
*/
async function getCustomTokenBalances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
const url = `/balance/v1.2/${params.chain}/balances/${params.walletAddress}`;
const requestBody = {
tokens: params.tokens
};
return await fetcher.post(url, requestBody);
}
/**
* Get balances of custom tokens for list of wallets addresses
*/
async function getMultipleWalletsTokenBalances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
const url = `/balance/v1.2/${params.chain}/balances/multiple/walletsAndTokens`;
const requestBody = {
tokens: params.tokens,
wallets: params.wallets
};
return await fetcher.post(url, requestBody);
}
/**
* Get balances and allowances of tokens by spender for walletAddress
*/
async function getBalancesAndAllowances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
const url = `/balance/v1.2/${params.chain}/allowancesAndBalances/${params.spender}/${params.walletAddress}`;
return await fetcher.get(url);
}
/**
* Get balances and allowances of custom tokens by spender for walletAddress
*/
async function getCustomTokenBalancesAndAllowances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
const url = `/balance/v1.2/${params.chain}/allowancesAndBalances/${params.spender}/${params.walletAddress}`;
const requestBody = {
tokens: params.tokens
};
return await fetcher.post(url, requestBody);
}
/**
* Get allowances of tokens by spender for walletAddress
*/
async function getAllowances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
const url = `/balance/v1.2/${params.chain}/allowances/${params.spender}/${params.walletAddress}`;
return await fetcher.get(url);
}
/**
* Get allowances of custom tokens by spender for walletAddress
*/
async function getCustomTokenAllowances(params) {
const apiKey = process.env.ONEINCH_API_KEY;
if (!apiKey) {
throw new Error("1inch API key is required. Set ONEINCH_API_KEY environment variable.");
}
const fetcher = new fetcher_1.OneInchFetcher(apiKey);
const url = `/balance/v1.2/${params.chain}/allowances/${params.spender}/${params.walletAddress}`;
const requestBody = {
tokens: params.tokens
};
return await fetcher.post(url, requestBody);
}
/**
* Main balanceAPI function that handles all 8 endpoints
*/
async function balanceAPI(params) {
try {
// Initialize wallet manager if not already done
if (!wallet_1.walletManager.getWalletContext().isConnected) {
await wallet_1.walletManager.initialize();
}
// Use wallet address from connected wallet if not provided
const connectedWallet = wallet_1.walletManager.getWalletContext().wallet;
const walletAddress = params.walletAddress || params.wallet?.address || connectedWallet?.address;
// Optional debug logging (uncomment for debugging)
// console.log('Balance API Debug:');
// console.log(' - params.walletAddress:', params.walletAddress);
// console.log(' - params.wallet?.address:', params.wallet?.address);
// console.log(' - connectedWallet?.address:', connectedWallet?.address);
// console.log(' - final walletAddress:', walletAddress);
// console.log(' - chain:', params.chain);
// console.log(' - endpoint:', params.endpoint);
switch (params.endpoint) {
case "aggregatedBalancesAndAllowances":
if (!params.spender) {
throw new Error("spender is required for aggregatedBalancesAndAllowances endpoint");
}
if (!params.wallets || params.wallets.length === 0) {
throw new Error("wallets array is required for aggregatedBalancesAndAllowances endpoint");
}
return await getAggregatedBalancesAndAllowances({
chain: params.chain,
spender: params.spender,
wallets: params.wallets,
filterEmpty: params.filterEmpty
});
case "getBalances":
if (!walletAddress) {
throw new Error("walletAddress is required for getBalances endpoint");
}
return await getBalances({
chain: params.chain,
walletAddress: walletAddress
});
case "getCustomTokenBalances":
if (!walletAddress) {
throw new Error("walletAddress is required for getCustomTokenBalances endpoint");
}
if (!params.tokens || params.tokens.length === 0) {
throw new Error("tokens array is required for getCustomTokenBalances endpoint");
}
return await getCustomTokenBalances({
chain: params.chain,
walletAddress: walletAddress,
tokens: params.tokens
});
case "getMultipleWalletsTokenBalances":
if (!params.wallets || params.wallets.length === 0) {
throw new Error("wallets array is required for getMultipleWalletsTokenBalances endpoint");
}
if (!params.tokens || params.tokens.length === 0) {
throw new Error("tokens array is required for getMultipleWalletsTokenBalances endpoint");
}
return await getMultipleWalletsTokenBalances({
chain: params.chain,
tokens: params.tokens,
wallets: params.wallets
});
case "getBalancesAndAllowances":
if (!walletAddress) {
throw new Error("walletAddress is required for getBalancesAndAllowances endpoint");
}
if (!params.spender) {
throw new Error("spender is required for getBalancesAndAllowances endpoint");
}
return await getBalancesAndAllowances({
chain: params.chain,
spender: params.spender,
walletAddress: walletAddress
});
case "getCustomTokenBalancesAndAllowances":
if (!walletAddress) {
throw new Error("walletAddress is required for getCustomTokenBalancesAndAllowances endpoint");
}
if (!params.spender) {
throw new Error("spender is required for getCustomTokenBalancesAndAllowances endpoint");
}
if (!params.tokens || params.tokens.length === 0) {
throw new Error("tokens array is required for getCustomTokenBalancesAndAllowances endpoint");
}
return await getCustomTokenBalancesAndAllowances({
chain: params.chain,
spender: params.spender,
walletAddress: walletAddress,
tokens: params.tokens
});
case "getAllowances":
if (!walletAddress) {
throw new Error("walletAddress is required for getAllowances endpoint");
}
if (!params.spender) {
throw new Error("spender is required for getAllowances endpoint");
}
return await getAllowances({
chain: params.chain,
spender: params.spender,
walletAddress: walletAddress
});
case "getCustomTokenAllowances":
if (!walletAddress) {
throw new Error("walletAddress is required for getCustomTokenAllowances endpoint");
}
if (!params.spender) {
throw new Error("spender is required for getCustomTokenAllowances endpoint");
}
if (!params.tokens || params.tokens.length === 0) {
throw new Error("tokens array is required for getCustomTokenAllowances endpoint");
}
return await getCustomTokenAllowances({
chain: params.chain,
spender: params.spender,
walletAddress: walletAddress,
tokens: params.tokens
});
default:
throw new Error(`Unknown endpoint: ${params.endpoint}`);
}
}
catch (error) {
throw new Error(`Balance API error: ${error instanceof Error ? error.message : 'Unknown error'}`);
}
}
//# sourceMappingURL=index.js.map