@andrewkimjoseph/celina-sdk 0.4.12 → 0.5.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.
Files changed (80) hide show
  1. package/README.md +4 -0
  2. package/build/tools/catalog.d.ts +9 -0
  3. package/build/tools/catalog.js +36 -0
  4. package/build/tools/catalog.js.map +1 -0
  5. package/build/tools/domains/aave.d.ts +2 -0
  6. package/build/tools/domains/aave.js +89 -0
  7. package/build/tools/domains/aave.js.map +1 -0
  8. package/build/tools/domains/blockchain.d.ts +2 -0
  9. package/build/tools/domains/blockchain.js +85 -0
  10. package/build/tools/domains/blockchain.js.map +1 -0
  11. package/build/tools/domains/carbon.d.ts +2 -0
  12. package/build/tools/domains/carbon.js +187 -0
  13. package/build/tools/domains/carbon.js.map +1 -0
  14. package/build/tools/domains/celeste.d.ts +2 -0
  15. package/build/tools/domains/celeste.js +42 -0
  16. package/build/tools/domains/celeste.js.map +1 -0
  17. package/build/tools/domains/contract.d.ts +2 -0
  18. package/build/tools/domains/contract.js +67 -0
  19. package/build/tools/domains/contract.js.map +1 -0
  20. package/build/tools/domains/ens.d.ts +2 -0
  21. package/build/tools/domains/ens.js +16 -0
  22. package/build/tools/domains/ens.js.map +1 -0
  23. package/build/tools/domains/gooddollar.d.ts +2 -0
  24. package/build/tools/domains/gooddollar.js +73 -0
  25. package/build/tools/domains/gooddollar.js.map +1 -0
  26. package/build/tools/domains/governance.d.ts +2 -0
  27. package/build/tools/domains/governance.js +41 -0
  28. package/build/tools/domains/governance.js.map +1 -0
  29. package/build/tools/domains/index.d.ts +1 -0
  30. package/build/tools/domains/index.js +33 -0
  31. package/build/tools/domains/index.js.map +1 -0
  32. package/build/tools/domains/mento-fx.d.ts +2 -0
  33. package/build/tools/domains/mento-fx.js +72 -0
  34. package/build/tools/domains/mento-fx.js.map +1 -0
  35. package/build/tools/domains/nft.d.ts +2 -0
  36. package/build/tools/domains/nft.js +38 -0
  37. package/build/tools/domains/nft.js.map +1 -0
  38. package/build/tools/domains/self.d.ts +2 -0
  39. package/build/tools/domains/self.js +194 -0
  40. package/build/tools/domains/self.js.map +1 -0
  41. package/build/tools/domains/staking.d.ts +2 -0
  42. package/build/tools/domains/staking.js +74 -0
  43. package/build/tools/domains/staking.js.map +1 -0
  44. package/build/tools/domains/token.d.ts +2 -0
  45. package/build/tools/domains/token.js +73 -0
  46. package/build/tools/domains/token.js.map +1 -0
  47. package/build/tools/domains/transaction.d.ts +2 -0
  48. package/build/tools/domains/transaction.js +117 -0
  49. package/build/tools/domains/transaction.js.map +1 -0
  50. package/build/tools/domains/uniswap.d.ts +2 -0
  51. package/build/tools/domains/uniswap.js +72 -0
  52. package/build/tools/domains/uniswap.js.map +1 -0
  53. package/build/tools/filter.d.ts +2 -0
  54. package/build/tools/filter.js +28 -0
  55. package/build/tools/filter.js.map +1 -0
  56. package/build/tools/index.d.ts +7 -0
  57. package/build/tools/index.js +7 -0
  58. package/build/tools/index.js.map +1 -0
  59. package/build/tools/schemas/common.d.ts +110 -0
  60. package/build/tools/schemas/common.js +81 -0
  61. package/build/tools/schemas/common.js.map +1 -0
  62. package/build/tools/swap-routing.d.ts +24 -0
  63. package/build/tools/swap-routing.js +105 -0
  64. package/build/tools/swap-routing.js.map +1 -0
  65. package/build/tools/types.d.ts +134 -0
  66. package/build/tools/types.js +2 -0
  67. package/build/tools/types.js.map +1 -0
  68. package/build/tools/utils/carbon-prepare-handler.d.ts +6 -0
  69. package/build/tools/utils/carbon-prepare-handler.js +17 -0
  70. package/build/tools/utils/carbon-prepare-handler.js.map +1 -0
  71. package/build/tools/utils/normalize-token.d.ts +2 -0
  72. package/build/tools/utils/normalize-token.js +12 -0
  73. package/build/tools/utils/normalize-token.js.map +1 -0
  74. package/build/tools/utils/wallet.d.ts +2 -0
  75. package/build/tools/utils/wallet.js +4 -0
  76. package/build/tools/utils/wallet.js.map +1 -0
  77. package/package.json +7 -1
  78. package/tests/README.md +4 -0
  79. package/tests/catalog/operations.ts +11 -1
  80. package/tests/testing-entry.ts +5 -0
@@ -0,0 +1,73 @@
1
+ import { z } from "zod";
2
+ import { optionalWalletAddressSchema, tokenSymbolSchema, } from "../schemas/common.js";
3
+ import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
4
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
5
+ const readOnly = {
6
+ readOnlyHint: true,
7
+ idempotentHint: true,
8
+ };
9
+ export const tokenToolDefinitions = [
10
+ {
11
+ name: "get_celo_balances",
12
+ description: "Balances for named registry tokens on Celo mainnet. Default tokens: CELO + USDm.",
13
+ inputSchema: z.object({
14
+ address: optionalWalletAddressSchema,
15
+ tokens: z.array(tokenSymbolSchema).optional(),
16
+ }),
17
+ families: ["read"],
18
+ mcp: { title: "Get Celo Balances", annotations: readOnly },
19
+ handler: async (runtime, input) => {
20
+ const target = resolveWalletFromRuntime(runtime, {
21
+ address: input.address,
22
+ });
23
+ return runtime.celina.token.getBalances(target, input.tokens);
24
+ },
25
+ },
26
+ {
27
+ name: "get_stablecoin_balances",
28
+ description: "Scan all registry stablecoins for an address in one call. Omits zero balances by default.",
29
+ inputSchema: z.object({
30
+ address: optionalWalletAddressSchema,
31
+ stablecoins: z.array(z.string()).optional(),
32
+ include_zero: z.boolean().optional(),
33
+ }),
34
+ families: ["read"],
35
+ mcp: { title: "Get Stablecoin Balances", annotations: readOnly },
36
+ handler: async (runtime, input) => {
37
+ const target = resolveWalletFromRuntime(runtime, {
38
+ address: input.address,
39
+ });
40
+ return runtime.celina.token.getStablecoinBalances(target, {
41
+ stablecoins: input.stablecoins,
42
+ includeZero: input.include_zero,
43
+ });
44
+ },
45
+ },
46
+ {
47
+ name: "get_token_info",
48
+ description: "Registry token metadata (symbol, address, decimals). Does not read balances.",
49
+ inputSchema: z.object({
50
+ token: tokenSymbolSchema,
51
+ }),
52
+ families: ["read"],
53
+ mcp: { title: "Get Token Info", annotations: readOnly },
54
+ handler: async (runtime, input) => runtime.celina.token.getTokenInfo(normalizeRegistryTokenInput(input.token)),
55
+ },
56
+ {
57
+ name: "get_token_balance",
58
+ description: "Balance for one registry token. Pass a symbol or known registry contract address.",
59
+ inputSchema: z.object({
60
+ token: tokenSymbolSchema,
61
+ address: optionalWalletAddressSchema,
62
+ }),
63
+ families: ["read"],
64
+ mcp: { title: "Get Token Balance", annotations: readOnly },
65
+ handler: async (runtime, input) => {
66
+ const target = resolveWalletFromRuntime(runtime, {
67
+ address: input.address,
68
+ });
69
+ return runtime.celina.token.getTokenBalance(normalizeRegistryTokenInput(input.token), target);
70
+ },
71
+ },
72
+ ];
73
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/tools/domains/token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const transactionToolDefinitions: ToolDefinition[];
@@ -0,0 +1,117 @@
1
+ import { z } from "zod";
2
+ import { addressOrEnsSchema, addressSchema, hexDataSchema, optionalWalletAddressSchema, tokenSymbolSchema, } from "../schemas/common.js";
3
+ import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
4
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
5
+ export const transactionToolDefinitions = [
6
+ {
7
+ name: "estimate_send",
8
+ description: "Estimates gas for sending CELO or an ERC-20. Recipient can be ENS.",
9
+ inputSchema: z.object({
10
+ to: addressOrEnsSchema,
11
+ token: tokenSymbolSchema.optional(),
12
+ amount: z.string(),
13
+ from: optionalWalletAddressSchema,
14
+ }),
15
+ families: ["read"],
16
+ mcp: { title: "Estimate Send", annotations: { readOnlyHint: true } },
17
+ handler: async (runtime, input) => {
18
+ const { address, ens } = await runtime.celina.ens.resolveAddressOrEns(input.to);
19
+ const token = normalizeRegistryTokenInput(input.token ?? "CELO");
20
+ const amount = input.amount;
21
+ if (runtime.executors?.transaction) {
22
+ const estimate = await runtime.executors.transaction.estimateSend(address, token, amount);
23
+ if (ens) {
24
+ return Object.assign({}, estimate, { ens });
25
+ }
26
+ return estimate;
27
+ }
28
+ const sender = resolveWalletFromRuntime(runtime, {
29
+ from: input.from,
30
+ address: input.from,
31
+ });
32
+ const estimate = await runtime.celina.transaction.estimateSend(sender, address, token, amount);
33
+ return ens ? { ...estimate, ens } : estimate;
34
+ },
35
+ },
36
+ {
37
+ name: "send_token",
38
+ description: "Send CELO or an ERC-20 on mainnet. Requires CELO_PRIVATE_KEY in MCP server env.",
39
+ inputSchema: z.object({
40
+ to: addressOrEnsSchema,
41
+ token: tokenSymbolSchema.optional(),
42
+ amount: z.string(),
43
+ }),
44
+ families: ["execute"],
45
+ surfaces: ["mcp"],
46
+ mcp: {
47
+ title: "Send Token",
48
+ annotations: { destructiveHint: true, openWorldHint: true },
49
+ },
50
+ handler: async (runtime, input) => {
51
+ const tx = runtime.executors?.transaction;
52
+ if (!tx)
53
+ throw new Error("Transaction executor not configured.");
54
+ const { address, ens } = await runtime.celina.ens.resolveAddressOrEns(input.to);
55
+ const result = await tx.sendToken(address, normalizeRegistryTokenInput(input.token ?? "CELO"), input.amount);
56
+ return ens ? Object.assign({}, result, { ens }) : result;
57
+ },
58
+ },
59
+ {
60
+ name: "prepare_send",
61
+ description: "Prepare an unsigned send transaction. User must confirm and sign in wallet.",
62
+ inputSchema: z.object({
63
+ to: addressOrEnsSchema,
64
+ token: z.string(),
65
+ amount: z.string(),
66
+ from: optionalWalletAddressSchema,
67
+ }),
68
+ families: ["prepare"],
69
+ surfaces: ["celeste"],
70
+ handler: async (runtime, input) => {
71
+ const sender = resolveWalletFromRuntime(runtime, {
72
+ from: input.from,
73
+ });
74
+ const token = normalizeRegistryTokenInput(input.token);
75
+ const amount = input.amount;
76
+ await runtime.hooks?.beforePrepareSend?.({ sender, token, amount });
77
+ const { address } = await runtime.celina.ens.resolveAddressOrEns(input.to);
78
+ return runtime.celina.transaction.prepareSend(sender, address, token, amount);
79
+ },
80
+ },
81
+ {
82
+ name: "get_gas_fee_data",
83
+ description: "Returns current gas fee data including EIP-1559 fees on mainnet.",
84
+ inputSchema: z.object({}),
85
+ families: ["read"],
86
+ mcp: {
87
+ title: "Get Gas Fee Data",
88
+ annotations: { readOnlyHint: true, idempotentHint: true },
89
+ },
90
+ handler: async (runtime) => runtime.celina.transaction.getGasFeeData(),
91
+ },
92
+ {
93
+ name: "estimate_transaction",
94
+ description: "Estimates gas for a generic transaction (to/value/data) from a wallet.",
95
+ inputSchema: z.object({
96
+ from: optionalWalletAddressSchema,
97
+ to: addressSchema,
98
+ value: z.string().optional(),
99
+ data: hexDataSchema,
100
+ }),
101
+ families: ["read"],
102
+ mcp: { title: "Estimate Transaction", annotations: { readOnlyHint: true } },
103
+ handler: async (runtime, input) => {
104
+ const sender = resolveWalletFromRuntime(runtime, {
105
+ from: input.from,
106
+ address: input.from,
107
+ });
108
+ return runtime.celina.transaction.estimateTransaction({
109
+ from: sender,
110
+ to: input.to,
111
+ value: input.value,
112
+ data: input.data,
113
+ });
114
+ },
115
+ },
116
+ ];
117
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/tools/domains/transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const uniswapToolDefinitions: ToolDefinition[];
@@ -0,0 +1,72 @@
1
+ import { uniswapQuoteSchema, uniswapWalletSchema, } from "../schemas/common.js";
2
+ import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
3
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
4
+ function mapUniswapWalletOptions(input) {
5
+ return {
6
+ recipient: input.recipient,
7
+ slippageTolerance: input.slippage_tolerance,
8
+ deadlineMinutes: input.deadline_minutes,
9
+ };
10
+ }
11
+ export const uniswapToolDefinitions = [
12
+ {
13
+ name: "get_uniswap_quote",
14
+ description: "Uniswap v4 AMM quote for a token pair on Celo mainnet.",
15
+ inputSchema: uniswapQuoteSchema,
16
+ families: ["read"],
17
+ mcp: { title: "Get Uniswap Quote", annotations: { readOnlyHint: true } },
18
+ handler: async (runtime, input) => {
19
+ const from = input.from
20
+ ? resolveWalletFromRuntime(runtime, { from: input.from })
21
+ : undefined;
22
+ return runtime.celina.uniswap.getSwapQuote(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, from);
23
+ },
24
+ },
25
+ {
26
+ name: "estimate_uniswap_swap",
27
+ description: "Estimate gas for a Uniswap v4 swap including ERC-20 and Permit2 approvals when needed.",
28
+ inputSchema: uniswapWalletSchema,
29
+ families: ["read"],
30
+ mcp: { title: "Estimate Uniswap Swap", annotations: { readOnlyHint: true } },
31
+ handler: async (runtime, input) => {
32
+ const sender = resolveWalletFromRuntime(runtime, {
33
+ from: input.from,
34
+ });
35
+ if (runtime.executors?.uniswap) {
36
+ return runtime.executors.uniswap.estimate(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
37
+ }
38
+ return runtime.celina.uniswap.estimateSwap(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
39
+ },
40
+ },
41
+ {
42
+ name: "execute_uniswap_swap",
43
+ description: "Execute a Uniswap v4 swap on Celo mainnet. Requires CELO_PRIVATE_KEY.",
44
+ inputSchema: uniswapWalletSchema,
45
+ families: ["execute"],
46
+ surfaces: ["mcp"],
47
+ mcp: {
48
+ title: "Execute Uniswap Swap",
49
+ annotations: { destructiveHint: true, openWorldHint: true },
50
+ },
51
+ handler: async (runtime, input) => {
52
+ const uni = runtime.executors?.uniswap;
53
+ if (!uni)
54
+ throw new Error("Uniswap executor not configured.");
55
+ return uni.execute(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
56
+ },
57
+ },
58
+ {
59
+ name: "prepare_uniswap_swap",
60
+ description: "Prepare Uniswap v4 swap only. Prefer prepare_swap after get_swap_quote for automatic routing.",
61
+ inputSchema: uniswapWalletSchema,
62
+ families: ["prepare"],
63
+ surfaces: ["celeste"],
64
+ handler: async (runtime, input) => {
65
+ const sender = resolveWalletFromRuntime(runtime, {
66
+ from: input.from,
67
+ });
68
+ return runtime.celina.uniswap.prepareSwap(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapUniswapWalletOptions(input));
69
+ },
70
+ },
71
+ ];
72
+ //# sourceMappingURL=uniswap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../src/tools/domains/uniswap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { FilterToolsOptions, ToolDefinition } from "./types.js";
2
+ export declare function filterToolDefinitions(definitions: ToolDefinition[], options?: FilterToolsOptions): ToolDefinition[];
@@ -0,0 +1,28 @@
1
+ const CARBON_PREPARE_PREFIX = "prepare_carbon_";
2
+ const CARBON_EXECUTE_PREFIX = "execute_carbon_";
3
+ export function filterToolDefinitions(definitions, options = {}) {
4
+ return definitions.filter((def) => {
5
+ if (options.surface) {
6
+ const surfaces = def.surfaces ?? ["mcp", "celeste"];
7
+ if (!surfaces.includes(options.surface)) {
8
+ return false;
9
+ }
10
+ }
11
+ if (options.families?.length) {
12
+ if (!options.families.some((f) => def.families.includes(f))) {
13
+ return false;
14
+ }
15
+ }
16
+ if (options.names?.length && !options.names.includes(def.name)) {
17
+ return false;
18
+ }
19
+ if (def.name.startsWith(CARBON_PREPARE_PREFIX) && options.carbonPrepareEnabled === false) {
20
+ return false;
21
+ }
22
+ if (def.name.startsWith(CARBON_EXECUTE_PREFIX) && options.carbonExecuteEnabled === false) {
23
+ return false;
24
+ }
25
+ return true;
26
+ });
27
+ }
28
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/tools/filter.ts"],"names":[],"mappings":"AAEA,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAChD,MAAM,qBAAqB,GAAG,iBAAiB,CAAC;AAEhD,MAAM,UAAU,qBAAqB,CACnC,WAA6B,EAC7B,UAA8B,EAAE;IAEhC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAChC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACzF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getCelesteToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
2
+ export { filterToolDefinitions } from "./filter.js";
3
+ export { getSwapQuoteWithFallback, prepareSwapWithFallback, type SwapProtocol, type SwapQuoteResult, type SwapPrepareParams, } from "./swap-routing.js";
4
+ export * from "./schemas/common.js";
5
+ export type { FilterToolsOptions, McpToolAnnotations, McpToolMeta, ToolDefinition, ToolFamily, ToolRuntime, ToolRuntimeExecutors, ToolRuntimeHooks, ToolSurface, WalletInput, } from "./types.js";
6
+ export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
7
+ export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
@@ -0,0 +1,7 @@
1
+ export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getCelesteToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
2
+ export { filterToolDefinitions } from "./filter.js";
3
+ export { getSwapQuoteWithFallback, prepareSwapWithFallback, } from "./swap-routing.js";
4
+ export * from "./schemas/common.js";
5
+ export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
6
+ export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GAIxB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAapC,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { z } from "zod";
2
+ export declare const addressSchema: z.ZodString;
3
+ export declare const optionalWalletAddressSchema: z.ZodOptional<z.ZodString>;
4
+ export declare const addressOrEnsSchema: z.ZodString;
5
+ export declare const blockIdSchema: z.ZodUnion<[z.ZodNumber, z.ZodString, z.ZodLiteral<"latest">, z.ZodLiteral<"pending">]>;
6
+ export declare const tokenSymbolSchema: z.ZodString;
7
+ export declare const ensNameSchema: z.ZodString;
8
+ export declare const tokenIdSchema: z.ZodString;
9
+ export declare const abiSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
10
+ export declare const paginationFields: {
11
+ readonly page: z.ZodOptional<z.ZodNumber>;
12
+ readonly page_size: z.ZodOptional<z.ZodNumber>;
13
+ readonly offset: z.ZodOptional<z.ZodNumber>;
14
+ readonly limit: z.ZodOptional<z.ZodNumber>;
15
+ };
16
+ export declare const hexDataSchema: z.ZodOptional<z.ZodString>;
17
+ export declare const carbonWriteSchema: z.ZodObject<{
18
+ wallet_address: z.ZodOptional<z.ZodString>;
19
+ from: z.ZodOptional<z.ZodString>;
20
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
21
+ wallet_address: z.ZodOptional<z.ZodString>;
22
+ from: z.ZodOptional<z.ZodString>;
23
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
24
+ wallet_address: z.ZodOptional<z.ZodString>;
25
+ from: z.ZodOptional<z.ZodString>;
26
+ }, z.ZodTypeAny, "passthrough">>;
27
+ export declare const mentoFxQuoteSchema: z.ZodObject<{
28
+ token_in: z.ZodString;
29
+ token_out: z.ZodString;
30
+ amount: z.ZodString;
31
+ from: z.ZodOptional<z.ZodString>;
32
+ }, "strip", z.ZodTypeAny, {
33
+ amount: string;
34
+ token_in: string;
35
+ token_out: string;
36
+ from?: string | undefined;
37
+ }, {
38
+ amount: string;
39
+ token_in: string;
40
+ token_out: string;
41
+ from?: string | undefined;
42
+ }>;
43
+ export declare const mentoFxWalletSchema: z.ZodObject<{
44
+ token_in: z.ZodString;
45
+ token_out: z.ZodString;
46
+ amount: z.ZodString;
47
+ from: z.ZodOptional<z.ZodString>;
48
+ } & {
49
+ recipient: z.ZodOptional<z.ZodString>;
50
+ slippage_tolerance: z.ZodOptional<z.ZodNumber>;
51
+ deadline_minutes: z.ZodOptional<z.ZodNumber>;
52
+ }, "strip", z.ZodTypeAny, {
53
+ amount: string;
54
+ token_in: string;
55
+ token_out: string;
56
+ from?: string | undefined;
57
+ recipient?: string | undefined;
58
+ slippage_tolerance?: number | undefined;
59
+ deadline_minutes?: number | undefined;
60
+ }, {
61
+ amount: string;
62
+ token_in: string;
63
+ token_out: string;
64
+ from?: string | undefined;
65
+ recipient?: string | undefined;
66
+ slippage_tolerance?: number | undefined;
67
+ deadline_minutes?: number | undefined;
68
+ }>;
69
+ export declare const uniswapQuoteSchema: z.ZodObject<{
70
+ token_in: z.ZodString;
71
+ token_out: z.ZodString;
72
+ amount: z.ZodString;
73
+ from: z.ZodOptional<z.ZodString>;
74
+ }, "strip", z.ZodTypeAny, {
75
+ amount: string;
76
+ token_in: string;
77
+ token_out: string;
78
+ from?: string | undefined;
79
+ }, {
80
+ amount: string;
81
+ token_in: string;
82
+ token_out: string;
83
+ from?: string | undefined;
84
+ }>;
85
+ export declare const uniswapWalletSchema: z.ZodObject<{
86
+ token_in: z.ZodString;
87
+ token_out: z.ZodString;
88
+ amount: z.ZodString;
89
+ from: z.ZodOptional<z.ZodString>;
90
+ } & {
91
+ recipient: z.ZodOptional<z.ZodString>;
92
+ slippage_tolerance: z.ZodOptional<z.ZodNumber>;
93
+ deadline_minutes: z.ZodOptional<z.ZodNumber>;
94
+ }, "strip", z.ZodTypeAny, {
95
+ amount: string;
96
+ token_in: string;
97
+ token_out: string;
98
+ from?: string | undefined;
99
+ recipient?: string | undefined;
100
+ slippage_tolerance?: number | undefined;
101
+ deadline_minutes?: number | undefined;
102
+ }, {
103
+ amount: string;
104
+ token_in: string;
105
+ token_out: string;
106
+ from?: string | undefined;
107
+ recipient?: string | undefined;
108
+ slippage_tolerance?: number | undefined;
109
+ deadline_minutes?: number | undefined;
110
+ }>;
@@ -0,0 +1,81 @@
1
+ import { z } from "zod";
2
+ export const addressSchema = z
3
+ .string()
4
+ .regex(/^0x[a-fA-F0-9]{40}$/, "Invalid Ethereum address");
5
+ export const optionalWalletAddressSchema = addressSchema
6
+ .optional()
7
+ .describe("Wallet on Celo mainnet. Omit to use the connected wallet or MCP CELO_PRIVATE_KEY signer.");
8
+ export const addressOrEnsSchema = z
9
+ .string()
10
+ .min(3)
11
+ .describe("Recipient 0x address or ENS name (e.g. andrewkimjoseph.celo.eth, celina.eth)");
12
+ export const blockIdSchema = z.union([
13
+ z.number().int().nonnegative(),
14
+ z.string().regex(/^0x[a-fA-F0-9]+$/, "Invalid block hash"),
15
+ z.literal("latest"),
16
+ z.literal("pending"),
17
+ ]);
18
+ export const tokenSymbolSchema = z
19
+ .string()
20
+ .describe("Celo mainnet token symbol (e.g. CELO, USDm, USDC, USDT)");
21
+ export const ensNameSchema = z
22
+ .string()
23
+ .min(3)
24
+ .describe("ENS name, e.g. celina.eth or vitalik.eth");
25
+ export const tokenIdSchema = z.string().describe("NFT token ID (decimal string)");
26
+ export const abiSchema = z
27
+ .array(z.record(z.unknown()))
28
+ .min(1)
29
+ .describe("Contract ABI as a JSON array");
30
+ export const paginationFields = {
31
+ page: z.number().int().min(1).optional(),
32
+ page_size: z.number().int().min(1).optional(),
33
+ offset: z.number().int().min(0).optional(),
34
+ limit: z.number().int().min(1).optional(),
35
+ };
36
+ export const hexDataSchema = z
37
+ .string()
38
+ .regex(/^0x[a-fA-F0-9]*$/)
39
+ .optional()
40
+ .describe("Optional transaction calldata (hex)");
41
+ export const carbonWriteSchema = z
42
+ .object({
43
+ wallet_address: optionalWalletAddressSchema,
44
+ from: addressSchema.optional(),
45
+ })
46
+ .passthrough();
47
+ export const mentoFxQuoteSchema = z.object({
48
+ token_in: tokenSymbolSchema.describe("Input token symbol or address"),
49
+ token_out: tokenSymbolSchema.describe("Output token symbol or address"),
50
+ amount: z.string().describe("Human-readable amount of token_in, e.g. 100"),
51
+ from: optionalWalletAddressSchema,
52
+ });
53
+ export const mentoFxWalletSchema = mentoFxQuoteSchema.extend({
54
+ recipient: addressSchema
55
+ .optional()
56
+ .describe("Address that receives output tokens (defaults to signer)"),
57
+ slippage_tolerance: z
58
+ .number()
59
+ .min(0)
60
+ .max(20)
61
+ .optional()
62
+ .describe("Max slippage in percent (default 0.5)"),
63
+ deadline_minutes: z
64
+ .number()
65
+ .int()
66
+ .positive()
67
+ .optional()
68
+ .describe("Transaction deadline in minutes (default 5)"),
69
+ });
70
+ export const uniswapQuoteSchema = z.object({
71
+ token_in: tokenSymbolSchema,
72
+ token_out: tokenSymbolSchema,
73
+ amount: z.string().describe("Human-readable amount of token_in"),
74
+ from: optionalWalletAddressSchema,
75
+ });
76
+ export const uniswapWalletSchema = uniswapQuoteSchema.extend({
77
+ recipient: addressSchema.optional(),
78
+ slippage_tolerance: z.number().min(0).max(20).optional(),
79
+ deadline_minutes: z.number().int().positive().optional(),
80
+ });
81
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/tools/schemas/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { CelinaClient } from "../index.js";
2
+ export type SwapProtocol = "mento_fx" | "uniswap_v4";
3
+ export interface SwapQuoteResult {
4
+ protocol: SwapProtocol;
5
+ tokenIn: string;
6
+ tokenOut: string;
7
+ amountIn: string;
8
+ expectedOut: string;
9
+ routeHops: number;
10
+ network: "mainnet";
11
+ alternatives?: Array<{
12
+ protocol: SwapProtocol;
13
+ expectedOut: string;
14
+ error?: string;
15
+ }>;
16
+ }
17
+ export interface SwapPrepareParams {
18
+ recipient?: `0x${string}`;
19
+ slippageTolerance?: number;
20
+ deadlineMinutes?: number;
21
+ }
22
+ /** Quote a swap across Mento FX and Uniswap v4; returns the best available route. */
23
+ export declare function getSwapQuoteWithFallback(celina: CelinaClient, tokenIn: string, tokenOut: string, amount: string, from?: `0x${string}`): Promise<SwapQuoteResult>;
24
+ export declare function prepareSwapWithFallback(celina: CelinaClient, from: `0x${string}`, tokenIn: string, tokenOut: string, amount: string, params?: SwapPrepareParams, protocol?: SwapProtocol): Promise<import("../index.js").SerializedPreparedFlow>;