@coinbase/agentkit 0.0.0-nightly-20250918210440 → 0.0.0-nightly-20251001210424

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 (96) hide show
  1. package/README.md +170 -39
  2. package/dist/action-providers/across/schemas.d.ts +1 -1
  3. package/dist/action-providers/baseAccount/baseAccountActionProvider.d.ts +46 -0
  4. package/dist/action-providers/baseAccount/baseAccountActionProvider.js +404 -0
  5. package/dist/action-providers/baseAccount/baseAccountActionProvider.test.d.ts +1 -0
  6. package/dist/action-providers/baseAccount/baseAccountActionProvider.test.js +325 -0
  7. package/dist/action-providers/baseAccount/index.d.ts +2 -0
  8. package/dist/action-providers/baseAccount/index.js +18 -0
  9. package/dist/action-providers/baseAccount/schemas.d.ts +43 -0
  10. package/dist/action-providers/baseAccount/schemas.js +62 -0
  11. package/dist/action-providers/baseAccount/types.d.ts +17 -0
  12. package/dist/action-providers/baseAccount/types.js +2 -0
  13. package/dist/action-providers/baseAccount/utils.d.ts +14 -0
  14. package/dist/action-providers/baseAccount/utils.js +57 -0
  15. package/dist/action-providers/cdp/cdpApiActionProvider.js +7 -30
  16. package/dist/action-providers/cdp/cdpApiActionProvider.test.js +2 -8
  17. package/dist/action-providers/cdp/cdpEvmWalletActionProvider.js +2 -1
  18. package/dist/action-providers/cdp/cdpEvmWalletActionProvider.test.js +3 -1
  19. package/dist/action-providers/cdp/cdpSmartWalletActionProvider.js +2 -1
  20. package/dist/action-providers/cdp/cdpSmartWalletActionProvider.test.js +3 -1
  21. package/dist/action-providers/cdp/faucetUtils.d.ts +38 -0
  22. package/dist/action-providers/cdp/faucetUtils.js +81 -0
  23. package/dist/action-providers/cdp/swapUtils.d.ts +0 -9
  24. package/dist/action-providers/cdp/swapUtils.js +0 -36
  25. package/dist/action-providers/clanker/schemas.d.ts +6 -6
  26. package/dist/action-providers/enso/constants.d.ts +4 -0
  27. package/dist/action-providers/enso/constants.js +10 -0
  28. package/dist/action-providers/enso/ensoActionProvider.d.ts +34 -0
  29. package/dist/action-providers/enso/ensoActionProvider.js +125 -0
  30. package/dist/action-providers/enso/ensoActionProvider.test.d.ts +1 -0
  31. package/dist/action-providers/enso/ensoActionProvider.test.js +141 -0
  32. package/dist/action-providers/enso/index.d.ts +1 -0
  33. package/dist/action-providers/enso/index.js +17 -0
  34. package/dist/action-providers/enso/schemas.d.ts +23 -0
  35. package/dist/action-providers/enso/schemas.js +22 -0
  36. package/dist/action-providers/erc20/erc20ActionProvider.d.ts +17 -1
  37. package/dist/action-providers/erc20/erc20ActionProvider.js +102 -0
  38. package/dist/action-providers/erc20/erc20ActionProvider.test.js +201 -0
  39. package/dist/action-providers/erc20/schemas.d.ts +29 -0
  40. package/dist/action-providers/erc20/schemas.js +34 -1
  41. package/dist/action-providers/flaunch/client_utils.d.ts +25 -0
  42. package/dist/action-providers/flaunch/client_utils.js +62 -0
  43. package/dist/action-providers/flaunch/constants.d.ts +41 -20
  44. package/dist/action-providers/flaunch/constants.js +111 -36
  45. package/dist/action-providers/flaunch/flaunchActionProvider.d.ts +4 -43
  46. package/dist/action-providers/flaunch/flaunchActionProvider.js +132 -200
  47. package/dist/action-providers/flaunch/flaunchActionProvider.test.js +108 -13
  48. package/dist/action-providers/flaunch/metadata_utils.d.ts +12 -0
  49. package/dist/action-providers/flaunch/metadata_utils.js +216 -0
  50. package/dist/action-providers/flaunch/schemas.d.ts +39 -3
  51. package/dist/action-providers/flaunch/schemas.js +62 -10
  52. package/dist/action-providers/flaunch/{utils.d.ts → swap_utils.d.ts} +17 -19
  53. package/dist/action-providers/flaunch/{utils.js → swap_utils.js} +137 -172
  54. package/dist/action-providers/index.d.ts +4 -1
  55. package/dist/action-providers/index.js +4 -1
  56. package/dist/action-providers/superfluid/superfluidSuperTokenCreatorActionProvider.js +5 -4
  57. package/dist/action-providers/superfluid/utils/parseLogs.d.ts +2 -1
  58. package/dist/action-providers/superfluid/utils/parseLogs.js +6 -3
  59. package/dist/action-providers/wallet/walletActionProvider.js +3 -0
  60. package/dist/action-providers/x402/utils.d.ts +4 -4
  61. package/dist/action-providers/x402/utils.js +42 -5
  62. package/dist/action-providers/x402/x402ActionProvider.d.ts +6 -6
  63. package/dist/action-providers/x402/x402ActionProvider.js +23 -8
  64. package/dist/action-providers/x402/x402ActionProvider.test.js +50 -6
  65. package/dist/action-providers/yelay/constants.d.ts +64 -0
  66. package/dist/action-providers/yelay/constants.js +137 -0
  67. package/dist/action-providers/yelay/index.d.ts +2 -0
  68. package/dist/action-providers/yelay/index.js +18 -0
  69. package/dist/action-providers/yelay/schemas.d.ts +47 -0
  70. package/dist/action-providers/yelay/schemas.js +59 -0
  71. package/dist/action-providers/yelay/types.d.ts +24 -0
  72. package/dist/action-providers/yelay/types.js +2 -0
  73. package/dist/action-providers/yelay/yelayActionProvider.d.ts +70 -0
  74. package/dist/action-providers/yelay/yelayActionProvider.js +329 -0
  75. package/dist/action-providers/yelay/yelayActionProvider.test.d.ts +1 -0
  76. package/dist/action-providers/yelay/yelayActionProvider.test.js +302 -0
  77. package/dist/utils.d.ts +10 -0
  78. package/dist/utils.js +43 -13
  79. package/dist/wallet-providers/cdpEvmWalletProvider.js +5 -21
  80. package/dist/wallet-providers/cdpSmartWalletProvider.js +10 -5
  81. package/dist/wallet-providers/cdpSmartWalletProvider.test.js +0 -8
  82. package/dist/wallet-providers/cdpSolanaWalletProvider.d.ts +14 -0
  83. package/dist/wallet-providers/cdpSolanaWalletProvider.js +39 -3
  84. package/dist/wallet-providers/cdpSolanaWalletProvider.test.js +16 -0
  85. package/dist/wallet-providers/privySvmWalletProvider.d.ts +14 -0
  86. package/dist/wallet-providers/privySvmWalletProvider.js +17 -0
  87. package/dist/wallet-providers/privySvmWalletProvider.test.js +10 -0
  88. package/dist/wallet-providers/solanaKeypairWalletProvider.d.ts +14 -0
  89. package/dist/wallet-providers/solanaKeypairWalletProvider.js +17 -0
  90. package/dist/wallet-providers/svmWalletProvider.d.ts +34 -0
  91. package/dist/wallet-providers/svmWalletProvider.js +43 -0
  92. package/dist/wallet-providers/svmWalletProvider.test.js +10 -0
  93. package/dist/wallet-providers/viemWalletProvider.d.ts +1 -1
  94. package/dist/wallet-providers/viemWalletProvider.js +5 -1
  95. package/dist/wallet-providers/viemWalletProvider.test.js +12 -1
  96. package/package.json +4 -1
@@ -1,174 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getSwapAmountsFromReceipt = exports.getSwapAmountsFromLog = exports.memecoinToEthWithPermit2 = exports.ethToMemecoin = exports.getAmountWithSlippage = exports.generateTokenUri = void 0;
3
+ exports.getSwapAmountsFromReceipt = exports.getSwapAmountsFromLog = exports.memecoinToEthWithPermit2 = exports.ethToMemecoin = exports.getAmountWithSlippage = void 0;
4
+ exports.buyFlaunchCoin = buyFlaunchCoin;
4
5
  const viem_1 = require("viem");
5
6
  const constants_1 = require("./constants");
6
- /**
7
- * Uploads a base64 image to IPFS using Pinata
8
- *
9
- * @param params - Configuration and base64 image data
10
- * @param params.pinataConfig - Pinata configuration including JWT
11
- * @param params.base64Image - Base64 encoded image data
12
- * @param params.name - Optional name for the uploaded file
13
- * @param params.metadata - Optional metadata key-value pairs
14
- * @returns Upload response with CID and other details
15
- */
16
- const uploadImageToIPFS = async (params) => {
17
- try {
18
- const formData = new FormData();
19
- // Convert base64 to Blob and then to File
20
- // Remove data URL prefix if present (e.g., "data:image/jpeg;base64,")
21
- const base64Data = params.base64Image.split(",")[1] || params.base64Image;
22
- const byteCharacters = atob(base64Data);
23
- const byteArrays = [];
24
- for (let offset = 0; offset < byteCharacters.length; offset += 1024) {
25
- const slice = byteCharacters.slice(offset, offset + 1024);
26
- const byteNumbers = new Array(slice.length);
27
- for (let i = 0; i < slice.length; i++) {
28
- byteNumbers[i] = slice.charCodeAt(i);
29
- }
30
- const byteArray = new Uint8Array(byteNumbers);
31
- byteArrays.push(byteArray);
32
- }
33
- // Detect mime type from base64 string
34
- let mimeType = "image/png"; // default
35
- if (params.base64Image.startsWith("data:")) {
36
- mimeType = params.base64Image.split(";")[0].split(":")[1];
37
- }
38
- const blob = new Blob(byteArrays, { type: mimeType });
39
- const fileName = params.name || `image.${mimeType.split("/")[1]}`;
40
- const file = new File([blob], fileName, { type: mimeType });
41
- formData.append("file", file);
42
- const pinataMetadata = {
43
- name: params.name || null,
44
- keyvalues: params.metadata || {},
45
- };
46
- formData.append("pinataMetadata", JSON.stringify(pinataMetadata));
47
- const pinataOptions = {
48
- cidVersion: 1,
49
- };
50
- formData.append("pinataOptions", JSON.stringify(pinataOptions));
51
- const response = await fetch("https://api.pinata.cloud/pinning/pinFileToIPFS", {
52
- method: "POST",
53
- headers: {
54
- Authorization: `Bearer ${params.pinataConfig.jwt}`,
55
- },
56
- body: formData,
57
- });
58
- if (!response.ok) {
59
- const error = await response.json();
60
- throw new Error(`Failed to upload image to IPFS: ${error.message || response.statusText}`);
61
- }
62
- const data = await response.json();
63
- return {
64
- IpfsHash: data.IpfsHash,
65
- PinSize: data.PinSize,
66
- Timestamp: data.Timestamp,
67
- isDuplicate: data.isDuplicate || false,
68
- };
69
- }
70
- catch (error) {
71
- if (error instanceof Error) {
72
- throw new Error(`Failed to upload image to IPFS: ${error.message}`);
73
- }
74
- throw error;
75
- }
76
- };
77
- /**
78
- * Uploads JSON data to IPFS using Pinata
79
- *
80
- * @param params - Configuration and JSON data
81
- * @param params.pinataConfig - Pinata configuration including JWT
82
- * @param params.json - JSON data to upload
83
- * @param params.name - Optional name for the uploaded file
84
- * @param params.metadata - Optional metadata key-value pairs
85
- * @returns Upload response with CID and other details
86
- */
87
- const uploadJsonToIPFS = async (params) => {
88
- try {
89
- const requestBody = {
90
- pinataOptions: {
91
- cidVersion: 1,
92
- },
93
- pinataMetadata: {
94
- name: params.name || null,
95
- keyvalues: params.metadata || {},
96
- },
97
- pinataContent: params.json,
98
- };
99
- const response = await fetch("https://api.pinata.cloud/pinning/pinJSONToIPFS", {
100
- method: "POST",
101
- headers: {
102
- Authorization: `Bearer ${params.pinataConfig.jwt}`,
103
- "Content-Type": "application/json",
104
- },
105
- body: JSON.stringify(requestBody),
106
- });
107
- if (!response.ok) {
108
- const error = await response.json();
109
- throw new Error(`Failed to upload JSON to IPFS: ${error.message || response.statusText}`);
110
- }
111
- const data = await response.json();
112
- return {
113
- IpfsHash: data.IpfsHash,
114
- PinSize: data.PinSize,
115
- Timestamp: data.Timestamp,
116
- isDuplicate: data.isDuplicate || false,
117
- };
118
- }
119
- catch (error) {
120
- if (error instanceof Error) {
121
- throw new Error(`Failed to upload JSON to IPFS: ${error.message}`);
122
- }
123
- throw error;
124
- }
125
- };
126
- const generateTokenUriBase64Image = async (name, params) => {
127
- // 1. upload image to IPFS
128
- const imageRes = await uploadImageToIPFS({
129
- pinataConfig: params.pinataConfig,
130
- base64Image: params.metadata.base64Image,
131
- });
132
- // 2. upload metadata to IPFS
133
- const coinMetadata = {
134
- name,
135
- description: params.metadata.description,
136
- image: `ipfs://${imageRes.IpfsHash}`,
137
- external_link: params.metadata.websiteUrl || "",
138
- collaborators: [],
139
- discordUrl: params.metadata.discordUrl || "",
140
- twitterUrl: params.metadata.twitterUrl || "",
141
- telegramUrl: params.metadata.telegramUrl || "",
142
- };
143
- const metadataRes = await uploadJsonToIPFS({
144
- pinataConfig: params.pinataConfig,
145
- json: coinMetadata,
146
- });
147
- return `ipfs://${metadataRes.IpfsHash}`;
148
- };
149
- const generateTokenUri = async (name, params) => {
150
- // 1. get base64Image from imageUrl
151
- const response = await fetch(params.metadata.imageUrl);
152
- if (!response.ok) {
153
- throw new Error(`Failed to fetch image: ${response.statusText}`);
154
- }
155
- const arrayBuffer = await response.arrayBuffer();
156
- const base64Image = Buffer.from(arrayBuffer).toString("base64");
157
- // 2. generate token uri
158
- const tokenUri = await generateTokenUriBase64Image(name, {
159
- pinataConfig: params.pinataConfig,
160
- metadata: {
161
- base64Image,
162
- description: params.metadata.description,
163
- websiteUrl: params.metadata.websiteUrl,
164
- discordUrl: params.metadata.discordUrl,
165
- twitterUrl: params.metadata.twitterUrl,
166
- telegramUrl: params.metadata.telegramUrl,
167
- },
168
- });
169
- return tokenUri;
170
- };
171
- exports.generateTokenUri = generateTokenUri;
7
+ const network_1 = require("../../network");
8
+ const viem_2 = require("viem");
172
9
  const getAmountWithSlippage = (amount, slippage, swapType) => {
173
10
  if (amount == null) {
174
11
  return 0n;
@@ -184,7 +21,7 @@ const ETH = viem_1.zeroAddress;
184
21
  const ethToMemecoin = (params) => {
185
22
  const flETH = constants_1.FLETHAddress[params.chainId];
186
23
  const flETHHooks = constants_1.FLETHHooksAddress[params.chainId];
187
- const flaunchHooks = constants_1.FlaunchPositionManagerAddress[params.chainId];
24
+ const flaunchHooks = constants_1.FlaunchPositionManagerV1_1Address[params.chainId];
188
25
  // Determine actions based on swapType
189
26
  const v4Actions = ("0x" +
190
27
  (params.swapType === "EXACT_IN" ? constants_1.V4Actions.SWAP_EXACT_IN : constants_1.V4Actions.SWAP_EXACT_OUT) +
@@ -314,11 +151,11 @@ const ethToMemecoin = (params) => {
314
151
  };
315
152
  exports.ethToMemecoin = ethToMemecoin;
316
153
  // @notice Before calling the UniversalRouter the user must have:
317
- // 1. Given the Permit2 contract allowance to spend the memecoin
154
+ // Given the Permit2 contract allowance to spend the memecoin
318
155
  const memecoinToEthWithPermit2 = (params) => {
319
156
  const flETH = constants_1.FLETHAddress[params.chainId];
320
157
  const flETHHooks = constants_1.FLETHHooksAddress[params.chainId];
321
- const flaunchHooks = constants_1.FlaunchPositionManagerAddress[params.chainId];
158
+ const flaunchHooks = constants_1.FlaunchPositionManagerV1_1Address[params.chainId];
322
159
  const v4Actions = ("0x" +
323
160
  constants_1.V4Actions.SWAP_EXACT_IN +
324
161
  constants_1.V4Actions.SETTLE_ALL +
@@ -483,11 +320,11 @@ const getSwapAmountsFromReceipt = ({ receipt, coinAddress, chainId, }) => {
483
320
  const filteredPoolSwapEvent = receipt.logs
484
321
  .map(log => {
485
322
  try {
486
- if (log.address.toLowerCase() !== constants_1.FlaunchPositionManagerAddress[chainId].toLowerCase()) {
323
+ if (log.address.toLowerCase() !== constants_1.FlaunchPositionManagerV1_1Address[chainId].toLowerCase()) {
487
324
  return null;
488
325
  }
489
326
  const event = (0, viem_1.decodeEventLog)({
490
- abi: constants_1.POSITION_MANAGER_ABI,
327
+ abi: constants_1.POSITION_MANAGERV1_1_ABI,
491
328
  data: log.data,
492
329
  topics: log.topics,
493
330
  });
@@ -505,3 +342,131 @@ const getSwapAmountsFromReceipt = ({ receipt, coinAddress, chainId, }) => {
505
342
  });
506
343
  };
507
344
  exports.getSwapAmountsFromReceipt = getSwapAmountsFromReceipt;
345
+ /**
346
+ * Buys a flaunch coin using ETH input.
347
+ *
348
+ * @param walletProvider - The wallet provider instance for blockchain interactions
349
+ * @param coinAddress - The address of the coin to buy
350
+ * @param swapType - The type of swap to perform
351
+ * @param swapParams - The parameters for the swap
352
+ * @param swapParams.amountIn - The amount of ETH to spend (for EXACT_IN)
353
+ * @param swapParams.amountOut - The amount of coins to buy (for EXACT_OUT)
354
+ * @param slippagePercent - The slippage percentage
355
+ * @returns A promise that resolves to a string describing the transaction result
356
+ */
357
+ async function buyFlaunchCoin(walletProvider, coinAddress, swapType, swapParams, slippagePercent) {
358
+ const network = walletProvider.getNetwork();
359
+ const chainId = network.chainId;
360
+ const networkId = network.networkId;
361
+ if (!chainId || !networkId) {
362
+ throw new Error("Chain ID is not set.");
363
+ }
364
+ try {
365
+ let amountIn;
366
+ let amountOutMin;
367
+ let amountOut;
368
+ let amountInMax;
369
+ if (swapType === "EXACT_IN") {
370
+ amountIn = (0, viem_1.parseEther)(swapParams.amountIn);
371
+ const quoteResult = await walletProvider.getPublicClient().simulateContract({
372
+ address: constants_1.QuoterAddress[chainId],
373
+ abi: constants_1.QUOTER_ABI,
374
+ functionName: "quoteExactInput",
375
+ args: [
376
+ {
377
+ exactAmount: amountIn,
378
+ exactCurrency: viem_1.zeroAddress, // ETH
379
+ path: [
380
+ {
381
+ fee: 0,
382
+ tickSpacing: 60,
383
+ hookData: "0x",
384
+ hooks: constants_1.FLETHHooksAddress[chainId],
385
+ intermediateCurrency: constants_1.FLETHAddress[chainId],
386
+ },
387
+ {
388
+ fee: 0,
389
+ tickSpacing: 60,
390
+ hooks: constants_1.FlaunchPositionManagerV1_1Address[chainId],
391
+ hookData: "0x",
392
+ intermediateCurrency: coinAddress,
393
+ },
394
+ ],
395
+ },
396
+ ],
397
+ });
398
+ amountOutMin = (0, exports.getAmountWithSlippage)(quoteResult.result[0], // amountOut
399
+ (slippagePercent / 100).toFixed(18).toString(), swapType);
400
+ }
401
+ else {
402
+ // EXACT_OUT
403
+ amountOut = (0, viem_1.parseEther)(swapParams.amountOut);
404
+ const quoteResult = await walletProvider.getPublicClient().simulateContract({
405
+ address: constants_1.QuoterAddress[chainId],
406
+ abi: constants_1.QUOTER_ABI,
407
+ functionName: "quoteExactOutput",
408
+ args: [
409
+ {
410
+ path: [
411
+ {
412
+ intermediateCurrency: viem_1.zeroAddress,
413
+ fee: 0,
414
+ tickSpacing: 60,
415
+ hookData: "0x",
416
+ hooks: constants_1.FLETHHooksAddress[chainId],
417
+ },
418
+ {
419
+ intermediateCurrency: constants_1.FLETHAddress[chainId],
420
+ fee: 0,
421
+ tickSpacing: 60,
422
+ hooks: constants_1.FlaunchPositionManagerV1_1Address[chainId],
423
+ hookData: "0x",
424
+ },
425
+ ],
426
+ exactCurrency: coinAddress,
427
+ exactAmount: amountOut,
428
+ },
429
+ ],
430
+ });
431
+ amountInMax = (0, exports.getAmountWithSlippage)(quoteResult.result[0], // amountIn
432
+ (slippagePercent / 100).toFixed(18).toString(), swapType);
433
+ }
434
+ const { commands, inputs } = (0, exports.ethToMemecoin)({
435
+ sender: walletProvider.getAddress(),
436
+ memecoin: coinAddress,
437
+ chainId: Number(chainId),
438
+ referrer: viem_1.zeroAddress,
439
+ swapType,
440
+ amountIn,
441
+ amountOutMin,
442
+ amountOut,
443
+ amountInMax,
444
+ });
445
+ const data = (0, viem_1.encodeFunctionData)({
446
+ abi: constants_1.UNIVERSAL_ROUTER_ABI,
447
+ functionName: "execute",
448
+ args: [commands, inputs],
449
+ });
450
+ const hash = await walletProvider.sendTransaction({
451
+ to: constants_1.UniversalRouterAddress[chainId],
452
+ data,
453
+ value: swapType === "EXACT_IN" ? amountIn : amountInMax,
454
+ });
455
+ const receipt = await walletProvider.waitForTransactionReceipt(hash);
456
+ const swapAmounts = (0, exports.getSwapAmountsFromReceipt)({
457
+ receipt,
458
+ coinAddress: coinAddress,
459
+ chainId: Number(chainId),
460
+ });
461
+ const coinSymbol = await walletProvider.readContract({
462
+ address: coinAddress,
463
+ abi: constants_1.ERC20_ABI,
464
+ functionName: "symbol",
465
+ });
466
+ return `Bought ${(0, viem_2.formatEther)(swapAmounts.coinsBought)} $${coinSymbol} for ${(0, viem_2.formatEther)(swapAmounts.ethSold)} ETH\n
467
+ Tx hash: [${hash}](${network_1.NETWORK_ID_TO_VIEM_CHAIN[networkId].blockExplorers?.default.url}/tx/${hash})`;
468
+ }
469
+ catch (error) {
470
+ return `Error buying coin: ${error}`;
471
+ }
472
+ }
@@ -3,11 +3,14 @@ export * from "./actionProvider";
3
3
  export * from "./customActionProvider";
4
4
  export * from "./across";
5
5
  export * from "./alchemy";
6
+ export * from "./baseAccount";
6
7
  export * from "./basename";
7
8
  export * from "./cdp-legacy";
8
9
  export * from "./cdp";
10
+ export * from "./clanker";
9
11
  export * from "./compound";
10
12
  export * from "./defillama";
13
+ export * from "./enso";
11
14
  export * from "./erc20";
12
15
  export * from "./erc721";
13
16
  export * from "./farcaster";
@@ -29,8 +32,8 @@ export * from "./flaunch";
29
32
  export * from "./onramp";
30
33
  export * from "./vaultsfyi";
31
34
  export * from "./x402";
35
+ export * from "./yelay";
32
36
  export * from "./zerion";
33
37
  export * from "./zerodev";
34
38
  export * from "./zeroX";
35
39
  export * from "./zora";
36
- export * from "./clanker";
@@ -19,11 +19,14 @@ __exportStar(require("./actionProvider"), exports);
19
19
  __exportStar(require("./customActionProvider"), exports);
20
20
  __exportStar(require("./across"), exports);
21
21
  __exportStar(require("./alchemy"), exports);
22
+ __exportStar(require("./baseAccount"), exports);
22
23
  __exportStar(require("./basename"), exports);
23
24
  __exportStar(require("./cdp-legacy"), exports);
24
25
  __exportStar(require("./cdp"), exports);
26
+ __exportStar(require("./clanker"), exports);
25
27
  __exportStar(require("./compound"), exports);
26
28
  __exportStar(require("./defillama"), exports);
29
+ __exportStar(require("./enso"), exports);
27
30
  __exportStar(require("./erc20"), exports);
28
31
  __exportStar(require("./erc721"), exports);
29
32
  __exportStar(require("./farcaster"), exports);
@@ -45,8 +48,8 @@ __exportStar(require("./flaunch"), exports);
45
48
  __exportStar(require("./onramp"), exports);
46
49
  __exportStar(require("./vaultsfyi"), exports);
47
50
  __exportStar(require("./x402"), exports);
51
+ __exportStar(require("./yelay"), exports);
48
52
  __exportStar(require("./zerion"), exports);
49
53
  __exportStar(require("./zerodev"), exports);
50
54
  __exportStar(require("./zeroX"), exports);
51
55
  __exportStar(require("./zora"), exports);
52
- __exportStar(require("./clanker"), exports);
@@ -74,14 +74,15 @@ class SuperfluidSuperTokenCreatorActionProvider extends actionProvider_1.ActionP
74
74
  `${symbol}x`,
75
75
  ],
76
76
  });
77
+ const superTokenFactoryAddress = walletProvider.getNetwork().networkId === "base-sepolia"
78
+ ? constants_1.SuperTokenFactoryAddress_Base_Sepolia
79
+ : constants_1.SuperTokenFactoryAddress;
77
80
  const createSuperTokenHash = await walletProvider.sendTransaction({
78
- to: walletProvider.getNetwork().networkId === "base-sepolia"
79
- ? constants_1.SuperTokenFactoryAddress_Base_Sepolia
80
- : constants_1.SuperTokenFactoryAddress,
81
+ to: superTokenFactoryAddress,
81
82
  data: createSuperTokenData,
82
83
  });
83
84
  const receipt = await walletProvider.waitForTransactionReceipt(createSuperTokenHash);
84
- const superTokenAddress = (0, parseLogs_1.extractCreatedSuperTokenAddressAbi)(receipt);
85
+ const superTokenAddress = (0, parseLogs_1.extractCreatedSuperTokenAddressAbi)(receipt, superTokenFactoryAddress);
85
86
  return `Created super token for ${args.erc20TokenAddress}. Super token address at ${superTokenAddress} Transaction hash: ${createSuperTokenHash}`;
86
87
  }
87
88
  catch (error) {
@@ -12,7 +12,8 @@ type TxReceipt = {
12
12
  * Extracts the super token address using the contract abi
13
13
  *
14
14
  * @param receipt - the transaction receipt from creating the super token
15
+ * @param factoryAddress - the address of the factory that created the super token
15
16
  * @returns - The contract address of the created Super Token
16
17
  */
17
- export declare function extractCreatedSuperTokenAddressAbi(receipt: TxReceipt): `0x${string}`;
18
+ export declare function extractCreatedSuperTokenAddressAbi(receipt: TxReceipt, factoryAddress: `0x${string}`): `0x${string}`;
18
19
  export {};
@@ -46,12 +46,15 @@ function pickTokenLike(args) {
46
46
  * Extracts the super token address using the contract abi
47
47
  *
48
48
  * @param receipt - the transaction receipt from creating the super token
49
+ * @param factoryAddress - the address of the factory that created the super token
49
50
  * @returns - The contract address of the created Super Token
50
51
  */
51
- function extractCreatedSuperTokenAddressAbi(receipt) {
52
- const factory = receipt.to?.toLowerCase();
52
+ function extractCreatedSuperTokenAddressAbi(receipt, factoryAddress) {
53
+ const factory = factoryAddress.toLowerCase();
53
54
  if (!factory)
54
- throw new Error("Missing receipt.to (factory address)");
55
+ throw new Error("Missing factory address");
56
+ console.log("factory", factory);
57
+ console.log("receipt.logs", receipt.logs);
55
58
  for (const log of receipt.logs) {
56
59
  if (log.address.toLowerCase() !== factory)
57
60
  continue;
@@ -69,6 +69,9 @@ class WalletActionProvider extends actionProvider_1.ActionProvider {
69
69
  "Wallet Details:",
70
70
  `- Provider: ${name}`,
71
71
  `- Address: ${address}`,
72
+ ...(walletProvider instanceof wallet_providers_1.CdpSmartWalletProvider
73
+ ? [`- Owner Address: ${walletProvider.ownerAccount.address}`]
74
+ : []),
72
75
  "- Network:",
73
76
  ` * Protocol Family: ${network.protocolFamily}`,
74
77
  ` * Network ID: ${network.networkId || "N/A"}`,
@@ -1,6 +1,6 @@
1
1
  import { Network } from "../../network";
2
2
  import { AxiosError } from "axios";
3
- import { EvmWalletProvider } from "../../wallet-providers";
3
+ import { WalletProvider } from "../../wallet-providers";
4
4
  /**
5
5
  * Supported network types for x402 protocol
6
6
  */
@@ -35,7 +35,7 @@ export declare function formatPaymentOption(option: {
35
35
  asset: string;
36
36
  maxAmountRequired: string;
37
37
  network: string;
38
- }, walletProvider: EvmWalletProvider): Promise<string>;
38
+ }, walletProvider: WalletProvider): Promise<string>;
39
39
  /**
40
40
  * Checks if an asset is USDC on any supported network.
41
41
  *
@@ -43,7 +43,7 @@ export declare function formatPaymentOption(option: {
43
43
  * @param walletProvider - The wallet provider for network context
44
44
  * @returns True if the asset is USDC, false otherwise
45
45
  */
46
- export declare function isUsdcAsset(asset: string, walletProvider: EvmWalletProvider): boolean;
46
+ export declare function isUsdcAsset(asset: string, walletProvider: WalletProvider): boolean;
47
47
  /**
48
48
  * Converts whole units to atomic units for a given asset.
49
49
  *
@@ -52,4 +52,4 @@ export declare function isUsdcAsset(asset: string, walletProvider: EvmWalletProv
52
52
  * @param walletProvider - The wallet provider for token details lookup
53
53
  * @returns The amount in atomic units as a string, or null if conversion fails
54
54
  */
55
- export declare function convertWholeUnitsToAtomic(wholeUnits: number, asset: string, walletProvider: EvmWalletProvider): Promise<string | null>;
55
+ export declare function convertWholeUnitsToAtomic(wholeUnits: number, asset: string, walletProvider: WalletProvider): Promise<string | null>;
@@ -8,6 +8,14 @@ exports.convertWholeUnitsToAtomic = convertWholeUnitsToAtomic;
8
8
  const utils_1 = require("../erc20/utils");
9
9
  const constants_1 = require("../erc20/constants");
10
10
  const viem_1 = require("viem");
11
+ const wallet_providers_1 = require("../../wallet-providers");
12
+ /**
13
+ * USDC token addresses for Solana networks
14
+ */
15
+ const SOLANA_USDC_ADDRESSES = {
16
+ "solana-devnet": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
17
+ "solana-mainnet": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
18
+ };
11
19
  /**
12
20
  * Converts the internal network ID to the format expected by the x402 protocol.
13
21
  *
@@ -75,7 +83,8 @@ async function formatPaymentOption(option, walletProvider) {
75
83
  // Check if this is an EVM network and we can use ERC20 helpers
76
84
  const walletNetwork = walletProvider.getNetwork();
77
85
  const isEvmNetwork = walletNetwork.protocolFamily === "evm";
78
- if (isEvmNetwork) {
86
+ const isSvmNetwork = walletNetwork.protocolFamily === "svm";
87
+ if (isEvmNetwork && walletProvider instanceof wallet_providers_1.EvmWalletProvider) {
79
88
  const networkId = walletNetwork.networkId;
80
89
  const tokenSymbols = constants_1.TOKEN_ADDRESSES_BY_SYMBOLS[networkId];
81
90
  if (tokenSymbols) {
@@ -99,7 +108,17 @@ async function formatPaymentOption(option, walletProvider) {
99
108
  // If we can't get token details, fall back to raw format
100
109
  }
101
110
  }
102
- // Fallback to original format for non-EVM networks or when token details can't be fetched
111
+ if (isSvmNetwork && walletProvider instanceof wallet_providers_1.SvmWalletProvider) {
112
+ // Check if the asset is USDC on Solana networks
113
+ const networkId = walletNetwork.networkId;
114
+ const usdcAddress = SOLANA_USDC_ADDRESSES[networkId];
115
+ if (usdcAddress && asset === usdcAddress) {
116
+ // USDC has 6 decimals on Solana
117
+ const formattedAmount = (0, viem_1.formatUnits)(BigInt(maxAmountRequired), 6);
118
+ return `${formattedAmount} USDC on ${network} network`;
119
+ }
120
+ }
121
+ // Fallback to original format for non-EVM/SVM networks or when token details can't be fetched
103
122
  return `${asset} ${maxAmountRequired} on ${network} network`;
104
123
  }
105
124
  /**
@@ -112,13 +131,21 @@ async function formatPaymentOption(option, walletProvider) {
112
131
  function isUsdcAsset(asset, walletProvider) {
113
132
  const walletNetwork = walletProvider.getNetwork();
114
133
  const isEvmNetwork = walletNetwork.protocolFamily === "evm";
115
- if (isEvmNetwork) {
134
+ const isSvmNetwork = walletNetwork.protocolFamily === "svm";
135
+ if (isEvmNetwork && walletProvider instanceof wallet_providers_1.EvmWalletProvider) {
116
136
  const networkId = walletNetwork.networkId;
117
137
  const tokenSymbols = constants_1.TOKEN_ADDRESSES_BY_SYMBOLS[networkId];
118
138
  if (tokenSymbols && tokenSymbols.USDC) {
119
139
  return asset.toLowerCase() === tokenSymbols.USDC.toLowerCase();
120
140
  }
121
141
  }
142
+ if (isSvmNetwork && walletProvider instanceof wallet_providers_1.SvmWalletProvider) {
143
+ const networkId = walletNetwork.networkId;
144
+ const usdcAddress = SOLANA_USDC_ADDRESSES[networkId];
145
+ if (usdcAddress) {
146
+ return asset === usdcAddress;
147
+ }
148
+ }
122
149
  return false;
123
150
  }
124
151
  /**
@@ -133,7 +160,8 @@ async function convertWholeUnitsToAtomic(wholeUnits, asset, walletProvider) {
133
160
  // Check if this is an EVM network and we can use ERC20 helpers
134
161
  const walletNetwork = walletProvider.getNetwork();
135
162
  const isEvmNetwork = walletNetwork.protocolFamily === "evm";
136
- if (isEvmNetwork) {
163
+ const isSvmNetwork = walletNetwork.protocolFamily === "svm";
164
+ if (isEvmNetwork && walletProvider instanceof wallet_providers_1.EvmWalletProvider) {
137
165
  const networkId = walletNetwork.networkId;
138
166
  const tokenSymbols = constants_1.TOKEN_ADDRESSES_BY_SYMBOLS[networkId];
139
167
  if (tokenSymbols) {
@@ -155,6 +183,15 @@ async function convertWholeUnitsToAtomic(wholeUnits, asset, walletProvider) {
155
183
  // If we can't get token details, fall back to assuming 18 decimals
156
184
  }
157
185
  }
158
- // Fallback to 18 decimals for unknown tokens or non-EVM networks
186
+ if (isSvmNetwork && walletProvider instanceof wallet_providers_1.SvmWalletProvider) {
187
+ // Check if the asset is USDC on Solana networks
188
+ const networkId = walletNetwork.networkId;
189
+ const usdcAddress = SOLANA_USDC_ADDRESSES[networkId];
190
+ if (usdcAddress && asset === usdcAddress) {
191
+ // USDC has 6 decimals on Solana
192
+ return (0, viem_1.parseUnits)(wholeUnits.toString(), 6).toString();
193
+ }
194
+ }
195
+ // Fallback to 18 decimals for unknown tokens or non-EVM/SVM networks
159
196
  return (0, viem_1.parseUnits)(wholeUnits.toString(), 18).toString();
160
197
  }
@@ -2,11 +2,11 @@ import { z } from "zod";
2
2
  import { ActionProvider } from "../actionProvider";
3
3
  import { Network } from "../../network";
4
4
  import { HttpRequestSchema, RetryWithX402Schema, DirectX402RequestSchema, ListX402ServicesSchema } from "./schemas";
5
- import { EvmWalletProvider } from "../../wallet-providers";
5
+ import { WalletProvider } from "../../wallet-providers";
6
6
  /**
7
7
  * X402ActionProvider provides actions for making HTTP requests, with optional x402 payment handling.
8
8
  */
9
- export declare class X402ActionProvider extends ActionProvider<EvmWalletProvider> {
9
+ export declare class X402ActionProvider extends ActionProvider<WalletProvider> {
10
10
  /**
11
11
  * Creates a new instance of X402ActionProvider.
12
12
  * Initializes the provider with x402 capabilities.
@@ -19,7 +19,7 @@ export declare class X402ActionProvider extends ActionProvider<EvmWalletProvider
19
19
  * @param args - Optional filters: maxUsdcPrice
20
20
  * @returns JSON string with the list of services (filtered by network and description)
21
21
  */
22
- discoverX402Services(walletProvider: EvmWalletProvider, args: z.infer<typeof ListX402ServicesSchema>): Promise<string>;
22
+ discoverX402Services(walletProvider: WalletProvider, args: z.infer<typeof ListX402ServicesSchema>): Promise<string>;
23
23
  /**
24
24
  * Makes a basic HTTP request to an API endpoint.
25
25
  *
@@ -27,7 +27,7 @@ export declare class X402ActionProvider extends ActionProvider<EvmWalletProvider
27
27
  * @param args - The request parameters including URL, method, headers, and body
28
28
  * @returns A JSON string containing the response or error details
29
29
  */
30
- makeHttpRequest(walletProvider: EvmWalletProvider, args: z.infer<typeof HttpRequestSchema>): Promise<string>;
30
+ makeHttpRequest(walletProvider: WalletProvider, args: z.infer<typeof HttpRequestSchema>): Promise<string>;
31
31
  /**
32
32
  * Retries a request with x402 payment after receiving a 402 response.
33
33
  *
@@ -35,7 +35,7 @@ export declare class X402ActionProvider extends ActionProvider<EvmWalletProvider
35
35
  * @param args - The request parameters including URL, method, headers, body, and payment option
36
36
  * @returns A JSON string containing the response with payment details or error information
37
37
  */
38
- retryWithX402(walletProvider: EvmWalletProvider, args: z.infer<typeof RetryWithX402Schema>): Promise<string>;
38
+ retryWithX402(walletProvider: WalletProvider, args: z.infer<typeof RetryWithX402Schema>): Promise<string>;
39
39
  /**
40
40
  * Makes an HTTP request with automatic x402 payment handling.
41
41
  *
@@ -43,7 +43,7 @@ export declare class X402ActionProvider extends ActionProvider<EvmWalletProvider
43
43
  * @param args - The request parameters including URL, method, headers, and body
44
44
  * @returns A JSON string containing the response with optional payment details or error information
45
45
  */
46
- makeHttpRequestWithX402(walletProvider: EvmWalletProvider, args: z.infer<typeof DirectX402RequestSchema>): Promise<string>;
46
+ makeHttpRequestWithX402(walletProvider: WalletProvider, args: z.infer<typeof DirectX402RequestSchema>): Promise<string>;
47
47
  /**
48
48
  * Checks if the action provider supports the given network.
49
49
  *