hak-axelar-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.
- package/LICENSE +21 -0
- package/README.md +170 -0
- package/dist/index.cjs +614 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +43 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +605 -0
- package/dist/index.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/networks.ts","../src/utils/config.ts","../src/tools/get-message-fee.ts","../src/tools/get-message-status.ts","../src/tools/get-supported-chains.ts","../src/utils/units.ts","../src/tools/send-message.ts","../src/tools/send-token.ts","../src/plugin.ts","../src/index.ts"],"names":["z","BaseTool","ContractId","ContractExecuteTransaction","Hbar","ContractFunctionParameters","handleTransaction"],"mappings":"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","file":"index.js","sourcesContent":["export interface AxelarNetworkDefaults {\n gatewayAddress: string;\n gasServiceAddress: string;\n itsAddress: string;\n itsFactoryAddress: string;\n whbarAddress: string;\n chainName: string;\n chainId: number;\n rpcUrl: string;\n apiBaseUrl: string;\n gmpApiBaseUrl: string;\n nestServerUrl: string;\n}\n\nexport interface AxelarConfig {\n network?: \"mainnet\" | \"testnet\";\n gatewayAddress?: string;\n gasServiceAddress?: string;\n itsAddress?: string;\n chainName?: string;\n apiBaseUrl?: string;\n gmpApiBaseUrl?: string;\n nestServerUrl?: string;\n}\n\nexport const AXELAR_MAINNET: AxelarNetworkDefaults = {\n gatewayAddress: \"0xe432150cce91c13a887f7D836923d5597adD8E31\",\n gasServiceAddress: \"0x2d5d7d31F671F86C782533cc367F14109a082712\",\n itsAddress: \"0xB5FB4BE02232B1bBA4dC8f81dc24C26980dE9e3C\",\n itsFactoryAddress: \"0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66\",\n whbarAddress: \"0xb1F616b8134F602c3Bb465fB5b5e6565cCAd37Ed\",\n chainName: \"hedera\",\n chainId: 295,\n rpcUrl: \"https://mainnet.hashio.io/api\",\n apiBaseUrl: \"https://api.axelarscan.io\",\n gmpApiBaseUrl: \"https://api.gmp.axelarscan.io\",\n nestServerUrl: \"https://nest-server-mainnet.axelar.dev\",\n};\n\nexport const AXELAR_TESTNET: AxelarNetworkDefaults = {\n gatewayAddress: \"0xe432150cce91c13a887f7D836923d5597adD8E31\",\n gasServiceAddress: \"0xbE406F0189A0B4cf3A05C286473D23791Dd44Cc6\",\n itsAddress: \"0xB5FB4BE02232B1bBA4dC8f81dc24C26980dE9e3C\",\n itsFactoryAddress: \"0x83a93500d23Fbc3e82B410aD07A6a9F7A0670D66\",\n whbarAddress: \"0xb1F616b8134F602c3Bb465fB5b5e6565cCAd37Ed\",\n chainName: \"hedera\",\n chainId: 296,\n rpcUrl: \"https://testnet.hashio.io/api\",\n apiBaseUrl: \"https://testnet.api.axelarscan.io\",\n gmpApiBaseUrl: \"https://testnet.api.gmp.axelarscan.io\",\n nestServerUrl: \"https://nest-server-testnet.axelar.dev\",\n};\n\nexport const NETWORK_DEFAULTS = {\n mainnet: AXELAR_MAINNET,\n testnet: AXELAR_TESTNET,\n} as const;\n","import type { Context } from \"@hashgraph/hedera-agent-kit\";\nimport { NETWORK_DEFAULTS, type AxelarConfig, type AxelarNetworkDefaults } from \"../networks.js\";\n\n/**\n * Reads Axelar plugin config from the HAK context.\n * HAK stores plugin config under context.pluginConfig (keyed by plugin name).\n */\nexport function readContextConfig(context: Context): Partial<AxelarConfig> {\n const ctx = context as Record<string, unknown>;\n for (const key of [\"pluginConfig\", \"config\", \"agentConfig\"]) {\n const bucket = ctx[key];\n if (bucket && typeof bucket === \"object\") {\n const b = bucket as Record<string, unknown>;\n if (b[\"hak-axelar-plugin\"] && typeof b[\"hak-axelar-plugin\"] === \"object\") {\n return b[\"hak-axelar-plugin\"] as Partial<AxelarConfig>;\n }\n if (b.axelar && typeof b.axelar === \"object\") {\n return b.axelar as Partial<AxelarConfig>;\n }\n }\n }\n return {};\n}\n\n/**\n * Parses a network string into \"mainnet\" | \"testnet\" | undefined.\n */\nexport function readNetwork(value: string | undefined): \"mainnet\" | \"testnet\" | undefined {\n if (value === \"mainnet\" || value === \"testnet\") return value;\n return undefined;\n}\n\n/**\n * Resolves the full network defaults for a given context + env, applying\n * any per-field overrides from ctxConfig or env vars.\n *\n * Precedence (highest → lowest): ctxConfig > env var > network default\n */\nexport function resolveNetworkDefaults(ctxConfig: Partial<AxelarConfig>): AxelarNetworkDefaults {\n const network =\n ctxConfig.network ??\n readNetwork(process.env.AXELAR_NETWORK) ??\n \"mainnet\";\n\n const defaults = NETWORK_DEFAULTS[network];\n\n return {\n ...defaults,\n gatewayAddress:\n ctxConfig.gatewayAddress ??\n process.env.AXELAR_GATEWAY_ADDRESS ??\n defaults.gatewayAddress,\n gasServiceAddress:\n ctxConfig.gasServiceAddress ??\n process.env.AXELAR_GAS_SERVICE_ADDRESS ??\n defaults.gasServiceAddress,\n itsAddress:\n ctxConfig.itsAddress ??\n process.env.AXELAR_ITS_ADDRESS ??\n defaults.itsAddress,\n apiBaseUrl:\n ctxConfig.apiBaseUrl ??\n defaults.apiBaseUrl,\n gmpApiBaseUrl:\n ctxConfig.gmpApiBaseUrl ??\n defaults.gmpApiBaseUrl,\n nestServerUrl:\n ctxConfig.nestServerUrl ??\n defaults.nestServerUrl,\n };\n}\n","import { BaseTool, type Context } from \"@hashgraph/hedera-agent-kit\";\nimport type { Client } from \"@hiero-ledger/sdk\";\nimport { z } from \"zod\";\nimport { readContextConfig, resolveNetworkDefaults } from \"../utils/config.js\";\n\nconst GetMessageFeeSchema = z.object({\n destinationChain: z\n .string()\n .min(1)\n .describe(\n 'Axelar chain name for the destination (e.g. \"ethereum\", \"base\", \"arbitrum\", \"xrpl\"). ' +\n \"Use axelar_get_supported_chains to list valid names.\",\n ),\n gasLimit: z\n .number()\n .int()\n .positive()\n .optional()\n .default(200_000)\n .describe(\"Gas limit for the destination contract execution (default: 200000).\"),\n network: z\n .enum([\"mainnet\", \"testnet\"])\n .optional()\n .describe('Override network. Defaults to AXELAR_NETWORK env var or \"mainnet\".'),\n});\n\ntype GetMessageFeeInput = z.infer<typeof GetMessageFeeSchema>;\n\ninterface FeeEstimate {\n success: true;\n network: string;\n sourceChain: string;\n destinationChain: string;\n gasLimit: number;\n baseFee: string;\n executionFee: string;\n executionFeeWithMultiplier: string;\n gasMultiplier: number;\n isExpressSupported: boolean;\n unit: string;\n}\n\ninterface ErrorResult {\n success: false;\n error: string;\n}\n\nexport class GetMessageFeeTool extends BaseTool<GetMessageFeeInput, GetMessageFeeInput> {\n method = \"axelar_get_message_fee\";\n name = \"Axelar Get Message Fee\";\n description =\n \"Estimates the HBAR fee required to send a cross-chain GMP message from Hedera via Axelar. \" +\n \"Returns baseFee, executionFee, and total fee with multiplier, all denominated in tinybars. \" +\n \"Call this before axelar_send_message to determine the gasTinybars parameter.\";\n parameters = GetMessageFeeSchema;\n\n async normalizeParams(\n params: GetMessageFeeInput,\n _context: Context,\n _client: Client,\n ): Promise<GetMessageFeeInput> {\n return GetMessageFeeSchema.parse(params);\n }\n\n async coreAction(\n args: GetMessageFeeInput,\n context: Context,\n _client: Client,\n ): Promise<FeeEstimate | ErrorResult> {\n const ctxConfig = readContextConfig(context);\n if (args.network) ctxConfig.network = args.network;\n const net = resolveNetworkDefaults(ctxConfig);\n\n try {\n const fee = await fetchGasFee(\n net.nestServerUrl,\n net.chainName,\n args.destinationChain,\n args.gasLimit,\n );\n\n return {\n success: true,\n network: ctxConfig.network ?? process.env.AXELAR_NETWORK ?? \"mainnet\",\n sourceChain: net.chainName,\n destinationChain: args.destinationChain,\n gasLimit: args.gasLimit,\n baseFee: fee.baseFee,\n executionFee: fee.executionFee,\n executionFeeWithMultiplier: fee.executionFeeWithMultiplier,\n gasMultiplier: fee.gasMultiplier,\n isExpressSupported: fee.isExpressSupported,\n unit: \"tinybars\",\n };\n } catch (e) {\n return { success: false, error: (e as Error).message };\n }\n }\n\n override async shouldSecondaryAction(\n coreResult: unknown,\n _context: Context,\n ): Promise<boolean> {\n return (\n typeof coreResult === \"object\" &&\n coreResult !== null &&\n \"transaction\" in coreResult\n );\n }\n\n async secondaryAction(): Promise<never> {\n throw new Error(\"GetMessageFeeTool has no secondary action\");\n }\n}\n\ninterface RawFeeResponse {\n baseFee: string;\n executionFee: string;\n executionFeeWithMultiplier: string;\n gasMultiplier: number;\n isExpressSupported: boolean;\n}\n\nasync function fetchGasFee(\n nestServerUrl: string,\n sourceChain: string,\n destinationChain: string,\n gasLimit: number,\n): Promise<RawFeeResponse> {\n const res = await fetch(`${nestServerUrl}/getGasFee`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Accept: \"application/json\" },\n body: JSON.stringify({\n sourceChainName: sourceChain,\n destinationChainName: destinationChain,\n sourceTokenSymbol: \"HBAR\",\n gasLimit: gasLimit.toString(),\n }),\n signal: AbortSignal.timeout(15_000),\n });\n\n if (!res.ok) {\n throw new Error(\n `Axelar fee API returned HTTP ${res.status}: ${await res.text().catch(() => \"\")}`,\n );\n }\n\n const body = (await res.json()) as Record<string, unknown>;\n\n // Normalise response — the nest-server wraps results differently across versions\n const result = (body.result ?? body) as Record<string, unknown>;\n\n return {\n baseFee: String(result.baseFee ?? result.base_fee ?? \"0\"),\n executionFee: String(result.executionFee ?? result.execution_fee ?? \"0\"),\n executionFeeWithMultiplier: String(\n result.executionFeeWithMultiplier ?? result.executionFee ?? \"0\",\n ),\n gasMultiplier: Number(result.gasMultiplier ?? result.gas_multiplier ?? 1),\n isExpressSupported: Boolean(result.isExpressSupported ?? false),\n };\n}\n\nexport const getMessageFeeTool = new GetMessageFeeTool();\n","import { BaseTool, type Context } from \"@hashgraph/hedera-agent-kit\";\nimport type { Client } from \"@hiero-ledger/sdk\";\nimport { z } from \"zod\";\nimport { readContextConfig, resolveNetworkDefaults } from \"../utils/config.js\";\n\nconst GetMessageStatusSchema = z.object({\n txHash: z\n .string()\n .min(1)\n .describe(\n \"The Hedera transaction hash of the axelar_send_message or axelar_send_token call \" +\n \"(the callContract transaction, not the gas payment transaction).\",\n ),\n network: z\n .enum([\"mainnet\", \"testnet\"])\n .optional()\n .describe('Override network. Defaults to AXELAR_NETWORK env var or \"mainnet\".'),\n});\n\ntype GetMessageStatusInput = z.infer<typeof GetMessageStatusSchema>;\n\n// Axelar GMP status stages\ntype GmpStatus =\n | \"called\"\n | \"gas_paid\"\n | \"gas_paid_enough\"\n | \"confirming\"\n | \"confirmed\"\n | \"approved\"\n | \"executing\"\n | \"executed\"\n | \"error\"\n | \"insufficient_fee\"\n | \"not_found\";\n\ninterface MessageStatus {\n success: true;\n status: GmpStatus;\n txHash: string;\n sourceChain: string;\n destinationChain?: string;\n destinationContract?: string;\n executionTxHash?: string;\n gasPaid?: boolean;\n isExecuted: boolean;\n isError: boolean;\n axelarScanUrl: string;\n}\n\ninterface ErrorResult {\n success: false;\n error: string;\n}\n\nexport class GetMessageStatusTool extends BaseTool<\n GetMessageStatusInput,\n GetMessageStatusInput\n> {\n method = \"axelar_get_message_status\";\n name = \"Axelar Get Message Status\";\n description =\n \"Checks the delivery status of a cross-chain message sent via Axelar from Hedera. \" +\n \"Tracks all five stages: called → gas_paid → approved → executing → executed. \" +\n \"Pass the Hedera transaction hash from axelar_send_message or axelar_send_token.\";\n parameters = GetMessageStatusSchema;\n\n async normalizeParams(\n params: GetMessageStatusInput,\n _context: Context,\n _client: Client,\n ): Promise<GetMessageStatusInput> {\n return GetMessageStatusSchema.parse(params);\n }\n\n async coreAction(\n args: GetMessageStatusInput,\n context: Context,\n _client: Client,\n ): Promise<MessageStatus | ErrorResult> {\n const ctxConfig = readContextConfig(context);\n if (args.network) ctxConfig.network = args.network;\n const net = resolveNetworkDefaults(ctxConfig);\n\n try {\n const url =\n `${net.gmpApiBaseUrl}/?method=searchGMP` +\n `&sourceTransactionHash=${encodeURIComponent(args.txHash)}`;\n\n const res = await fetch(url, {\n headers: { Accept: \"application/json\" },\n signal: AbortSignal.timeout(15_000),\n });\n\n if (!res.ok) {\n return {\n success: false,\n error: `Axelar GMP API returned HTTP ${res.status}`,\n };\n }\n\n const body = (await res.json()) as Record<string, unknown>;\n const items = Array.isArray(body.data) ? body.data : Array.isArray(body) ? body : [];\n\n if (items.length === 0) {\n return buildStatus(args.txHash, \"not_found\", null, net);\n }\n\n const item = items[0] as Record<string, unknown>;\n return buildStatus(args.txHash, resolveStatus(item), item, net);\n } catch (e) {\n return { success: false, error: (e as Error).message };\n }\n }\n\n override async shouldSecondaryAction(\n coreResult: unknown,\n _context: Context,\n ): Promise<boolean> {\n return (\n typeof coreResult === \"object\" &&\n coreResult !== null &&\n \"transaction\" in coreResult\n );\n }\n\n async secondaryAction(): Promise<never> {\n throw new Error(\"GetMessageStatusTool has no secondary action\");\n }\n}\n\nfunction resolveStatus(item: Record<string, unknown>): GmpStatus {\n const status = String(item.status ?? item.simplified_status ?? \"\").toLowerCase();\n const map: Record<string, GmpStatus> = {\n called: \"called\",\n gas_paid: \"gas_paid\",\n gas_paid_enough: \"gas_paid_enough\",\n confirming: \"confirming\",\n confirmed: \"confirmed\",\n approved: \"approved\",\n executing: \"executing\",\n executed: \"executed\",\n error: \"error\",\n insufficient_fee: \"insufficient_fee\",\n };\n return map[status] ?? \"called\";\n}\n\nfunction buildStatus(\n txHash: string,\n status: GmpStatus,\n item: Record<string, unknown> | null,\n net: { gmpApiBaseUrl: string; chainName: string },\n): MessageStatus {\n const call = (item?.call as Record<string, unknown>) ?? {};\n const execute = (item?.executed as Record<string, unknown>) ?? {};\n const isMainnet = net.gmpApiBaseUrl.includes(\"testnet\") ? false : true;\n const scanBase = isMainnet ? \"https://axelarscan.io\" : \"https://testnet.axelarscan.io\";\n\n return {\n success: true,\n status,\n txHash,\n sourceChain: String(item?.sourceChain ?? net.chainName),\n destinationChain: item?.destinationChain ? String(item.destinationChain) : undefined,\n destinationContract: call.destinationContractAddress\n ? String(call.destinationContractAddress)\n : undefined,\n executionTxHash: execute.transactionHash ? String(execute.transactionHash) : undefined,\n gasPaid: Boolean(item?.gasPaid ?? item?.gas_paid),\n isExecuted: status === \"executed\",\n isError: status === \"error\" || status === \"insufficient_fee\",\n axelarScanUrl: `${scanBase}/gmp/${txHash}`,\n };\n}\n\nexport const getMessageStatusTool = new GetMessageStatusTool();\n","import { BaseTool, type Context } from \"@hashgraph/hedera-agent-kit\";\nimport type { Client } from \"@hiero-ledger/sdk\";\nimport { z } from \"zod\";\nimport { readContextConfig, resolveNetworkDefaults } from \"../utils/config.js\";\n\nconst GetSupportedChainsSchema = z.object({\n network: z\n .enum([\"mainnet\", \"testnet\"])\n .optional()\n .describe('Override network selection. Defaults to AXELAR_NETWORK env var or \"mainnet\".'),\n});\n\ntype GetSupportedChainsInput = z.infer<typeof GetSupportedChainsSchema>;\n\ninterface ChainInfo {\n id: string;\n name: string;\n chainId?: number;\n type: string;\n status?: string;\n}\n\ninterface GetSupportedChainsResult {\n success: true;\n network: string;\n sourceChain: string;\n chains: ChainInfo[];\n count: number;\n}\n\ninterface ErrorResult {\n success: false;\n error: string;\n}\n\nexport class GetSupportedChainsTool extends BaseTool<\n GetSupportedChainsInput,\n GetSupportedChainsInput\n> {\n method = \"axelar_get_supported_chains\";\n name = \"Axelar Get Supported Chains\";\n description =\n \"Returns all chains reachable from Hedera via Axelar Network. \" +\n \"Includes chain IDs, names, and type (EVM / non-EVM). \" +\n \"Use this before sending tokens or messages to confirm the destination chain is supported.\";\n parameters = GetSupportedChainsSchema;\n\n async normalizeParams(\n params: GetSupportedChainsInput,\n _context: Context,\n _client: Client,\n ): Promise<GetSupportedChainsInput> {\n return GetSupportedChainsSchema.parse(params);\n }\n\n async coreAction(\n args: GetSupportedChainsInput,\n context: Context,\n _client: Client,\n ): Promise<GetSupportedChainsResult | ErrorResult> {\n const ctxConfig = readContextConfig(context);\n if (args.network) ctxConfig.network = args.network;\n const net = resolveNetworkDefaults(ctxConfig);\n\n try {\n const url = `${net.apiBaseUrl}/api/getChains`;\n const res = await fetch(url, {\n headers: { Accept: \"application/json\" },\n signal: AbortSignal.timeout(15_000),\n });\n\n if (!res.ok) {\n return { success: false, error: `Axelar API returned HTTP ${res.status}` };\n }\n\n const data = (await res.json()) as unknown;\n const chains = parseChains(data);\n\n return {\n success: true,\n network: ctxConfig.network ?? process.env.AXELAR_NETWORK ?? \"mainnet\",\n sourceChain: net.chainName,\n chains,\n count: chains.length,\n };\n } catch (e) {\n return { success: false, error: (e as Error).message };\n }\n }\n\n override async shouldSecondaryAction(\n coreResult: unknown,\n _context: Context,\n ): Promise<boolean> {\n return (\n typeof coreResult === \"object\" &&\n coreResult !== null &&\n \"transaction\" in coreResult\n );\n }\n\n async secondaryAction(): Promise<never> {\n throw new Error(\"GetSupportedChainsTool has no secondary action\");\n }\n}\n\nfunction parseChains(data: unknown): ChainInfo[] {\n if (!data || typeof data !== \"object\") return [];\n\n // AxelarScan returns { data: Chain[] } or { result: Chain[] } or Chain[]\n let raw: unknown[] = [];\n if (Array.isArray(data)) {\n raw = data;\n } else {\n const d = data as Record<string, unknown>;\n if (Array.isArray(d.data)) raw = d.data;\n else if (Array.isArray(d.result)) raw = d.result;\n }\n\n return raw\n .filter((c): c is Record<string, unknown> => typeof c === \"object\" && c !== null)\n .map((c) => ({\n id: String(c.id ?? c.chain_id ?? c.axelarId ?? \"\"),\n name: String(c.name ?? c.chain_name ?? c.id ?? \"\"),\n chainId: typeof c.chain_id === \"number\" ? c.chain_id : undefined,\n type: String(c.chain_type ?? (c.evm ? \"evm\" : \"non-evm\")),\n status: typeof c.status === \"string\" ? c.status : undefined,\n }))\n .filter((c) => c.id !== \"hedera\" && c.id !== \"\");\n}\n\nexport const getSupportedChainsTool = new GetSupportedChainsTool();\n","import Long from \"long\";\n\nexport const toUint256 = (value: string | number): Long =>\n typeof value === \"string\" ? Long.fromString(value) : Long.fromNumber(value);\n\n/**\n * Converts a tinybars (8-decimal HBAR) amount to weibar (18-decimal EVM representation).\n * Hedera EVM uses 18 decimals; native Hedera uses 8 decimals.\n * tinybars × 10^10 = weibar\n */\nexport const tinybarsToWeibar = (tinybars: string | number): Long => {\n const tb = typeof tinybars === \"string\" ? Long.fromString(tinybars) : Long.fromNumber(tinybars);\n return tb.multiply(Long.fromNumber(10_000_000_000));\n};\n\n/**\n * Safe cast for passing numeric strings to ContractFunctionParameters.addUint256().\n *\n * The Hedera SDK's addUint256 runtime accepts strings via its internal isString()\n * check, but the TypeScript type only declares Long | BigNumber | number.\n * This helper avoids the Long ESM/CJS module-instance mismatch that breaks the\n * instanceof isLong() check when the `long` package loads different files for ESM\n * vs CJS consumers.\n */\nexport const safeUint256 = (value: string | bigint): Long =>\n String(value) as unknown as Long;\n\n/**\n * Converts hex string to Uint8Array. Handles optional 0x prefix.\n * Throws if the string contains non-hex characters.\n */\nexport const hexToBytes = (hex: string): Uint8Array => {\n const clean = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n if (clean.length > 0 && !/^[0-9a-fA-F]+$/.test(clean)) {\n throw new Error(`Invalid hex string: \"${hex}\"`);\n }\n return Uint8Array.from(Buffer.from(clean, \"hex\"));\n};\n\n/**\n * Encodes an EVM address as a 20-byte Uint8Array (no padding).\n * Used as ITS destinationAddress for EVM destination chains.\n */\nexport const encodeEvmAddress = (address: string): Uint8Array => {\n const clean = address.replace(/^0x/i, \"\");\n if (clean.length !== 40) {\n throw new Error(`Invalid EVM address length: ${address}`);\n }\n return hexToBytes(clean);\n};\n\n/**\n * Pads a bytes32 hex string to exactly 32 bytes.\n * Used for ITS tokenId parameter.\n */\nexport const hexToBytes32 = (hex: string): Uint8Array => {\n const clean = hex.replace(/^0x/i, \"\").padStart(64, \"0\");\n return hexToBytes(clean);\n};\n","import { BaseTool, type Context, handleTransaction } from \"@hashgraph/hedera-agent-kit\";\nimport {\n Client,\n ContractExecuteTransaction,\n ContractFunctionParameters,\n ContractId,\n Hbar,\n} from \"@hiero-ledger/sdk\";\nimport { z } from \"zod\";\nimport { readContextConfig, resolveNetworkDefaults } from \"../utils/config.js\";\nimport { hexToBytes } from \"../utils/units.js\";\n\nconst SendMessageSchema = z.object({\n destinationChain: z\n .string()\n .min(1)\n .describe(\n 'Axelar chain name for the destination (e.g. \"ethereum\", \"base\", \"arbitrum\"). ' +\n \"Use axelar_get_supported_chains to confirm the chain is reachable.\",\n ),\n destinationContract: z\n .string()\n .min(1)\n .describe(\n \"EVM address of the destination contract. It MUST implement AxelarExecutable \" +\n \"(inherit from @axelar-network/axelar-gmp-sdk-solidity AxelarExecutable.sol).\",\n ),\n payload: z\n .string()\n .optional()\n .default(\"0x\")\n .describe(\n \"ABI-encoded payload bytes as a hex string (with or without 0x prefix). \" +\n 'Use \"0x\" or omit for an empty payload (e.g. a ping).',\n ),\n gasTinybars: z\n .string()\n .min(1)\n .describe(\n \"HBAR amount in tinybars (1 HBAR = 100,000,000 tinybars) to pay for Axelar relay execution. \" +\n \"Use axelar_get_message_fee to estimate the required amount. \" +\n \"Example: '5000000' = 0.05 HBAR.\",\n ),\n network: z\n .enum([\"mainnet\", \"testnet\"])\n .optional()\n .describe('Override network. Defaults to AXELAR_NETWORK env var or \"mainnet\".'),\n});\n\ntype SendMessageInput = z.infer<typeof SendMessageSchema>;\n\ninterface SendMessagePayload {\n transaction: ContractExecuteTransaction;\n extras: {\n callContractTx: ContractExecuteTransaction;\n destinationChain: string;\n destinationContract: string;\n payloadHex: string;\n gasTinybars: string;\n };\n}\n\ninterface ErrorResult {\n success: false;\n error: string;\n}\n\ninterface SendMessageResult {\n success: boolean;\n sourceTxHash?: string;\n gasTxId?: string;\n callTxId?: string;\n destinationChain: string;\n destinationContract: string;\n payloadHex: string;\n gasTinybars: string;\n axelarScanUrl?: string;\n error?: string;\n}\n\nexport class SendMessageTool extends BaseTool<SendMessageInput, SendMessageInput> {\n method = \"axelar_send_message\";\n name = \"Axelar Send Cross-Chain Message\";\n description =\n \"Sends a GMP (General Message Passing) message from Hedera to a contract on another chain \" +\n \"via Axelar Network. The destination contract must implement AxelarExecutable. \" +\n \"Submits two Hedera transactions: (1) gas payment to AxelarGasService, \" +\n \"(2) callContract on AxelarGateway. \" +\n \"Use axelar_get_message_fee first to estimate gasTinybars. \" +\n \"Track delivery with axelar_get_message_status.\";\n parameters = SendMessageSchema;\n\n async normalizeParams(\n params: SendMessageInput,\n _context: Context,\n _client: Client,\n ): Promise<SendMessageInput> {\n return SendMessageSchema.parse(params);\n }\n\n async coreAction(\n args: SendMessageInput,\n context: Context,\n client: Client,\n ): Promise<SendMessagePayload | ErrorResult> {\n const hederaClient = client;\n const ctxConfig = readContextConfig(context);\n if (args.network) ctxConfig.network = args.network;\n const net = resolveNetworkDefaults(ctxConfig);\n\n // Resolve caller EVM address for gas payment sender / refund\n let senderEvmAddress: string;\n try {\n senderEvmAddress = hederaClient.operatorPublicKey?.toEvmAddress() ?? \"\";\n } catch {\n senderEvmAddress = \"\";\n }\n if (!senderEvmAddress) {\n return {\n success: false,\n error:\n \"Could not derive operator EVM address. \" +\n \"Ensure the Hedera operator key is ECDSA-compatible (not Ed25519).\",\n };\n }\n\n let payloadBytes: Uint8Array;\n try {\n payloadBytes = hexToBytes(args.payload ?? \"0x\");\n } catch (e) {\n return { success: false, error: `Invalid payload hex: ${(e as Error).message}` };\n }\n\n let gasTinybarsNum: number;\n try {\n gasTinybarsNum = Number(args.gasTinybars);\n if (!Number.isFinite(gasTinybarsNum) || gasTinybarsNum <= 0) {\n return { success: false, error: \"gasTinybars must be a positive integer string\" };\n }\n } catch {\n return { success: false, error: \"gasTinybars must be a positive integer string\" };\n }\n\n try {\n const gatewayId = ContractId.fromEvmAddress(0, 0, net.gatewayAddress);\n const gasServiceId = ContractId.fromEvmAddress(0, 0, net.gasServiceAddress);\n\n // Tx 1: pay gas to AxelarGasService (payable, sends HBAR)\n const gasPaymentTx = new ContractExecuteTransaction()\n .setContractId(gasServiceId)\n .setGas(400_000)\n .setPayableAmount(Hbar.fromTinybars(gasTinybarsNum))\n .setFunction(\n \"payNativeGasForContractCall\",\n new ContractFunctionParameters()\n .addAddress(senderEvmAddress)\n .addString(args.destinationChain)\n .addString(args.destinationContract)\n .addBytes(payloadBytes)\n .addAddress(senderEvmAddress), // refundAddress\n );\n\n // Tx 2: callContract on AxelarGateway\n const callContractTx = new ContractExecuteTransaction()\n .setContractId(gatewayId)\n .setGas(400_000)\n .setFunction(\n \"callContract\",\n new ContractFunctionParameters()\n .addString(args.destinationChain)\n .addString(args.destinationContract)\n .addBytes(payloadBytes),\n );\n\n return {\n transaction: gasPaymentTx,\n extras: {\n callContractTx,\n destinationChain: args.destinationChain,\n destinationContract: args.destinationContract,\n payloadHex: args.payload ?? \"0x\",\n gasTinybars: args.gasTinybars,\n },\n };\n } catch (e) {\n return { success: false, error: `Failed to build transaction: ${(e as Error).message}` };\n }\n }\n\n override async shouldSecondaryAction(\n coreResult: unknown,\n _context: Context,\n ): Promise<boolean> {\n return (\n typeof coreResult === \"object\" &&\n coreResult !== null &&\n \"transaction\" in coreResult\n );\n }\n\n async secondaryAction(\n payload: SendMessagePayload,\n client: Client,\n context: Context,\n ): Promise<SendMessageResult> {\n const hederaClient = client;\n const ctxConfig = readContextConfig(context);\n const net = resolveNetworkDefaults(ctxConfig);\n const isMainnet = !net.gmpApiBaseUrl.includes(\"testnet\");\n const scanBase = isMainnet ? \"https://axelarscan.io\" : \"https://testnet.axelarscan.io\";\n\n // Submit gas payment transaction first\n let gasTxId: string | undefined;\n try {\n const gasResult = await handleTransaction(payload.transaction, hederaClient, context);\n gasTxId = (gasResult as Record<string, unknown>).transactionId as string | undefined;\n } catch (e) {\n return {\n success: false,\n error: `Gas payment transaction failed: ${(e as Error).message}`,\n destinationChain: payload.extras.destinationChain,\n destinationContract: payload.extras.destinationContract,\n payloadHex: payload.extras.payloadHex,\n gasTinybars: payload.extras.gasTinybars,\n };\n }\n\n // Submit callContract transaction\n let callResult: Record<string, unknown>;\n try {\n callResult = (await handleTransaction(\n payload.extras.callContractTx,\n hederaClient,\n context,\n )) as Record<string, unknown>;\n } catch (e) {\n return {\n success: false,\n error: `callContract transaction failed: ${(e as Error).message}`,\n gasTxId,\n destinationChain: payload.extras.destinationChain,\n destinationContract: payload.extras.destinationContract,\n payloadHex: payload.extras.payloadHex,\n gasTinybars: payload.extras.gasTinybars,\n };\n }\n\n const callTxId = callResult.transactionId as string | undefined;\n const callTxHash = callTxId?.replace(/[@/]/g, \"-\") ?? \"\";\n\n return {\n success: true,\n gasTxId,\n callTxId,\n sourceTxHash: callTxHash,\n destinationChain: payload.extras.destinationChain,\n destinationContract: payload.extras.destinationContract,\n payloadHex: payload.extras.payloadHex,\n gasTinybars: payload.extras.gasTinybars,\n axelarScanUrl: callTxHash ? `${scanBase}/gmp/${callTxHash}` : undefined,\n };\n }\n}\n\nexport const sendMessageTool = new SendMessageTool();\n","import { BaseTool, type Context, handleTransaction } from \"@hashgraph/hedera-agent-kit\";\nimport {\n Client,\n ContractExecuteTransaction,\n ContractFunctionParameters,\n ContractId,\n Hbar,\n} from \"@hiero-ledger/sdk\";\nimport { z } from \"zod\";\nimport { readContextConfig, resolveNetworkDefaults } from \"../utils/config.js\";\nimport { encodeEvmAddress, hexToBytes32, safeUint256 } from \"../utils/units.js\";\n\nconst SendTokenSchema = z.object({\n interchainTokenId: z\n .string()\n .min(1)\n .describe(\n \"The Axelar ITS token ID (bytes32 hex string, with or without 0x prefix). \" +\n \"This is the token registry ID, NOT the ERC-20 contract address. \" +\n \"Find token IDs via the Axelar ITS registry or the token deployer.\",\n ),\n destinationChain: z\n .string()\n .min(1)\n .describe(\n 'Axelar chain name for the destination (e.g. \"ethereum\", \"base\", \"arbitrum\"). ' +\n \"The token must be registered on this chain in the ITS registry.\",\n ),\n destinationAddress: z\n .string()\n .min(1)\n .describe(\n \"EVM address of the token recipient on the destination chain (0x-prefixed hex, 20 bytes).\",\n ),\n amount: z\n .string()\n .min(1)\n .describe(\n \"Token amount to bridge in base units (smallest denomination). \" +\n \"Example: to send 1 USDC (6 decimals), pass '1000000'.\",\n ),\n gasTinybars: z\n .string()\n .min(1)\n .describe(\n \"HBAR amount in tinybars to pay for Axelar relay execution on the destination chain. \" +\n \"This HBAR is forwarded to AxelarGasService via the ITS contract. \" +\n \"Use axelar_get_message_fee to estimate. Example: '5000000' = 0.05 HBAR.\",\n ),\n metadata: z\n .string()\n .optional()\n .default(\"0x\")\n .describe(\n 'ABI-encoded ITS metadata as hex string. Pass \"0x\" or omit for standard transfer.',\n ),\n network: z\n .enum([\"mainnet\", \"testnet\"])\n .optional()\n .describe('Override network. Defaults to AXELAR_NETWORK env var or \"mainnet\".'),\n});\n\ntype SendTokenInput = z.infer<typeof SendTokenSchema>;\n\ninterface SendTokenPayload {\n transaction: ContractExecuteTransaction;\n extras: {\n interchainTokenId: string;\n destinationChain: string;\n destinationAddress: string;\n amount: string;\n gasTinybars: string;\n };\n}\n\ninterface ErrorResult {\n success: false;\n error: string;\n}\n\ninterface SendTokenResult {\n success: boolean;\n txId?: string;\n sourceTxHash?: string;\n interchainTokenId: string;\n destinationChain: string;\n destinationAddress: string;\n amount: string;\n gasTinybars: string;\n axelarScanUrl?: string;\n error?: string;\n}\n\nexport class SendTokenTool extends BaseTool<SendTokenInput, SendTokenInput> {\n method = \"axelar_send_token\";\n name = \"Axelar Send Interchain Token\";\n description =\n \"Bridges a registered ITS (Interchain Token Service) token from Hedera to another chain \" +\n \"via Axelar Network. Calls InterchainTokenService.interchainTransfer() in a single transaction, \" +\n \"paying gas in HBAR. \" +\n \"IMPORTANT: The token must be registered in the Axelar ITS registry. \" +\n \"Classic axlUSDC deposit-address bridging is NOT supported on Hedera (Amplifier architecture). \" +\n \"The recipient must have associated the HTS token on Hedera before receiving it back.\";\n parameters = SendTokenSchema;\n\n async normalizeParams(\n params: SendTokenInput,\n _context: Context,\n _client: Client,\n ): Promise<SendTokenInput> {\n return SendTokenSchema.parse(params);\n }\n\n async coreAction(\n args: SendTokenInput,\n context: Context,\n _client: Client,\n ): Promise<SendTokenPayload | ErrorResult> {\n const ctxConfig = readContextConfig(context);\n if (args.network) ctxConfig.network = args.network;\n const net = resolveNetworkDefaults(ctxConfig);\n\n let tokenIdBytes: Uint8Array;\n try {\n tokenIdBytes = hexToBytes32(args.interchainTokenId);\n } catch (e) {\n return { success: false, error: `Invalid interchainTokenId: ${(e as Error).message}` };\n }\n\n let destAddressBytes: Uint8Array;\n try {\n destAddressBytes = encodeEvmAddress(args.destinationAddress);\n } catch (e) {\n return { success: false, error: `Invalid destinationAddress: ${(e as Error).message}` };\n }\n\n let metadataBytes: Uint8Array;\n try {\n const rawMeta = args.metadata ?? \"0x\";\n metadataBytes = rawMeta === \"0x\" || rawMeta === \"\" ? new Uint8Array(0) : hexToBytes32(rawMeta);\n } catch (e) {\n return { success: false, error: `Invalid metadata: ${(e as Error).message}` };\n }\n\n let gasTinybarsNum: number;\n try {\n gasTinybarsNum = Number(args.gasTinybars);\n if (!Number.isFinite(gasTinybarsNum) || gasTinybarsNum <= 0) {\n return { success: false, error: \"gasTinybars must be a positive integer string\" };\n }\n } catch {\n return { success: false, error: \"gasTinybars must be a positive integer string\" };\n }\n\n // gasValue in weibar (18-decimal EVM representation of HBAR): tinybars × 10^10\n // Use BigInt to avoid Long's ESM/CJS module-instance issue with addUint256\n const gasValueWei = (BigInt(args.gasTinybars) * BigInt(10_000_000_000)).toString();\n\n try {\n const itsId = ContractId.fromEvmAddress(0, 0, net.itsAddress);\n\n const tx = new ContractExecuteTransaction()\n .setContractId(itsId)\n .setGas(800_000)\n .setPayableAmount(Hbar.fromTinybars(gasTinybarsNum))\n .setFunction(\n \"interchainTransfer\",\n new ContractFunctionParameters()\n .addBytes32(tokenIdBytes)\n .addString(args.destinationChain)\n .addBytes(destAddressBytes)\n .addUint256(safeUint256(args.amount))\n .addBytes(metadataBytes)\n .addUint256(safeUint256(gasValueWei)),\n );\n\n return {\n transaction: tx,\n extras: {\n interchainTokenId: args.interchainTokenId,\n destinationChain: args.destinationChain,\n destinationAddress: args.destinationAddress,\n amount: args.amount,\n gasTinybars: args.gasTinybars,\n },\n };\n } catch (e) {\n return { success: false, error: `Failed to build transaction: ${(e as Error).message}` };\n }\n }\n\n override async shouldSecondaryAction(\n coreResult: unknown,\n _context: Context,\n ): Promise<boolean> {\n return (\n typeof coreResult === \"object\" &&\n coreResult !== null &&\n \"transaction\" in coreResult\n );\n }\n\n async secondaryAction(\n payload: SendTokenPayload,\n client: Client,\n context: Context,\n ): Promise<SendTokenResult> {\n const hederaClient = client;\n const ctxConfig = readContextConfig(context);\n const net = resolveNetworkDefaults(ctxConfig);\n const isMainnet = !net.gmpApiBaseUrl.includes(\"testnet\");\n const scanBase = isMainnet ? \"https://axelarscan.io\" : \"https://testnet.axelarscan.io\";\n\n let result: Record<string, unknown>;\n try {\n result = (await handleTransaction(\n payload.transaction,\n hederaClient,\n context,\n )) as Record<string, unknown>;\n } catch (e) {\n return {\n success: false,\n error: (e as Error).message,\n ...payload.extras,\n };\n }\n\n const txId = result.transactionId as string | undefined;\n const sourceTxHash = txId?.replace(/[@/]/g, \"-\") ?? \"\";\n\n return {\n success: true,\n txId,\n sourceTxHash,\n ...payload.extras,\n axelarScanUrl: sourceTxHash ? `${scanBase}/gmp/${sourceTxHash}` : undefined,\n };\n }\n}\n\nexport const sendTokenTool = new SendTokenTool();\n","import type { Context, Plugin } from \"@hashgraph/hedera-agent-kit\";\nimport { getMessageFeeTool } from \"./tools/get-message-fee.js\";\nimport { getMessageStatusTool } from \"./tools/get-message-status.js\";\nimport { getSupportedChainsTool } from \"./tools/get-supported-chains.js\";\nimport { sendMessageTool } from \"./tools/send-message.js\";\nimport { sendTokenTool } from \"./tools/send-token.js\";\n\nexport const axelarPlugin: Plugin = {\n name: \"hak-axelar-plugin\",\n version: \"1.0.0\",\n description:\n \"Axelar Network cross-chain plugin for Hedera Agent Kit — bridge tokens and send GMP messages between Hedera and 60+ chains\",\n tools: (_context: Context) => [\n getSupportedChainsTool,\n getMessageFeeTool,\n sendMessageTool,\n sendTokenTool,\n getMessageStatusTool,\n ],\n};\n","export { axelarPlugin } from \"./plugin.js\";\n\nexport const axelarPluginToolNames = {\n AXELAR_GET_SUPPORTED_CHAINS: \"axelar_get_supported_chains\",\n AXELAR_GET_MESSAGE_FEE: \"axelar_get_message_fee\",\n AXELAR_SEND_MESSAGE: \"axelar_send_message\",\n AXELAR_SEND_TOKEN: \"axelar_send_token\",\n AXELAR_GET_MESSAGE_STATUS: \"axelar_get_message_status\",\n} as const;\n\nexport { AXELAR_MAINNET, AXELAR_TESTNET, NETWORK_DEFAULTS } from \"./networks.js\";\nexport type { AxelarNetworkDefaults, AxelarConfig } from \"./networks.js\";\n\nexport { axelarPlugin as default } from \"./plugin.js\";\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hak-axelar-plugin",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Axelar Network cross-chain plugin for Hedera Agent Kit — bridge tokens and send GMP messages between Hedera and 60+ chains",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"author": "Juanma Gomez",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"publishConfig": { "access": "public" },
|
|
9
|
+
"main": "dist/index.cjs",
|
|
10
|
+
"module": "dist/index.js",
|
|
11
|
+
"types": "dist/index.d.ts",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"import": "./dist/index.js",
|
|
16
|
+
"require": "./dist/index.cjs"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"files": ["dist", "README.md", "LICENSE"],
|
|
20
|
+
"keywords": [
|
|
21
|
+
"hedera",
|
|
22
|
+
"axelar",
|
|
23
|
+
"cross-chain",
|
|
24
|
+
"bridge",
|
|
25
|
+
"agent-kit",
|
|
26
|
+
"defi",
|
|
27
|
+
"plugin",
|
|
28
|
+
"solana",
|
|
29
|
+
"xrpl",
|
|
30
|
+
"gmp",
|
|
31
|
+
"interchain"
|
|
32
|
+
],
|
|
33
|
+
"scripts": {
|
|
34
|
+
"build": "tsup",
|
|
35
|
+
"typecheck": "tsc --noEmit",
|
|
36
|
+
"test": "vitest run",
|
|
37
|
+
"test:watch": "vitest",
|
|
38
|
+
"lint": "biome lint src tests",
|
|
39
|
+
"format": "biome format --write src tests",
|
|
40
|
+
"check": "biome check --write src tests",
|
|
41
|
+
"prepublishOnly": "npm run build"
|
|
42
|
+
},
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"@hashgraph/hedera-agent-kit": "^4.0.0",
|
|
45
|
+
"@hiero-ledger/sdk": "^2.84.0"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"long": "^5.3.2",
|
|
49
|
+
"zod": "^3.22.0"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@biomejs/biome": "^2.4.15",
|
|
53
|
+
"@hashgraph/hedera-agent-kit": "^4.0.0",
|
|
54
|
+
"@hiero-ledger/sdk": "^2.84.0",
|
|
55
|
+
"@types/node": "^22.0.0",
|
|
56
|
+
"tsup": "^8.5.1",
|
|
57
|
+
"typescript": "^6.0.3",
|
|
58
|
+
"vitest": "^4.1.6"
|
|
59
|
+
}
|
|
60
|
+
}
|