UNPKG

1inch-agent-kit

Version:

AI Agent Kit for 1inch - Connect any LLM to 1inch DeFi protocols

307 lines 12.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getActiveOrders = getActiveOrders; exports.getSettlementAddress = getSettlementAddress; exports.getOrderByHash = getOrderByHash; exports.getOrdersByHashes = getOrdersByHashes; exports.getOrdersByMaker = getOrdersByMaker; exports.getQuote = getQuote; exports.getQuoteWithCustomPreset = getQuoteWithCustomPreset; exports.submitOrder = submitOrder; exports.submitMultipleOrders = submitMultipleOrders; exports.fusionAPI = fusionAPI; const fetcher_1 = require("../../utils/fetcher"); // ============================================================================ // ORDERS API FUNCTIONS // ============================================================================ /** * Get gasless swap active orders */ async function getActiveOrders(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); const queryParams = {}; if (params.page !== undefined) queryParams.page = params.page; if (params.limit !== undefined) queryParams.limit = params.limit; if (params.version !== undefined) queryParams.version = params.version; return await fetcher.get(`/fusion/orders/v2.0/${params.chain}/order/active`, queryParams); } /** * Get actual settlement contract address */ async function getSettlementAddress(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); return await fetcher.get(`/fusion/orders/v2.0/${params.chain}/order/settlement`); } /** * Get order status by order hash */ async function getOrderByHash(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); return await fetcher.get(`/fusion/orders/v2.0/${params.chain}/order/status/${params.orderHash}`); } /** * Get orders by hashes */ async function getOrdersByHashes(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); const requestBody = { orderHashes: params.orderHashes }; return await fetcher.post(`/fusion/orders/v2.0/${params.chain}/order/status`, requestBody); } /** * Get orders by maker address */ async function getOrdersByMaker(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); const queryParams = {}; if (params.page !== undefined) queryParams.page = params.page; if (params.limit !== undefined) queryParams.limit = params.limit; if (params.timestampFrom !== undefined) queryParams.timestampFrom = params.timestampFrom; if (params.timestampTo !== undefined) queryParams.timestampTo = params.timestampTo; if (params.makerToken !== undefined) queryParams.makerToken = params.makerToken; if (params.takerToken !== undefined) queryParams.takerToken = params.takerToken; if (params.withToken !== undefined) queryParams.withToken = params.withToken; if (params.version !== undefined) queryParams.version = params.version; return await fetcher.get(`/fusion/orders/v2.0/${params.chain}/order/maker/${params.address}`, queryParams); } // ============================================================================ // QUOTER API FUNCTIONS // ============================================================================ /** * Get quote details based on input data */ async function getQuote(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); const queryParams = { fromTokenAddress: params.fromTokenAddress, toTokenAddress: params.toTokenAddress, amount: params.amount, walletAddress: params.walletAddress }; if (params.enableEstimate !== undefined) queryParams.enableEstimate = params.enableEstimate; if (params.fee !== undefined) queryParams.fee = params.fee; if (params.showDestAmountMinusFee !== undefined) queryParams.showDestAmountMinusFee = params.showDestAmountMinusFee; if (params.isPermit2 !== undefined) queryParams.isPermit2 = params.isPermit2; if (params.surplus !== undefined) queryParams.surplus = params.surplus; if (params.permit !== undefined) queryParams.permit = params.permit; if (params.slippage !== undefined) queryParams.slippage = params.slippage; if (params.source !== undefined) queryParams.source = params.source; return await fetcher.get(`/fusion/quoter/v2.0/${params.chain}/quote/receive`, queryParams); } /** * Get quote with custom preset details */ async function getQuoteWithCustomPreset(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); const queryParams = { fromTokenAddress: params.fromTokenAddress, toTokenAddress: params.toTokenAddress, amount: params.amount, walletAddress: params.walletAddress }; if (params.enableEstimate !== undefined) queryParams.enableEstimate = params.enableEstimate; if (params.fee !== undefined) queryParams.fee = params.fee; if (params.showDestAmountMinusFee !== undefined) queryParams.showDestAmountMinusFee = params.showDestAmountMinusFee; if (params.isPermit2 !== undefined) queryParams.isPermit2 = params.isPermit2; if (params.surplus !== undefined) queryParams.surplus = params.surplus; if (params.permit !== undefined) queryParams.permit = params.permit; if (params.source !== undefined) queryParams.source = params.source; return await fetcher.post(`/fusion/quoter/v2.0/${params.chain}/quote/receive?${new URLSearchParams(queryParams)}`, params.customPreset); } // ============================================================================ // RELAYER API FUNCTIONS // ============================================================================ /** * Submit a limit order that resolvers will be able to fill */ async function submitOrder(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); await fetcher.post(`/fusion/relayer/v2.0/${params.chain}/order/submit`, params.order); } /** * Submit a list of limit orders which resolvers will be able to fill */ async function submitMultipleOrders(params) { const apiKey = process.env.ONEINCH_API_KEY; if (!apiKey) { throw new Error("1inch API key is required."); } const fetcher = new fetcher_1.OneInchFetcher(apiKey); await fetcher.post(`/fusion/relayer/v2.0/${params.chain}/order/submit/many`, params.orders); } /** * Main Fusion API function that routes to specific endpoints based on action */ async function fusionAPI(params) { switch (params.action) { case "getActiveOrders": return await getActiveOrders({ chain: params.chain, page: params.page, limit: params.limit, version: params.version, wallet: params.wallet }); case "getSettlementAddress": return await getSettlementAddress({ chain: params.chain, wallet: params.wallet }); case "getOrderByHash": if (!params.orderHash) { throw new Error("orderHash is required for getOrderByHash action"); } return await getOrderByHash({ chain: params.chain, orderHash: params.orderHash, wallet: params.wallet }); case "getOrdersByHashes": if (!params.orderHashes || params.orderHashes.length === 0) { throw new Error("orderHashes array is required for getOrdersByHashes action"); } return await getOrdersByHashes({ chain: params.chain, orderHashes: params.orderHashes, wallet: params.wallet }); case "getOrdersByMaker": if (!params.address) { throw new Error("address is required for getOrdersByMaker action"); } return await getOrdersByMaker({ chain: params.chain, address: params.address, page: params.page, limit: params.limit, timestampFrom: params.timestampFrom, timestampTo: params.timestampTo, makerToken: params.makerToken, takerToken: params.takerToken, withToken: params.withToken, version: params.version, wallet: params.wallet }); case "getQuote": if (!params.fromTokenAddress || !params.toTokenAddress || !params.amount || !params.walletAddress) { throw new Error("fromTokenAddress, toTokenAddress, amount, and walletAddress are required for getQuote action"); } return await getQuote({ chain: params.chain, fromTokenAddress: params.fromTokenAddress, toTokenAddress: params.toTokenAddress, amount: params.amount, walletAddress: params.walletAddress, enableEstimate: params.enableEstimate, fee: params.fee, showDestAmountMinusFee: params.showDestAmountMinusFee, isPermit2: params.isPermit2, surplus: params.surplus, permit: params.permit, slippage: params.slippage, source: params.source, wallet: params.wallet }); case "getQuoteWithCustomPreset": if (!params.fromTokenAddress || !params.toTokenAddress || !params.amount || !params.walletAddress || !params.customPreset) { throw new Error("fromTokenAddress, toTokenAddress, amount, walletAddress, and customPreset are required for getQuoteWithCustomPreset action"); } return await getQuoteWithCustomPreset({ chain: params.chain, fromTokenAddress: params.fromTokenAddress, toTokenAddress: params.toTokenAddress, amount: params.amount, walletAddress: params.walletAddress, customPreset: params.customPreset, enableEstimate: params.enableEstimate, fee: params.fee, showDestAmountMinusFee: params.showDestAmountMinusFee, isPermit2: params.isPermit2, surplus: params.surplus, permit: params.permit, slippage: params.slippage, source: params.source, wallet: params.wallet }); case "submitOrder": if (!params.order) { throw new Error("order is required for submitOrder action"); } return await submitOrder({ chain: params.chain, order: params.order, wallet: params.wallet }); case "submitMultipleOrders": if (!params.orders || params.orders.length === 0) { throw new Error("orders array is required for submitMultipleOrders action"); } return await submitMultipleOrders({ chain: params.chain, orders: params.orders, wallet: params.wallet }); default: throw new Error(`Unknown action: ${params.action}`); } } //# sourceMappingURL=index.js.map