hak-saucerswap-plugin 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/api/endpoints.ts","../src/api/client.ts","../src/config.ts","../src/utils/amm.ts","../src/utils/quote.ts","../src/utils/units.ts","../src/utils/tokens.ts","../src/utils/transactions.ts","../src/tools/swap.ts","../src/tools/quote.ts","../src/tools/pools.ts","../src/tools/liquidity.ts","../src/tools/farms.ts","../src/index.ts"],"names":["axios","TokenId","AccountId","ContractId","AgentMode","z","params","ContractFunctionParameters","ContractExecuteTransaction","resolveDeadline"],"mappings":"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","file":"index.cjs","sourcesContent":["export const SAUCER_ENDPOINTS = {\n poolsV1: \"/pools\",\n poolsV2: \"/v2/pools\",\n swapQuote: \"/v1/swap/quote\",\n tokens: \"/tokens\",\n farms: \"/farms\",\n stats: \"/stats\"\n} as const;\n","import axios, { type AxiosError, type AxiosInstance } from \"axios\";\nimport { SAUCER_ENDPOINTS } from \"./endpoints\";\nimport type {\n ApiFarm,\n ApiLiquidityPool,\n ApiSwapQuote,\n ApiToken,\n PoolVersion,\n SaucerSwapClientOptions\n} from \"../types\";\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst isRetryableError = (error: AxiosError): boolean => {\n if (error.code === \"ECONNRESET\" || error.code === \"ETIMEDOUT\") {\n return true;\n }\n const status = error.response?.status;\n if (!status) {\n return true;\n }\n return status === 429 || (status >= 500 && status < 600);\n};\n\nexport class SaucerSwapClient {\n private readonly http: AxiosInstance;\n private readonly retries: number;\n private tokensCache: ApiToken[] | null = null;\n private tokenIndex: Map<string, ApiToken> | null = null;\n\n constructor(options: SaucerSwapClientOptions & { http?: AxiosInstance } = {}) {\n this.retries = options.retries ?? 2;\n this.http =\n options.http ??\n axios.create({\n baseURL: options.baseUrl ?? \"https://api.saucerswap.finance\",\n timeout: options.timeoutMs ?? 10_000\n });\n }\n\n private async request<T>(path: string, params?: Record<string, string | number>): Promise<T> {\n let lastError: unknown;\n for (let attempt = 0; attempt <= this.retries; attempt += 1) {\n try {\n const response = await this.http.get<T>(path, { params });\n return response.data;\n } catch (error) {\n const axiosError = error as AxiosError;\n lastError = axiosError;\n if (attempt < this.retries && isRetryableError(axiosError)) {\n await sleep(200 * 2 ** attempt);\n continue;\n }\n throw axiosError;\n }\n }\n throw lastError;\n }\n\n async getTokens(): Promise<ApiToken[]> {\n const tokens = await this.request<ApiToken[]>(SAUCER_ENDPOINTS.tokens);\n this.cacheTokens(tokens);\n return tokens;\n }\n\n async getTokenByIdOrSymbol(input: string): Promise<ApiToken | null> {\n if (!this.tokenIndex) {\n await this.getTokens();\n }\n return this.tokenIndex?.get(input.toLowerCase()) ?? null;\n }\n\n async resolveTokenId(input: string): Promise<string> {\n if (/^\\d+\\.\\d+\\.\\d+$/.test(input)) {\n return input;\n }\n const token = await this.getTokenByIdOrSymbol(input);\n return token?.id ?? input;\n }\n\n async getPools(version: PoolVersion): Promise<ApiLiquidityPool[]> {\n const endpoint = version === \"v1\" ? SAUCER_ENDPOINTS.poolsV1 : SAUCER_ENDPOINTS.poolsV2;\n return this.request<ApiLiquidityPool[]>(endpoint);\n }\n\n async getPoolByTokens(\n tokenA: string,\n tokenB: string,\n version: PoolVersion\n ): Promise<ApiLiquidityPool | null> {\n const pools = await this.getPools(version);\n const match = pools.find((pool) => {\n const direct = pool.tokenA.id === tokenA && pool.tokenB.id === tokenB;\n const inverse = pool.tokenA.id === tokenB && pool.tokenB.id === tokenA;\n return direct || inverse;\n });\n return match ?? null;\n }\n\n async getSwapQuote(params: {\n fromToken: string;\n toToken: string;\n amount: string;\n }): Promise<ApiSwapQuote> {\n const { fromToken, toToken, amount } = params;\n return this.request<ApiSwapQuote>(SAUCER_ENDPOINTS.swapQuote, {\n tokenIn: fromToken,\n tokenOut: toToken,\n amount,\n fromToken,\n toToken\n });\n }\n\n async getFarms(): Promise<ApiFarm[]> {\n return this.request<ApiFarm[]>(SAUCER_ENDPOINTS.farms);\n }\n\n async getStats(): Promise<Record<string, unknown>> {\n return this.request<Record<string, unknown>>(SAUCER_ENDPOINTS.stats);\n }\n\n private cacheTokens(tokens: ApiToken[]) {\n this.tokensCache = tokens;\n this.tokenIndex = new Map();\n for (const token of tokens) {\n this.tokenIndex.set(token.id.toLowerCase(), token);\n this.tokenIndex.set(token.symbol.toLowerCase(), token);\n this.tokenIndex.set(token.name.toLowerCase(), token);\n }\n }\n}\n\nexport const createSaucerSwapClient = (options: SaucerSwapClientOptions): SaucerSwapClient => {\n return new SaucerSwapClient(options);\n};\n","import type { PoolVersion, SaucerSwapConfig } from \"./types\";\n\nconst DEFAULT_CONFIG: SaucerSwapConfig = {\n baseUrl: \"https://api.saucerswap.finance\",\n timeoutMs: 10_000,\n retries: 2,\n routerContractId: undefined,\n routerV2ContractId: undefined,\n wrappedHbarTokenId: undefined,\n tokenAliases: {},\n defaultPoolVersion: \"v2\",\n gasLimit: 2_000_000,\n deadlineMinutes: 20\n};\n\nconst toNumber = (value: string | undefined, fallback: number): number => {\n if (!value) {\n return fallback;\n }\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : fallback;\n};\n\nconst readTokenAliases = (value: string | undefined): Record<string, string> => {\n if (!value) {\n return {};\n }\n try {\n const parsed = JSON.parse(value);\n if (parsed && typeof parsed === \"object\") {\n return parsed as Record<string, string>;\n }\n } catch {\n return {};\n }\n return {};\n};\n\nconst readPoolVersion = (value: string | undefined): PoolVersion | undefined => {\n if (value === \"v1\" || value === \"v2\") {\n return value;\n }\n return undefined;\n};\n\nconst readContextConfig = (context: unknown): Partial<SaucerSwapConfig> => {\n if (!context || typeof context !== \"object\") {\n return {};\n }\n const ctx = context as {\n config?: { saucerswap?: Partial<SaucerSwapConfig> };\n pluginConfig?: { saucerswap?: Partial<SaucerSwapConfig> };\n };\n return {\n ...(ctx.pluginConfig?.saucerswap ?? {}),\n ...(ctx.config?.saucerswap ?? {})\n };\n};\n\nexport const resolveSaucerSwapConfig = (context?: unknown): SaucerSwapConfig => {\n const ctxConfig = readContextConfig(context);\n const envAliases = readTokenAliases(process.env.SAUCERSWAP_TOKEN_ALIASES);\n const envDefaultVersion = readPoolVersion(process.env.SAUCERSWAP_DEFAULT_POOL_VERSION);\n\n return {\n ...DEFAULT_CONFIG,\n ...ctxConfig,\n baseUrl: ctxConfig.baseUrl ?? process.env.SAUCERSWAP_BASE_URL ?? DEFAULT_CONFIG.baseUrl,\n timeoutMs: ctxConfig.timeoutMs ?? toNumber(process.env.SAUCERSWAP_TIMEOUT_MS, DEFAULT_CONFIG.timeoutMs),\n retries: ctxConfig.retries ?? toNumber(process.env.SAUCERSWAP_RETRIES, DEFAULT_CONFIG.retries),\n routerContractId: ctxConfig.routerContractId ?? process.env.SAUCERSWAP_ROUTER_CONTRACT_ID,\n routerV2ContractId: ctxConfig.routerV2ContractId ?? process.env.SAUCERSWAP_ROUTER_V2_CONTRACT_ID,\n wrappedHbarTokenId: ctxConfig.wrappedHbarTokenId ?? process.env.SAUCERSWAP_WRAPPED_HBAR_TOKEN_ID,\n tokenAliases: {\n ...envAliases,\n ...(ctxConfig.tokenAliases ?? {})\n },\n defaultPoolVersion: ctxConfig.defaultPoolVersion ?? envDefaultVersion ?? DEFAULT_CONFIG.defaultPoolVersion,\n gasLimit: ctxConfig.gasLimit ?? toNumber(process.env.SAUCERSWAP_GAS_LIMIT, DEFAULT_CONFIG.gasLimit),\n deadlineMinutes: ctxConfig.deadlineMinutes ?? toNumber(process.env.SAUCERSWAP_DEADLINE_MINUTES, DEFAULT_CONFIG.deadlineMinutes)\n };\n};\n","export const calculatePriceImpact = (\n inputAmount: string,\n outputAmount: string,\n poolReserveIn: string,\n poolReserveOut: string\n): number | null => {\n const inAmount = Number(inputAmount);\n const outAmount = Number(outputAmount);\n const reserveIn = Number(poolReserveIn);\n const reserveOut = Number(poolReserveOut);\n if (\n !Number.isFinite(inAmount) ||\n !Number.isFinite(outAmount) ||\n !Number.isFinite(reserveIn) ||\n !Number.isFinite(reserveOut) ||\n inAmount <= 0 ||\n outAmount <= 0 ||\n reserveIn <= 0 ||\n reserveOut <= 0\n ) {\n return null;\n }\n const expectedOutput = (inAmount * reserveOut) / (reserveIn + inAmount);\n if (!Number.isFinite(expectedOutput) || expectedOutput <= 0) {\n return null;\n }\n return ((expectedOutput - outAmount) / expectedOutput) * 100;\n};\n\nexport const applySlippageToAmount = (amount: string, slippageTolerance: number): string => {\n const amountBig = BigInt(amount);\n const bps = Math.max(0, Math.round(slippageTolerance * 100));\n const numerator = BigInt(10_000 - bps);\n return ((amountBig * numerator) / 10_000n).toString();\n};\n","import type { ApiSwapQuote, SwapQuote } from \"../types\";\n\nconst readAmount = (value: unknown): string | null => {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value.toString();\n }\n return null;\n};\n\nexport const normalizeSwapQuote = (quote: ApiSwapQuote, fallbackAmountIn: string): SwapQuote => {\n const amountIn = readAmount(quote.amountIn) ?? fallbackAmountIn;\n const expectedOutput =\n readAmount(quote.expectedOutput) ??\n readAmount(quote.amountOut) ??\n readAmount((quote as { amountOutMin?: string | number }).amountOutMin) ??\n \"\";\n\n if (!expectedOutput) {\n throw new Error(\"SaucerSwap quote did not include an output amount.\");\n }\n\n return {\n amountIn,\n expectedOutput,\n priceImpact: typeof quote.priceImpact === \"number\" ? quote.priceImpact : null,\n route: Array.isArray(quote.route) ? quote.route : [],\n raw: quote\n };\n};\n","export const parseUnits = (amount: string, decimals: number): string => {\n if (!amount || typeof amount !== \"string\") {\n throw new Error(\"Amount must be a non-empty string.\");\n }\n if (decimals < 0) {\n throw new Error(\"Decimals must be non-negative.\");\n }\n const trimmed = amount.trim();\n if (!/^\\d+(\\.\\d+)?$/.test(trimmed)) {\n throw new Error(`Invalid amount format: ${amount}`);\n }\n const [whole, fraction = \"\"] = trimmed.split(\".\");\n if (fraction.length > decimals) {\n throw new Error(`Amount has more than ${decimals} decimal places.`);\n }\n const paddedFraction = fraction.padEnd(decimals, \"0\");\n const combined = `${whole}${paddedFraction}`;\n const normalized = combined.replace(/^0+/, \"\");\n return normalized === \"\" ? \"0\" : normalized;\n};\n\nexport const formatUnits = (amount: string, decimals: number): string => {\n if (!amount || typeof amount !== \"string\") {\n throw new Error(\"Amount must be a non-empty string.\");\n }\n if (decimals < 0) {\n throw new Error(\"Decimals must be non-negative.\");\n }\n const trimmed = amount.trim();\n if (!/^\\d+$/.test(trimmed)) {\n throw new Error(`Invalid integer amount: ${amount}`);\n }\n const padded = trimmed.padStart(decimals + 1, \"0\");\n const whole = padded.slice(0, -decimals);\n const fraction = padded.slice(-decimals).replace(/0+$/, \"\");\n return fraction.length > 0 ? `${whole}.${fraction}` : whole;\n};\n","import { AccountId, ContractId, TokenId } from \"@hashgraph/sdk\";\nimport type { SaucerSwapConfig } from \"../types\";\n\nexport const normalizeTokenAlias = (token: string, config: SaucerSwapConfig): string => {\n const tokenLower = token.toLowerCase();\n for (const [alias, value] of Object.entries(config.tokenAliases)) {\n if (alias.toLowerCase() === tokenLower) {\n return value;\n }\n }\n if (tokenLower === \"hbar\" && config.wrappedHbarTokenId) {\n return config.wrappedHbarTokenId;\n }\n return token;\n};\n\nexport const requireTokenId = (token: string): string => {\n if (!/^\\d+\\.\\d+\\.\\d+$/.test(token)) {\n throw new Error(`Token ID required for on-chain actions: ${token}`);\n }\n return token;\n};\n\nexport const tokenIdToSolidityAddress = (tokenId: string): string => {\n return TokenId.fromString(tokenId).toSolidityAddress();\n};\n\nexport const accountIdToSolidityAddress = (accountId: string): string => {\n return AccountId.fromString(accountId).toSolidityAddress();\n};\n\nexport const contractIdFromString = (contractId: string): ContractId => {\n return ContractId.fromString(contractId);\n};\n","import type { Client, Transaction } from \"@hashgraph/sdk\";\nimport { AgentMode } from \"hedera-agent-kit\";\n\nexport const finalizeTransaction = async (\n transaction: Transaction,\n client: Client,\n context: unknown,\n extra: Record<string, unknown>\n) => {\n const mode = (context as { mode?: AgentMode | string }).mode;\n if (mode === AgentMode.RETURN_BYTES || mode === \"returnBytes\" || mode === \"RETURN_BYTES\") {\n const txBytes = await transaction.toBytes();\n return {\n success: true,\n transactionBytes: Buffer.from(txBytes).toString(\"base64\"),\n ...extra\n };\n }\n\n const response = await transaction.execute(client);\n const receipt = await response.getReceipt(client);\n\n return {\n success: true,\n transactionId: response.transactionId?.toString(),\n status: receipt.status.toString(),\n ...extra\n };\n};\n","import { z } from \"zod\";\nimport type { Tool } from \"hedera-agent-kit\";\nimport { ContractExecuteTransaction, ContractFunctionParameters } from \"@hashgraph/sdk\";\nimport { createSaucerSwapClient } from \"../api/client\";\nimport { resolveSaucerSwapConfig } from \"../config\";\nimport { applySlippageToAmount } from \"../utils/amm\";\nimport { normalizeSwapQuote } from \"../utils/quote\";\nimport { parseUnits } from \"../utils/units\";\nimport {\n accountIdToSolidityAddress,\n contractIdFromString,\n normalizeTokenAlias,\n requireTokenId,\n tokenIdToSolidityAddress\n} from \"../utils/tokens\";\nimport { finalizeTransaction } from \"../utils/transactions\";\n\nconst swapInputSchema = z.object({\n fromToken: z\n .string()\n .describe(\"Token ID to swap from (e.g., 'HBAR' or '0.0.123456')\"),\n toToken: z.string().describe(\"Token ID to swap to\"),\n amount: z.string().describe(\"Amount to swap (decimal format)\"),\n slippageTolerance: z\n .number()\n .optional()\n .default(0.5)\n .describe(\"Maximum slippage tolerance percentage\"),\n deadline: z\n .number()\n .optional()\n .describe(\"Transaction deadline in minutes from now or a unix timestamp\")\n});\n\nconst resolveDeadline = (deadlineInput: number | undefined, defaultMinutes: number): number => {\n const now = Math.floor(Date.now() / 1000);\n if (!deadlineInput) {\n return now + defaultMinutes * 60;\n }\n if (deadlineInput > now + 60) {\n return Math.floor(deadlineInput);\n }\n return now + Math.round(deadlineInput) * 60;\n};\n\nconst amountToSmallest = (amount: string, decimals: number): string => {\n return parseUnits(amount, decimals);\n};\n\nconst expectedToSmallest = (amount: string, decimals: number): string => {\n return amount.includes(\".\") ? parseUnits(amount, decimals) : amount;\n};\n\nexport const swapTool: Tool = {\n method: \"saucerswap_swap_tokens\",\n name: \"SaucerSwap Swap Tokens\",\n description: \"Execute a token swap on SaucerSwap DEX.\",\n parameters: swapInputSchema,\n execute: async (client, context, params) => {\n const args = swapInputSchema.parse(params);\n const config = resolveSaucerSwapConfig(context);\n const operatorAccountId = client?.operatorAccountId?.toString();\n const slippageTolerance = args.slippageTolerance ?? 0.5;\n\n if (!operatorAccountId) {\n return {\n success: false,\n error: \"Hedera client with an operator account is required for swaps.\"\n };\n }\n\n try {\n const api =\n (context as { saucerswapClient?: ReturnType<typeof createSaucerSwapClient> })\n .saucerswapClient ?? createSaucerSwapClient(config);\n\n const fromTokenAlias = normalizeTokenAlias(args.fromToken, config);\n const toTokenAlias = normalizeTokenAlias(args.toToken, config);\n const fromTokenId = await api.resolveTokenId(fromTokenAlias);\n const toTokenId = await api.resolveTokenId(toTokenAlias);\n\n const fromTokenMeta = await api.getTokenByIdOrSymbol(fromTokenId);\n const toTokenMeta = await api.getTokenByIdOrSymbol(toTokenId);\n\n if (!fromTokenMeta || !toTokenMeta) {\n return {\n success: false,\n error: \"Unable to resolve token metadata from SaucerSwap API.\"\n };\n }\n\n const quote = normalizeSwapQuote(\n await api.getSwapQuote({\n fromToken: fromTokenId,\n toToken: toTokenId,\n amount: args.amount\n }),\n args.amount\n );\n\n const amountInSmallest = amountToSmallest(args.amount, fromTokenMeta.decimals);\n const expectedOutSmallest = expectedToSmallest(\n quote.expectedOutput,\n toTokenMeta.decimals\n );\n const minOutSmallest = applySlippageToAmount(expectedOutSmallest, slippageTolerance);\n\n const routerContractId =\n config.defaultPoolVersion === \"v2\"\n ? config.routerV2ContractId ?? config.routerContractId\n : config.routerContractId ?? config.routerV2ContractId;\n\n if (!routerContractId) {\n return {\n success: false,\n error: \"Missing SaucerSwap router contract ID configuration.\"\n };\n }\n\n const deadline = resolveDeadline(args.deadline, config.deadlineMinutes);\n const toAddress = accountIdToSolidityAddress(operatorAccountId);\n const path = [\n tokenIdToSolidityAddress(requireTokenId(fromTokenId)),\n tokenIdToSolidityAddress(requireTokenId(toTokenId))\n ];\n\n const params = new ContractFunctionParameters()\n .addUint256(amountInSmallest)\n .addUint256(minOutSmallest)\n .addAddressArray(path)\n .addAddress(toAddress)\n .addUint256(deadline);\n\n const transaction = new ContractExecuteTransaction()\n .setContractId(contractIdFromString(routerContractId))\n .setGas(config.gasLimit)\n .setFunction(\"swapExactTokensForTokens\", params);\n\n return await finalizeTransaction(transaction, client, context, {\n estimatedOutput: quote.expectedOutput,\n minOutput: minOutSmallest,\n priceImpact: quote.priceImpact,\n route: quote.route\n });\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error\"\n };\n }\n }\n};\n","import { z } from \"zod\";\nimport type { Tool } from \"hedera-agent-kit\";\nimport { createSaucerSwapClient } from \"../api/client\";\nimport { resolveSaucerSwapConfig } from \"../config\";\nimport { applySlippageToAmount, calculatePriceImpact } from \"../utils/amm\";\nimport { normalizeTokenAlias } from \"../utils/tokens\";\nimport { normalizeSwapQuote } from \"../utils/quote\";\n\nconst quoteInputSchema = z.object({\n fromToken: z\n .string()\n .describe(\"Token ID to swap from (e.g., 'HBAR' or '0.0.123456')\"),\n toToken: z.string().describe(\"Token ID to swap to\"),\n amount: z.string().describe(\"Amount to swap (decimal format)\"),\n slippageTolerance: z\n .number()\n .optional()\n .default(0.5)\n .describe(\"Maximum slippage tolerance percentage\")\n});\n\nexport const quoteTool: Tool = {\n method: \"saucerswap_get_swap_quote\",\n name: \"SaucerSwap Get Swap Quote\",\n description: \"Get a price quote for swapping tokens on SaucerSwap.\",\n parameters: quoteInputSchema,\n execute: async (_client, context, params) => {\n const args = quoteInputSchema.parse(params);\n const config = resolveSaucerSwapConfig(context);\n const client = (context as { saucerswapClient?: ReturnType<typeof createSaucerSwapClient> })\n .saucerswapClient;\n const api = client ?? createSaucerSwapClient(config);\n const slippageTolerance = args.slippageTolerance ?? 0.5;\n\n try {\n const fromToken = normalizeTokenAlias(args.fromToken, config);\n const toToken = normalizeTokenAlias(args.toToken, config);\n const fromTokenId = await api.resolveTokenId(fromToken);\n const toTokenId = await api.resolveTokenId(toToken);\n const rawQuote = await api.getSwapQuote({\n fromToken: fromTokenId,\n toToken: toTokenId,\n amount: args.amount\n });\n\n const normalized = normalizeSwapQuote(rawQuote, args.amount);\n\n if (normalized.priceImpact === null) {\n const pool = await api.getPoolByTokens(fromTokenId, toTokenId, config.defaultPoolVersion);\n if (pool && rawQuote.amountIn && rawQuote.amountOut) {\n const isAToB = pool.tokenA.id === fromTokenId;\n const reserveIn = isAToB ? pool.tokenReserveA : pool.tokenReserveB;\n const reserveOut = isAToB ? pool.tokenReserveB : pool.tokenReserveA;\n normalized.priceImpact = calculatePriceImpact(\n rawQuote.amountIn,\n rawQuote.amountOut,\n reserveIn,\n reserveOut\n );\n }\n }\n\n let minOutput: string | null = null;\n if (normalized.expectedOutput.includes(\".\")) {\n const expectedNumber = Number(normalized.expectedOutput);\n minOutput = Number.isFinite(expectedNumber)\n ? (expectedNumber * (1 - slippageTolerance / 100)).toString()\n : null;\n } else {\n minOutput = applySlippageToAmount(normalized.expectedOutput, slippageTolerance);\n }\n\n return {\n success: true,\n quote: normalized,\n minOutput\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error\"\n };\n }\n }\n};\n","import { z } from \"zod\";\nimport type { Tool } from \"hedera-agent-kit\";\nimport { createSaucerSwapClient } from \"../api/client\";\nimport { resolveSaucerSwapConfig } from \"../config\";\nimport { normalizeTokenAlias } from \"../utils/tokens\";\n\nconst poolsInputSchema = z.object({\n tokenA: z.string().optional().describe(\"First token ID or symbol\"),\n tokenB: z.string().optional().describe(\"Second token ID or symbol\"),\n version: z.enum([\"v1\", \"v2\"]).optional().describe(\"Pool version\"),\n limit: z.number().int().positive().optional().describe(\"Maximum number of pools to return\")\n});\n\nexport const poolsTool: Tool = {\n method: \"saucerswap_get_pools\",\n name: \"SaucerSwap Get Pools\",\n description: \"Query SaucerSwap liquidity pools and reserves.\",\n parameters: poolsInputSchema,\n execute: async (_client, context, params) => {\n const args = poolsInputSchema.parse(params);\n const config = resolveSaucerSwapConfig(context);\n const api =\n (context as { saucerswapClient?: ReturnType<typeof createSaucerSwapClient> })\n .saucerswapClient ?? createSaucerSwapClient(config);\n\n try {\n const version = args.version ?? config.defaultPoolVersion;\n const pools = await api.getPools(version);\n\n let filtered = pools;\n if (args.tokenA && args.tokenB) {\n const tokenA = normalizeTokenAlias(args.tokenA, config);\n const tokenB = normalizeTokenAlias(args.tokenB, config);\n const tokenAId = await api.resolveTokenId(tokenA);\n const tokenBId = await api.resolveTokenId(tokenB);\n filtered = pools.filter((pool) => {\n const direct = pool.tokenA.id === tokenAId && pool.tokenB.id === tokenBId;\n const inverse = pool.tokenA.id === tokenBId && pool.tokenB.id === tokenAId;\n return direct || inverse;\n });\n }\n\n if (args.limit && args.limit > 0) {\n filtered = filtered.slice(0, args.limit);\n }\n\n return {\n success: true,\n version,\n pools: filtered\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error\"\n };\n }\n }\n};\n","import { z } from \"zod\";\nimport type { Tool } from \"hedera-agent-kit\";\nimport { ContractExecuteTransaction, ContractFunctionParameters } from \"@hashgraph/sdk\";\nimport { createSaucerSwapClient } from \"../api/client\";\nimport { resolveSaucerSwapConfig } from \"../config\";\nimport { applySlippageToAmount } from \"../utils/amm\";\nimport { parseUnits } from \"../utils/units\";\nimport {\n accountIdToSolidityAddress,\n contractIdFromString,\n normalizeTokenAlias,\n requireTokenId,\n tokenIdToSolidityAddress\n} from \"../utils/tokens\";\nimport { finalizeTransaction } from \"../utils/transactions\";\n\nconst addLiquidityInputSchema = z.object({\n tokenA: z.string().describe(\"First token ID\"),\n tokenB: z.string().describe(\"Second token ID\"),\n amountA: z.string().describe(\"Amount of tokenA to add\"),\n amountB: z.string().describe(\"Amount of tokenB to add\"),\n slippageTolerance: z\n .number()\n .optional()\n .default(0.5)\n .describe(\"Maximum slippage tolerance percentage\")\n});\n\nconst removeLiquidityInputSchema = z.object({\n tokenA: z.string().describe(\"First token ID\"),\n tokenB: z.string().describe(\"Second token ID\"),\n lpTokenAmount: z.string().describe(\"Amount of LP tokens to burn\"),\n minAmountA: z.string().describe(\"Minimum amount of tokenA to receive\"),\n minAmountB: z.string().describe(\"Minimum amount of tokenB to receive\")\n});\n\nconst resolveDeadline = (defaultMinutes: number): number => {\n return Math.floor(Date.now() / 1000) + defaultMinutes * 60;\n};\n\nconst resolveRouterContract = (config: ReturnType<typeof resolveSaucerSwapConfig>): string => {\n const routerContractId =\n config.defaultPoolVersion === \"v2\"\n ? config.routerV2ContractId ?? config.routerContractId\n : config.routerContractId ?? config.routerV2ContractId;\n if (!routerContractId) {\n throw new Error(\"Missing SaucerSwap router contract ID configuration.\");\n }\n return routerContractId;\n};\n\nexport const addLiquidityTool: Tool = {\n method: \"saucerswap_add_liquidity\",\n name: \"SaucerSwap Add Liquidity\",\n description: \"Add liquidity to a SaucerSwap pool.\",\n parameters: addLiquidityInputSchema,\n execute: async (client, context, params) => {\n const args = addLiquidityInputSchema.parse(params);\n const config = resolveSaucerSwapConfig(context);\n const operatorAccountId = client?.operatorAccountId?.toString();\n const slippageTolerance = args.slippageTolerance ?? 0.5;\n\n if (!operatorAccountId) {\n return {\n success: false,\n error: \"Hedera client with an operator account is required for liquidity actions.\"\n };\n }\n\n try {\n const api =\n (context as { saucerswapClient?: ReturnType<typeof createSaucerSwapClient> })\n .saucerswapClient ?? createSaucerSwapClient(config);\n\n const tokenAInput = normalizeTokenAlias(args.tokenA, config);\n const tokenBInput = normalizeTokenAlias(args.tokenB, config);\n const tokenAId = await api.resolveTokenId(tokenAInput);\n const tokenBId = await api.resolveTokenId(tokenBInput);\n\n const tokenA = await api.getTokenByIdOrSymbol(tokenAId);\n const tokenB = await api.getTokenByIdOrSymbol(tokenBId);\n\n if (!tokenA || !tokenB) {\n return {\n success: false,\n error: \"Unable to resolve token metadata from SaucerSwap API.\"\n };\n }\n\n const amountADesired = parseUnits(args.amountA, tokenA.decimals);\n const amountBDesired = parseUnits(args.amountB, tokenB.decimals);\n const amountAMin = applySlippageToAmount(amountADesired, slippageTolerance);\n const amountBMin = applySlippageToAmount(amountBDesired, slippageTolerance);\n\n const routerContractId = resolveRouterContract(config);\n const deadline = resolveDeadline(config.deadlineMinutes);\n const toAddress = accountIdToSolidityAddress(operatorAccountId);\n\n const params = new ContractFunctionParameters()\n .addAddress(tokenIdToSolidityAddress(requireTokenId(tokenAId)))\n .addAddress(tokenIdToSolidityAddress(requireTokenId(tokenBId)))\n .addUint256(amountADesired)\n .addUint256(amountBDesired)\n .addUint256(amountAMin)\n .addUint256(amountBMin)\n .addAddress(toAddress)\n .addUint256(deadline);\n\n const transaction = new ContractExecuteTransaction()\n .setContractId(contractIdFromString(routerContractId))\n .setGas(config.gasLimit)\n .setFunction(\"addLiquidity\", params);\n\n return await finalizeTransaction(transaction, client, context, {\n amountADesired,\n amountBDesired,\n amountAMin,\n amountBMin\n });\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error\"\n };\n }\n }\n};\n\nexport const removeLiquidityTool: Tool = {\n method: \"saucerswap_remove_liquidity\",\n name: \"SaucerSwap Remove Liquidity\",\n description: \"Remove liquidity from a SaucerSwap pool.\",\n parameters: removeLiquidityInputSchema,\n execute: async (client, context, params) => {\n const args = removeLiquidityInputSchema.parse(params);\n const config = resolveSaucerSwapConfig(context);\n const operatorAccountId = client?.operatorAccountId?.toString();\n\n if (!operatorAccountId) {\n return {\n success: false,\n error: \"Hedera client with an operator account is required for liquidity actions.\"\n };\n }\n\n try {\n const api =\n (context as { saucerswapClient?: ReturnType<typeof createSaucerSwapClient> })\n .saucerswapClient ?? createSaucerSwapClient(config);\n\n const tokenAInput = normalizeTokenAlias(args.tokenA, config);\n const tokenBInput = normalizeTokenAlias(args.tokenB, config);\n const tokenAId = await api.resolveTokenId(tokenAInput);\n const tokenBId = await api.resolveTokenId(tokenBInput);\n\n const pool = await api.getPoolByTokens(tokenAId, tokenBId, config.defaultPoolVersion);\n if (!pool) {\n return {\n success: false,\n error: \"Unable to locate pool for the provided token pair.\"\n };\n }\n\n const tokenA = await api.getTokenByIdOrSymbol(tokenAId);\n const tokenB = await api.getTokenByIdOrSymbol(tokenBId);\n if (!tokenA || !tokenB) {\n return {\n success: false,\n error: \"Unable to resolve token metadata from SaucerSwap API.\"\n };\n }\n\n const lpAmount = parseUnits(args.lpTokenAmount, pool.lpToken.decimals);\n const minAmountA = parseUnits(args.minAmountA, tokenA.decimals);\n const minAmountB = parseUnits(args.minAmountB, tokenB.decimals);\n\n const routerContractId = resolveRouterContract(config);\n const deadline = resolveDeadline(config.deadlineMinutes);\n const toAddress = accountIdToSolidityAddress(operatorAccountId);\n\n const params = new ContractFunctionParameters()\n .addAddress(tokenIdToSolidityAddress(requireTokenId(tokenAId)))\n .addAddress(tokenIdToSolidityAddress(requireTokenId(tokenBId)))\n .addUint256(lpAmount)\n .addUint256(minAmountA)\n .addUint256(minAmountB)\n .addAddress(toAddress)\n .addUint256(deadline);\n\n const transaction = new ContractExecuteTransaction()\n .setContractId(contractIdFromString(routerContractId))\n .setGas(config.gasLimit)\n .setFunction(\"removeLiquidity\", params);\n\n return await finalizeTransaction(transaction, client, context, {\n lpAmount,\n minAmountA,\n minAmountB\n });\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error\"\n };\n }\n }\n};\n","import { z } from \"zod\";\nimport type { Tool } from \"hedera-agent-kit\";\nimport { createSaucerSwapClient } from \"../api/client\";\nimport { resolveSaucerSwapConfig } from \"../config\";\n\nconst farmsInputSchema = z.object({\n poolId: z.number().int().positive().optional().describe(\"Optional pool ID to filter farms\")\n});\n\nexport const farmsTool: Tool = {\n method: \"saucerswap_get_farms\",\n name: \"SaucerSwap Get Farms\",\n description: \"Get active farming opportunities on SaucerSwap.\",\n parameters: farmsInputSchema,\n execute: async (_client, context, params) => {\n const args = farmsInputSchema.parse(params);\n const config = resolveSaucerSwapConfig(context);\n const api =\n (context as { saucerswapClient?: ReturnType<typeof createSaucerSwapClient> })\n .saucerswapClient ?? createSaucerSwapClient(config);\n\n try {\n const farms = await api.getFarms();\n const filtered = args.poolId\n ? farms.filter((farm) => farm.poolId === args.poolId)\n : farms;\n\n return {\n success: true,\n farms: filtered\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Unknown error\"\n };\n }\n }\n};\n","import type { Plugin } from \"hedera-agent-kit\";\nimport { swapTool } from \"./tools/swap\";\nimport { quoteTool } from \"./tools/quote\";\nimport { poolsTool } from \"./tools/pools\";\nimport { addLiquidityTool, removeLiquidityTool } from \"./tools/liquidity\";\nimport { farmsTool } from \"./tools/farms\";\n\nexport const saucerswapPlugin: Plugin = {\n name: \"saucerswap\",\n description:\n \"Integration with SaucerSwap DEX for token swaps, liquidity provision, and yield farming\",\n tools: () => [swapTool, quoteTool, poolsTool, addLiquidityTool, removeLiquidityTool, farmsTool]\n};\n\nexport { saucerswapPlugin as default };\n"]}
@@ -0,0 +1,5 @@
1
+ import { Plugin } from 'hedera-agent-kit';
2
+
3
+ declare const saucerswapPlugin: Plugin;
4
+
5
+ export { saucerswapPlugin as default, saucerswapPlugin };
@@ -0,0 +1,5 @@
1
+ import { Plugin } from 'hedera-agent-kit';
2
+
3
+ declare const saucerswapPlugin: Plugin;
4
+
5
+ export { saucerswapPlugin as default, saucerswapPlugin };