n8n-nodes-coinbase-cdp-agentkit 0.1.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 (98) hide show
  1. package/README.md +703 -0
  2. package/dist/credentials/CoinbaseCdpApi.credentials.d.ts +8 -0
  3. package/dist/credentials/CoinbaseCdpApi.credentials.d.ts.map +1 -0
  4. package/dist/credentials/CoinbaseCdpApi.credentials.js +37 -0
  5. package/dist/credentials/CoinbaseCdpApi.credentials.js.map +1 -0
  6. package/dist/icons/coinbase.svg +4 -0
  7. package/dist/nodes/CoinbaseAgentTool/CoinbaseAgentTool.node.d.ts +6 -0
  8. package/dist/nodes/CoinbaseAgentTool/CoinbaseAgentTool.node.d.ts.map +1 -0
  9. package/dist/nodes/CoinbaseAgentTool/CoinbaseAgentTool.node.js +110 -0
  10. package/dist/nodes/CoinbaseAgentTool/CoinbaseAgentTool.node.js.map +1 -0
  11. package/dist/nodes/CoinbaseAgentTool/CoinbaseAgentTool.node.json +17 -0
  12. package/dist/nodes/CoinbaseAgentTool/actions/erc20Balance.d.ts +3 -0
  13. package/dist/nodes/CoinbaseAgentTool/actions/erc20Balance.d.ts.map +1 -0
  14. package/dist/nodes/CoinbaseAgentTool/actions/erc20Balance.js +46 -0
  15. package/dist/nodes/CoinbaseAgentTool/actions/erc20Balance.js.map +1 -0
  16. package/dist/nodes/CoinbaseAgentTool/actions/erc20Transfer.d.ts +3 -0
  17. package/dist/nodes/CoinbaseAgentTool/actions/erc20Transfer.d.ts.map +1 -0
  18. package/dist/nodes/CoinbaseAgentTool/actions/erc20Transfer.js +44 -0
  19. package/dist/nodes/CoinbaseAgentTool/actions/erc20Transfer.js.map +1 -0
  20. package/dist/nodes/CoinbaseAgentTool/actions/getSwapPrice.d.ts +3 -0
  21. package/dist/nodes/CoinbaseAgentTool/actions/getSwapPrice.d.ts.map +1 -0
  22. package/dist/nodes/CoinbaseAgentTool/actions/getSwapPrice.js +57 -0
  23. package/dist/nodes/CoinbaseAgentTool/actions/getSwapPrice.js.map +1 -0
  24. package/dist/nodes/CoinbaseAgentTool/actions/nativeTransfer.d.ts +3 -0
  25. package/dist/nodes/CoinbaseAgentTool/actions/nativeTransfer.d.ts.map +1 -0
  26. package/dist/nodes/CoinbaseAgentTool/actions/nativeTransfer.js +41 -0
  27. package/dist/nodes/CoinbaseAgentTool/actions/nativeTransfer.js.map +1 -0
  28. package/dist/nodes/CoinbaseAgentTool/actions/requestFaucet.d.ts +3 -0
  29. package/dist/nodes/CoinbaseAgentTool/actions/requestFaucet.d.ts.map +1 -0
  30. package/dist/nodes/CoinbaseAgentTool/actions/requestFaucet.js +50 -0
  31. package/dist/nodes/CoinbaseAgentTool/actions/requestFaucet.js.map +1 -0
  32. package/dist/nodes/CoinbaseAgentTool/actions/swap.d.ts +3 -0
  33. package/dist/nodes/CoinbaseAgentTool/actions/swap.d.ts.map +1 -0
  34. package/dist/nodes/CoinbaseAgentTool/actions/swap.js +49 -0
  35. package/dist/nodes/CoinbaseAgentTool/actions/swap.js.map +1 -0
  36. package/dist/nodes/CoinbaseAgentTool/actions/walletDetails.d.ts +3 -0
  37. package/dist/nodes/CoinbaseAgentTool/actions/walletDetails.d.ts.map +1 -0
  38. package/dist/nodes/CoinbaseAgentTool/actions/walletDetails.js +25 -0
  39. package/dist/nodes/CoinbaseAgentTool/actions/walletDetails.js.map +1 -0
  40. package/dist/nodes/CoinbaseAgentTool/coinbase.svg +4 -0
  41. package/dist/nodes/CoinbaseCdp/CoinbaseCdp.node.d.ts +6 -0
  42. package/dist/nodes/CoinbaseCdp/CoinbaseCdp.node.d.ts.map +1 -0
  43. package/dist/nodes/CoinbaseCdp/CoinbaseCdp.node.js +97 -0
  44. package/dist/nodes/CoinbaseCdp/CoinbaseCdp.node.js.map +1 -0
  45. package/dist/nodes/CoinbaseCdp/CoinbaseCdp.node.json +17 -0
  46. package/dist/nodes/CoinbaseCdp/coinbase.svg +4 -0
  47. package/dist/nodes/CoinbaseCdp/resources/account.d.ts +29 -0
  48. package/dist/nodes/CoinbaseCdp/resources/account.d.ts.map +1 -0
  49. package/dist/nodes/CoinbaseCdp/resources/account.js +119 -0
  50. package/dist/nodes/CoinbaseCdp/resources/account.js.map +1 -0
  51. package/dist/nodes/CoinbaseCdp/resources/balance.d.ts +12 -0
  52. package/dist/nodes/CoinbaseCdp/resources/balance.d.ts.map +1 -0
  53. package/dist/nodes/CoinbaseCdp/resources/balance.js +60 -0
  54. package/dist/nodes/CoinbaseCdp/resources/balance.js.map +1 -0
  55. package/dist/nodes/CoinbaseCdp/resources/policy.d.ts +13 -0
  56. package/dist/nodes/CoinbaseCdp/resources/policy.d.ts.map +1 -0
  57. package/dist/nodes/CoinbaseCdp/resources/policy.js +95 -0
  58. package/dist/nodes/CoinbaseCdp/resources/policy.js.map +1 -0
  59. package/dist/nodes/CoinbaseCdp/resources/smartAccount.d.ts +10 -0
  60. package/dist/nodes/CoinbaseCdp/resources/smartAccount.d.ts.map +1 -0
  61. package/dist/nodes/CoinbaseCdp/resources/smartAccount.js +56 -0
  62. package/dist/nodes/CoinbaseCdp/resources/smartAccount.js.map +1 -0
  63. package/dist/nodes/CoinbaseCdp/resources/solanaAccount.d.ts +17 -0
  64. package/dist/nodes/CoinbaseCdp/resources/solanaAccount.d.ts.map +1 -0
  65. package/dist/nodes/CoinbaseCdp/resources/solanaAccount.js +75 -0
  66. package/dist/nodes/CoinbaseCdp/resources/solanaAccount.js.map +1 -0
  67. package/dist/nodes/CoinbaseCdp/resources/swap.d.ts +32 -0
  68. package/dist/nodes/CoinbaseCdp/resources/swap.d.ts.map +1 -0
  69. package/dist/nodes/CoinbaseCdp/resources/swap.js +124 -0
  70. package/dist/nodes/CoinbaseCdp/resources/swap.js.map +1 -0
  71. package/dist/nodes/CoinbaseCdp/resources/transfer.d.ts +12 -0
  72. package/dist/nodes/CoinbaseCdp/resources/transfer.d.ts.map +1 -0
  73. package/dist/nodes/CoinbaseCdp/resources/transfer.js +116 -0
  74. package/dist/nodes/CoinbaseCdp/resources/transfer.js.map +1 -0
  75. package/dist/nodes/CoinbaseTrigger/CoinbaseTrigger.node.d.ts +6 -0
  76. package/dist/nodes/CoinbaseTrigger/CoinbaseTrigger.node.d.ts.map +1 -0
  77. package/dist/nodes/CoinbaseTrigger/CoinbaseTrigger.node.js +106 -0
  78. package/dist/nodes/CoinbaseTrigger/CoinbaseTrigger.node.js.map +1 -0
  79. package/dist/nodes/CoinbaseTrigger/CoinbaseTrigger.node.json +17 -0
  80. package/dist/nodes/CoinbaseTrigger/coinbase.svg +4 -0
  81. package/dist/shared/cdpClientFactory.d.ts +6 -0
  82. package/dist/shared/cdpClientFactory.d.ts.map +1 -0
  83. package/dist/shared/cdpClientFactory.js +13 -0
  84. package/dist/shared/cdpClientFactory.js.map +1 -0
  85. package/dist/shared/networkOptions.d.ts +7 -0
  86. package/dist/shared/networkOptions.d.ts.map +1 -0
  87. package/dist/shared/networkOptions.js +36 -0
  88. package/dist/shared/networkOptions.js.map +1 -0
  89. package/dist/shared/toolFactory.d.ts +10 -0
  90. package/dist/shared/toolFactory.d.ts.map +1 -0
  91. package/dist/shared/toolFactory.js +21 -0
  92. package/dist/shared/toolFactory.js.map +1 -0
  93. package/dist/shared/types.d.ts +34 -0
  94. package/dist/shared/types.d.ts.map +1 -0
  95. package/dist/shared/types.js +3 -0
  96. package/dist/shared/types.js.map +1 -0
  97. package/dist/src/icons/coinbase.svg +4 -0
  98. package/package.json +78 -0
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.solanaAccountOperations = void 0;
4
+ exports.executeSolanaAccountOperation = executeSolanaAccountOperation;
5
+ exports.solanaAccountOperations = [
6
+ {
7
+ displayName: 'Operation',
8
+ name: 'operation',
9
+ type: 'options',
10
+ noDataExpression: true,
11
+ displayOptions: { show: { resource: ['solanaAccount'] } },
12
+ default: 'getOrCreate',
13
+ options: [
14
+ {
15
+ name: 'Get or Create',
16
+ value: 'getOrCreate',
17
+ description: 'Get an existing Solana account by name, or create one',
18
+ action: 'Get or create a Solana account',
19
+ },
20
+ {
21
+ name: 'Request Faucet',
22
+ value: 'requestFaucet',
23
+ description: 'Request Solana devnet tokens from faucet',
24
+ action: 'Request Solana devnet tokens',
25
+ },
26
+ ],
27
+ },
28
+ {
29
+ displayName: 'Account Name',
30
+ name: 'accountName',
31
+ type: 'string',
32
+ default: '',
33
+ required: true,
34
+ displayOptions: { show: { resource: ['solanaAccount'], operation: ['getOrCreate'] } },
35
+ description: 'Unique name for the Solana account',
36
+ },
37
+ {
38
+ displayName: 'Address',
39
+ name: 'address',
40
+ type: 'string',
41
+ default: '',
42
+ required: true,
43
+ displayOptions: { show: { resource: ['solanaAccount'], operation: ['requestFaucet'] } },
44
+ description: 'The Solana wallet address',
45
+ },
46
+ {
47
+ displayName: 'Token',
48
+ name: 'faucetToken',
49
+ type: 'options',
50
+ default: 'sol',
51
+ displayOptions: { show: { resource: ['solanaAccount'], operation: ['requestFaucet'] } },
52
+ options: [
53
+ { name: 'SOL', value: 'sol' },
54
+ { name: 'USDC', value: 'usdc' },
55
+ ],
56
+ },
57
+ ];
58
+ async function executeSolanaAccountOperation(context, cdp, operation, i) {
59
+ if (operation === 'getOrCreate') {
60
+ const name = context.getNodeParameter('accountName', i);
61
+ const account = await cdp.solana.getOrCreateAccount({ name });
62
+ return { address: account.address, name };
63
+ }
64
+ if (operation === 'requestFaucet') {
65
+ const address = context.getNodeParameter('address', i);
66
+ const token = context.getNodeParameter('faucetToken', i);
67
+ const result = await cdp.solana.requestFaucet({
68
+ address,
69
+ token: token,
70
+ });
71
+ return { signature: result.signature, address, token, network: 'solana-devnet' };
72
+ }
73
+ throw new Error(`Unknown solanaAccount operation: ${operation}`);
74
+ }
75
+ //# sourceMappingURL=solanaAccount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solanaAccount.js","sourceRoot":"","sources":["../../../../src/nodes/CoinbaseCdp/resources/solanaAccount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { INodeProperties, IExecuteFunctions } from 'n8n-workflow';
2
+ import type { CdpClient } from '@coinbase/cdp-sdk';
3
+ export declare const swapOperations: INodeProperties[];
4
+ export declare function executeSwapOperation(context: IExecuteFunctions, cdp: CdpClient, operation: string, i: number): Promise<{
5
+ transactionHash: `0x${string}`;
6
+ from: `0x${string}`;
7
+ fromToken: string;
8
+ toToken: string;
9
+ fromAmount: string;
10
+ network: string;
11
+ liquidityAvailable?: undefined;
12
+ toAmount?: undefined;
13
+ } | {
14
+ liquidityAvailable: boolean;
15
+ fromToken: string;
16
+ toToken: string;
17
+ fromAmount: string;
18
+ network: string;
19
+ transactionHash?: undefined;
20
+ from?: undefined;
21
+ toAmount?: undefined;
22
+ } | {
23
+ liquidityAvailable: boolean;
24
+ toAmount: bigint;
25
+ fromToken: string;
26
+ toToken: string;
27
+ fromAmount: string;
28
+ network: string;
29
+ transactionHash?: undefined;
30
+ from?: undefined;
31
+ }>;
32
+ //# sourceMappingURL=swap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.d.ts","sourceRoot":"","sources":["../../../../src/nodes/CoinbaseCdp/resources/swap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,eAAO,MAAM,cAAc,EAAE,eAAe,EAmE3C,CAAC;AAEF,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsDT"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.swapOperations = void 0;
4
+ exports.executeSwapOperation = executeSwapOperation;
5
+ const networkOptions_1 = require("../../../shared/networkOptions");
6
+ exports.swapOperations = [
7
+ {
8
+ displayName: 'Operation',
9
+ name: 'operation',
10
+ type: 'options',
11
+ noDataExpression: true,
12
+ displayOptions: { show: { resource: ['swap'] } },
13
+ default: 'execute',
14
+ options: [
15
+ {
16
+ name: 'Execute Swap',
17
+ value: 'execute',
18
+ description: 'Swap one token for another',
19
+ action: 'Execute a token swap',
20
+ },
21
+ {
22
+ name: 'Get Quote',
23
+ value: 'quote',
24
+ description: 'Get a swap quote without executing',
25
+ action: 'Get swap quote',
26
+ },
27
+ ],
28
+ },
29
+ {
30
+ displayName: 'Account Name',
31
+ name: 'accountName',
32
+ type: 'string',
33
+ default: '',
34
+ required: true,
35
+ displayOptions: { show: { resource: ['swap'] } },
36
+ description: 'Name of the account performing the swap',
37
+ },
38
+ {
39
+ displayName: 'From Token',
40
+ name: 'fromToken',
41
+ type: 'string',
42
+ default: '',
43
+ required: true,
44
+ displayOptions: { show: { resource: ['swap'] } },
45
+ description: 'Token to swap from - symbol (e.g. "eth") or contract address (0x...)',
46
+ },
47
+ {
48
+ displayName: 'To Token',
49
+ name: 'toToken',
50
+ type: 'string',
51
+ default: '',
52
+ required: true,
53
+ displayOptions: { show: { resource: ['swap'] } },
54
+ description: 'Token to swap to - symbol (e.g. "usdc") or contract address (0x...)',
55
+ },
56
+ {
57
+ displayName: 'Amount',
58
+ name: 'fromAmount',
59
+ type: 'string',
60
+ default: '',
61
+ required: true,
62
+ displayOptions: { show: { resource: ['swap'] } },
63
+ description: 'Amount of source token in human-readable units',
64
+ },
65
+ {
66
+ displayName: 'Network',
67
+ name: 'network',
68
+ type: 'options',
69
+ default: 'base-sepolia',
70
+ displayOptions: { show: { resource: ['swap'] } },
71
+ options: networkOptions_1.swapNetworkOptions,
72
+ },
73
+ ];
74
+ async function executeSwapOperation(context, cdp, operation, i) {
75
+ const accountName = context.getNodeParameter('accountName', i);
76
+ const fromToken = context.getNodeParameter('fromToken', i);
77
+ const toToken = context.getNodeParameter('toToken', i);
78
+ const fromAmount = context.getNodeParameter('fromAmount', i);
79
+ const network = context.getNodeParameter('network', i);
80
+ const account = await cdp.evm.getOrCreateAccount({ name: accountName });
81
+ if (operation === 'execute') {
82
+ const result = await account.swap({
83
+ fromToken: fromToken,
84
+ toToken: toToken,
85
+ fromAmount: fromAmount,
86
+ network: network,
87
+ });
88
+ return {
89
+ transactionHash: result.transactionHash,
90
+ from: account.address,
91
+ fromToken,
92
+ toToken,
93
+ fromAmount,
94
+ network,
95
+ };
96
+ }
97
+ if (operation === 'quote') {
98
+ const quote = await account.quoteSwap({
99
+ fromToken: fromToken,
100
+ toToken: toToken,
101
+ fromAmount: fromAmount,
102
+ network: network,
103
+ });
104
+ if (!quote.liquidityAvailable) {
105
+ return {
106
+ liquidityAvailable: false,
107
+ fromToken,
108
+ toToken,
109
+ fromAmount,
110
+ network,
111
+ };
112
+ }
113
+ return {
114
+ liquidityAvailable: true,
115
+ toAmount: quote.toAmount,
116
+ fromToken,
117
+ toToken,
118
+ fromAmount,
119
+ network,
120
+ };
121
+ }
122
+ throw new Error(`Unknown swap operation: ${operation}`);
123
+ }
124
+ //# sourceMappingURL=swap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swap.js","sourceRoot":"","sources":["../../../../src/nodes/CoinbaseCdp/resources/swap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { INodeProperties, IExecuteFunctions } from 'n8n-workflow';
2
+ import type { CdpClient } from '@coinbase/cdp-sdk';
3
+ export declare const transferOperations: INodeProperties[];
4
+ export declare function executeTransferOperation(context: IExecuteFunctions, cdp: CdpClient, operation: string, i: number): Promise<{
5
+ transactionHash: `0x${string}`;
6
+ from: `0x${string}`;
7
+ to: string;
8
+ amount: string;
9
+ token: string;
10
+ network: string;
11
+ }>;
12
+ //# sourceMappingURL=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../src/nodes/CoinbaseCdp/resources/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAmE/C,CAAC;AAEF,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,MAAM,EACjB,CAAC,EAAE,MAAM;;;;;;;GA6CT"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transferOperations = void 0;
4
+ exports.executeTransferOperation = executeTransferOperation;
5
+ const cdp_sdk_1 = require("@coinbase/cdp-sdk");
6
+ const networkOptions_1 = require("../../../shared/networkOptions");
7
+ exports.transferOperations = [
8
+ {
9
+ displayName: 'Operation',
10
+ name: 'operation',
11
+ type: 'options',
12
+ noDataExpression: true,
13
+ displayOptions: { show: { resource: ['transfer'] } },
14
+ default: 'sendNative',
15
+ options: [
16
+ {
17
+ name: 'Send Native Token',
18
+ value: 'sendNative',
19
+ description: 'Transfer native cryptocurrency (ETH, etc.)',
20
+ action: 'Send native token',
21
+ },
22
+ {
23
+ name: 'Send ERC-20 Token',
24
+ value: 'sendErc20',
25
+ description: 'Transfer an ERC-20 token (USDC, DAI, etc.)',
26
+ action: 'Send ERC-20 token',
27
+ },
28
+ ],
29
+ },
30
+ {
31
+ displayName: 'Sender Account Name',
32
+ name: 'accountName',
33
+ type: 'string',
34
+ default: '',
35
+ required: true,
36
+ displayOptions: { show: { resource: ['transfer'] } },
37
+ description: 'Name of the sending account',
38
+ },
39
+ {
40
+ displayName: 'Recipient Address',
41
+ name: 'to',
42
+ type: 'string',
43
+ default: '',
44
+ required: true,
45
+ displayOptions: { show: { resource: ['transfer'] } },
46
+ description: 'Destination wallet address (0x...)',
47
+ },
48
+ {
49
+ displayName: 'Amount',
50
+ name: 'amount',
51
+ type: 'string',
52
+ default: '',
53
+ required: true,
54
+ displayOptions: { show: { resource: ['transfer'] } },
55
+ description: 'Amount to send in human-readable units (e.g. "0.01")',
56
+ },
57
+ {
58
+ displayName: 'Token',
59
+ name: 'token',
60
+ type: 'string',
61
+ default: 'usdc',
62
+ required: true,
63
+ displayOptions: { show: { resource: ['transfer'], operation: ['sendErc20'] } },
64
+ description: 'Token symbol (e.g. "usdc") or contract address (0x...)',
65
+ },
66
+ {
67
+ displayName: 'Network',
68
+ name: 'network',
69
+ type: 'options',
70
+ default: 'base-sepolia',
71
+ displayOptions: { show: { resource: ['transfer'] } },
72
+ options: networkOptions_1.evmNetworkOptions,
73
+ },
74
+ ];
75
+ async function executeTransferOperation(context, cdp, operation, i) {
76
+ const accountName = context.getNodeParameter('accountName', i);
77
+ const to = context.getNodeParameter('to', i);
78
+ const amount = context.getNodeParameter('amount', i);
79
+ const network = context.getNodeParameter('network', i);
80
+ const account = await cdp.evm.getOrCreateAccount({ name: accountName });
81
+ if (operation === 'sendNative') {
82
+ const result = await account.transfer({
83
+ to: to,
84
+ amount: (0, cdp_sdk_1.parseEther)(amount),
85
+ token: 'eth',
86
+ network: network,
87
+ });
88
+ return {
89
+ transactionHash: result.transactionHash,
90
+ from: account.address,
91
+ to,
92
+ amount,
93
+ token: 'eth',
94
+ network,
95
+ };
96
+ }
97
+ if (operation === 'sendErc20') {
98
+ const token = context.getNodeParameter('token', i);
99
+ const result = await account.transfer({
100
+ to: to,
101
+ amount: amount,
102
+ token: token,
103
+ network: network,
104
+ });
105
+ return {
106
+ transactionHash: result.transactionHash,
107
+ from: account.address,
108
+ to,
109
+ amount,
110
+ token,
111
+ network,
112
+ };
113
+ }
114
+ throw new Error(`Unknown transfer operation: ${operation}`);
115
+ }
116
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../../src/nodes/CoinbaseCdp/resources/transfer.ts"],"names":[],"mappings":";;;AA0EA,4DAiDC;AAzHD,+CAA+C;AAC/C,mEAAmE;AAEtD,QAAA,kBAAkB,GAAsB;IACpD;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE;QACpD,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,YAAY;gBACnB,WAAW,EAAE,4CAA4C;gBACzD,MAAM,EAAE,mBAAmB;aAC3B;YACD;gBACC,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,4CAA4C;gBACzD,MAAM,EAAE,mBAAmB;aAC3B;SACD;KACD;IACD;QACC,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE;QACpD,WAAW,EAAE,6BAA6B;KAC1C;IACD;QACC,WAAW,EAAE,mBAAmB;QAChC,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE;QACpD,WAAW,EAAE,oCAAoC;KACjD;IACD;QACC,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE;QACpD,WAAW,EAAE,sDAAsD;KACnE;IACD;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,IAAI;QACd,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE;QAC9E,WAAW,EAAE,wDAAwD;KACrE;IACD;QACC,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,cAAc;QACvB,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE;QACpD,OAAO,EAAE,kCAAiB;KAC1B;CACD,CAAC;AAEK,KAAK,UAAU,wBAAwB,CAC7C,OAA0B,EAC1B,GAAc,EACd,SAAiB,EACjB,CAAS;IAET,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAW,CAAC;IACzE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAW,CAAC;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAW,CAAC;IAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAW,CAAC;IAEjE,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAExE,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YACrC,EAAE,EAAE,EAAmB;YACvB,MAAM,EAAE,IAAA,oBAAU,EAAC,MAAM,CAAC;YAC1B,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,OAAyB;SAClC,CAAC,CAAC;QACH,OAAO;YACN,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,IAAI,EAAE,OAAO,CAAC,OAAO;YACrB,EAAE;YACF,MAAM;YACN,KAAK,EAAE,KAAK;YACZ,OAAO;SACP,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAW,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC;YACrC,EAAE,EAAE,EAAmB;YACvB,MAAM,EAAE,MAA2B;YACnC,KAAK,EAAE,KAAe;YACtB,OAAO,EAAE,OAAyB;SAClC,CAAC,CAAC;QACH,OAAO;YACN,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,IAAI,EAAE,OAAO,CAAC,OAAO;YACrB,EAAE;YACF,MAAM;YACN,KAAK;YACL,OAAO;SACP,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { IPollFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class CoinbaseTrigger implements INodeType {
3
+ description: INodeTypeDescription;
4
+ poll(this: IPollFunctions): Promise<INodeExecutionData[][] | null>;
5
+ }
6
+ //# sourceMappingURL=CoinbaseTrigger.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoinbaseTrigger.node.d.ts","sourceRoot":"","sources":["../../../src/nodes/CoinbaseTrigger/CoinbaseTrigger.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAItB,qBAAa,eAAgB,YAAW,SAAS;IAChD,WAAW,EAAE,oBAAoB,CAkD/B;IAEI,IAAI,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,GAAG,IAAI,CAAC;CAuDxE"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CoinbaseTrigger = void 0;
4
+ const cdpClientFactory_1 = require("../../shared/cdpClientFactory");
5
+ const networkOptions_1 = require("../../shared/networkOptions");
6
+ class CoinbaseTrigger {
7
+ description = {
8
+ displayName: 'Coinbase CDP Trigger',
9
+ name: 'coinbaseTrigger',
10
+ icon: 'file:coinbase.svg',
11
+ group: ['trigger'],
12
+ version: 1,
13
+ subtitle: '={{$parameter["event"]}}',
14
+ description: 'Triggers workflow on Coinbase CDP balance changes',
15
+ defaults: {
16
+ name: 'Coinbase CDP Trigger',
17
+ },
18
+ polling: true,
19
+ inputs: [],
20
+ outputs: ['main'],
21
+ credentials: [
22
+ {
23
+ name: 'coinbaseCdpApi',
24
+ required: true,
25
+ },
26
+ ],
27
+ properties: [
28
+ {
29
+ displayName: 'Event',
30
+ name: 'event',
31
+ type: 'options',
32
+ default: 'balanceChanged',
33
+ options: [
34
+ {
35
+ name: 'Balance Changed',
36
+ value: 'balanceChanged',
37
+ description: 'Trigger when any token balance changes for the address',
38
+ },
39
+ ],
40
+ },
41
+ {
42
+ displayName: 'Address',
43
+ name: 'address',
44
+ type: 'string',
45
+ default: '',
46
+ required: true,
47
+ description: 'The EVM wallet address to monitor (0x...)',
48
+ },
49
+ {
50
+ displayName: 'Network',
51
+ name: 'network',
52
+ type: 'options',
53
+ default: 'base-sepolia',
54
+ options: networkOptions_1.evmNetworkOptions,
55
+ },
56
+ ],
57
+ };
58
+ async poll() {
59
+ const address = this.getNodeParameter('address');
60
+ const network = this.getNodeParameter('network');
61
+ const cdp = await (0, cdpClientFactory_1.getCdpClient)(this);
62
+ const result = await cdp.evm.listTokenBalances({
63
+ address: address,
64
+ network: network,
65
+ });
66
+ const currentBalances = {};
67
+ for (const b of result.balances) {
68
+ const key = b.token.symbol || b.token.contractAddress || 'unknown';
69
+ currentBalances[key] = String(b.amount);
70
+ }
71
+ const lastBalances = this.getWorkflowStaticData('node')
72
+ .lastBalances;
73
+ // Store current state for next poll
74
+ this.getWorkflowStaticData('node').lastBalances =
75
+ currentBalances;
76
+ // First run - store baseline, don't trigger
77
+ if (!lastBalances) {
78
+ return null;
79
+ }
80
+ // Compare balances
81
+ const changes = [];
82
+ const allTokens = new Set([...Object.keys(lastBalances), ...Object.keys(currentBalances)]);
83
+ for (const token of allTokens) {
84
+ const prev = lastBalances[token] || '0';
85
+ const curr = currentBalances[token] || '0';
86
+ if (prev !== curr) {
87
+ changes.push({ token, previousBalance: prev, currentBalance: curr });
88
+ }
89
+ }
90
+ if (changes.length === 0) {
91
+ return null;
92
+ }
93
+ return [
94
+ changes.map((change) => ({
95
+ json: {
96
+ address,
97
+ network,
98
+ ...change,
99
+ timestamp: new Date().toISOString(),
100
+ },
101
+ })),
102
+ ];
103
+ }
104
+ }
105
+ exports.CoinbaseTrigger = CoinbaseTrigger;
106
+ //# sourceMappingURL=CoinbaseTrigger.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoinbaseTrigger.node.js","sourceRoot":"","sources":["../../../src/nodes/CoinbaseTrigger/CoinbaseTrigger.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ {
2
+ "node": "n8n-nodes-coinbase-cdp.coinbaseTrigger",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["Finance & Accounting"],
6
+ "subcategories": {
7
+ "Finance & Accounting": ["Cryptocurrency"]
8
+ },
9
+ "resources": {
10
+ "primaryDocumentation": [
11
+ {
12
+ "url": "https://docs.cdp.coinbase.com/"
13
+ }
14
+ ]
15
+ },
16
+ "alias": ["coinbase", "cdp", "blockchain", "wallet", "crypto", "monitor", "balance"]
17
+ }
@@ -0,0 +1,4 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 56 56" fill="none">
2
+ <path d="M28 56C43.464 56 56 43.464 56 28C56 12.536 43.464 0 28 0C12.536 0 0 12.536 0 28C0 43.464 12.536 56 28 56Z" fill="#0052FF"/>
3
+ <path d="M28 10C18.059 10 10 18.059 10 28C10 37.941 18.059 46 28 46C37.941 46 46 37.941 46 28C46 18.059 37.941 10 28 10ZM23.5 33.5C22.672 33.5 22 32.828 22 32V24C22 23.172 22.672 22.5 23.5 22.5H32.5C33.328 22.5 34 23.172 34 24V32C34 32.828 33.328 33.5 32.5 33.5H23.5Z" fill="white"/>
4
+ </svg>
@@ -0,0 +1,6 @@
1
+ import { CdpClient } from '@coinbase/cdp-sdk';
2
+ import type { IExecuteFunctions, ISupplyDataFunctions, IPollFunctions } from 'n8n-workflow';
3
+ type CredentialContext = IExecuteFunctions | ISupplyDataFunctions | IPollFunctions;
4
+ export declare function getCdpClient(context: CredentialContext): Promise<CdpClient>;
5
+ export {};
6
+ //# sourceMappingURL=cdpClientFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdpClientFactory.d.ts","sourceRoot":"","sources":["../../src/shared/cdpClientFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE5F,KAAK,iBAAiB,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,cAAc,CAAC;AAEnF,wBAAsB,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,CAQjF"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCdpClient = getCdpClient;
4
+ const cdp_sdk_1 = require("@coinbase/cdp-sdk");
5
+ async function getCdpClient(context) {
6
+ const credentials = await context.getCredentials('coinbaseCdpApi');
7
+ return new cdp_sdk_1.CdpClient({
8
+ apiKeyId: credentials.apiKeyId,
9
+ apiKeySecret: credentials.apiKeySecret,
10
+ walletSecret: credentials.walletSecret || undefined,
11
+ });
12
+ }
13
+ //# sourceMappingURL=cdpClientFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdpClientFactory.js","sourceRoot":"","sources":["../../src/shared/cdpClientFactory.ts"],"names":[],"mappings":";;AAKA,oCAQC;AAbD,+CAA8C;AAKvC,KAAK,UAAU,YAAY,CAAC,OAA0B;IAC5D,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEnE,OAAO,IAAI,mBAAS,CAAC;QACpB,QAAQ,EAAE,WAAW,CAAC,QAAkB;QACxC,YAAY,EAAE,WAAW,CAAC,YAAsB;QAChD,YAAY,EAAG,WAAW,CAAC,YAAuB,IAAI,SAAS;KAC/D,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { INodePropertyOptions } from 'n8n-workflow';
2
+ export declare const evmNetworkOptions: INodePropertyOptions[];
3
+ export declare const solanaNetworkOptions: INodePropertyOptions[];
4
+ export declare const swapNetworkOptions: INodePropertyOptions[];
5
+ export declare const faucetNetworkOptions: INodePropertyOptions[];
6
+ export declare const faucetTokenOptions: INodePropertyOptions[];
7
+ //# sourceMappingURL=networkOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkOptions.d.ts","sourceRoot":"","sources":["../../src/shared/networkOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEzD,eAAO,MAAM,iBAAiB,EAAE,oBAAoB,EAWnD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,EAGtD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,oBAAoB,EAKpD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,EAItD,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,oBAAoB,EAIpD,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.faucetTokenOptions = exports.faucetNetworkOptions = exports.swapNetworkOptions = exports.solanaNetworkOptions = exports.evmNetworkOptions = void 0;
4
+ exports.evmNetworkOptions = [
5
+ { name: 'Base', value: 'base' },
6
+ { name: 'Base Sepolia (Testnet)', value: 'base-sepolia' },
7
+ { name: 'Ethereum', value: 'ethereum' },
8
+ { name: 'Ethereum Sepolia (Testnet)', value: 'ethereum-sepolia' },
9
+ { name: 'Arbitrum', value: 'arbitrum' },
10
+ { name: 'Optimism', value: 'optimism' },
11
+ { name: 'Polygon', value: 'polygon' },
12
+ { name: 'BNB Chain', value: 'bnb' },
13
+ { name: 'Avalanche', value: 'avalanche' },
14
+ { name: 'Zora', value: 'zora' },
15
+ ];
16
+ exports.solanaNetworkOptions = [
17
+ { name: 'Solana Mainnet', value: 'solana-mainnet' },
18
+ { name: 'Solana Devnet (Testnet)', value: 'solana-devnet' },
19
+ ];
20
+ exports.swapNetworkOptions = [
21
+ { name: 'Base', value: 'base' },
22
+ { name: 'Base Sepolia (Testnet)', value: 'base-sepolia' },
23
+ { name: 'Ethereum', value: 'ethereum' },
24
+ { name: 'Ethereum Sepolia (Testnet)', value: 'ethereum-sepolia' },
25
+ ];
26
+ exports.faucetNetworkOptions = [
27
+ { name: 'Base Sepolia', value: 'base-sepolia' },
28
+ { name: 'Ethereum Sepolia', value: 'ethereum-sepolia' },
29
+ { name: 'Solana Devnet', value: 'solana-devnet' },
30
+ ];
31
+ exports.faucetTokenOptions = [
32
+ { name: 'ETH', value: 'eth' },
33
+ { name: 'USDC', value: 'usdc' },
34
+ { name: 'SOL', value: 'sol' },
35
+ ];
36
+ //# sourceMappingURL=networkOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkOptions.js","sourceRoot":"","sources":["../../src/shared/networkOptions.ts"],"names":[],"mappings":";;;AAEa,QAAA,iBAAiB,GAA2B;IACxD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,cAAc,EAAE;IACzD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACvC,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACjE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACvC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACvC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE;IACnC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IACzC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CAC/B,CAAC;AAEW,QAAA,oBAAoB,GAA2B;IAC3D,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACnD,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,EAAE;CAC3D,CAAC;AAEW,QAAA,kBAAkB,GAA2B;IACzD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,EAAE,cAAc,EAAE;IACzD,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE;IACvC,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,kBAAkB,EAAE;CACjE,CAAC;AAEW,QAAA,oBAAoB,GAA2B;IAC3D,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;IAC/C,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACvD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,eAAe,EAAE;CACjD,CAAC;AAEW,QAAA,kBAAkB,GAA2B;IACzD,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7B,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;CAC7B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { DynamicStructuredTool } from '@langchain/core/tools';
2
+ interface ToolDefinition {
3
+ name: string;
4
+ description: string;
5
+ schema: any;
6
+ func: (input: Record<string, unknown>) => Promise<string>;
7
+ }
8
+ export declare function createAgentTool(definition: ToolDefinition): DynamicStructuredTool;
9
+ export {};
10
+ //# sourceMappingURL=toolFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolFactory.d.ts","sourceRoot":"","sources":["../../src/shared/toolFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,UAAU,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE,GAAG,CAAC;IACZ,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1D;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,cAAc,GAAG,qBAAqB,CAcjF"}