n8n-nodes-cronos-paytech 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,124 @@
1
+ import { ethers } from 'ethers';
2
+ import { CronosNetwork } from '@crypto.com/facilitator-client';
3
+ export interface PayParams {
4
+ wallet: ethers.Wallet | ethers.HDNodeWallet;
5
+ tokenAddress: string;
6
+ recipient: string;
7
+ amount: string;
8
+ chainId: number;
9
+ provider?: ethers.JsonRpcProvider;
10
+ }
11
+ export interface VerifyParams {
12
+ paymentHeader: string;
13
+ expectedRecipient: string;
14
+ expectedAmount: string;
15
+ network?: CronosNetwork;
16
+ provider?: ethers.JsonRpcProvider;
17
+ wallet?: ethers.Wallet | ethers.HDNodeWallet;
18
+ shouldSettle?: boolean;
19
+ }
20
+ export interface ChallengeParams {
21
+ recipient: string;
22
+ amount: string;
23
+ tokenAddress: string;
24
+ chainId: number;
25
+ }
26
+ export interface NotarizeParams {
27
+ wallet: ethers.Wallet | ethers.HDNodeWallet;
28
+ data: string;
29
+ provider?: ethers.JsonRpcProvider;
30
+ }
31
+ export interface GetEventLogsParams {
32
+ provider: ethers.JsonRpcProvider;
33
+ address: string;
34
+ topics: (string | null)[];
35
+ fromBlock: string | number;
36
+ toBlock: string | number;
37
+ }
38
+ export declare function actionGetEventLogs(params: GetEventLogsParams): Promise<{
39
+ success: boolean;
40
+ logs: {
41
+ transactionHash: string;
42
+ blockNumber: number;
43
+ blockHash: string;
44
+ data: string;
45
+ dataDecimal: string;
46
+ topics: readonly string[];
47
+ args: Record<string, string>;
48
+ address: string;
49
+ timestamp: string;
50
+ }[];
51
+ maxBlockChecked: number;
52
+ lastBlockQueried: number;
53
+ fromBlock: string | number;
54
+ toBlock: string | number;
55
+ warning: string | undefined;
56
+ }>;
57
+ export declare function actionPayFromWallet(params: PayParams): Promise<{
58
+ success: boolean;
59
+ paymentId: any;
60
+ x402Header: string;
61
+ x402HeaderJSON: any;
62
+ message: string;
63
+ txHash: any;
64
+ blockNumber: any;
65
+ }>;
66
+ export declare function actionGenerateChallenge(params: ChallengeParams): {
67
+ status: number;
68
+ challenge: {
69
+ payTo: string;
70
+ maxAmountRequired: string;
71
+ asset: {
72
+ address: string;
73
+ chainId: number;
74
+ name: string;
75
+ version: string;
76
+ verifyingContract: string;
77
+ };
78
+ description: string;
79
+ };
80
+ payTo: string;
81
+ amount: string;
82
+ token: string;
83
+ chainId: number;
84
+ message: string;
85
+ };
86
+ export declare function actionVerifyPayment(params: VerifyParams): Promise<{
87
+ valid: boolean;
88
+ nonceStatus: string;
89
+ nonceStateCode: number;
90
+ settled: boolean;
91
+ verification: import("@crypto.com/facilitator-client").X402VerifyResponse;
92
+ settlement: {
93
+ txHash?: string | undefined;
94
+ blockNumber?: number | undefined;
95
+ status?: string | undefined;
96
+ error?: string | undefined;
97
+ details?: string | undefined;
98
+ } | null;
99
+ }>;
100
+ export declare function actionNotarize(params: NotarizeParams): Promise<{
101
+ action: string;
102
+ dataHex: string;
103
+ originalData: string;
104
+ message: string;
105
+ to: string;
106
+ value: number;
107
+ txHash: string | null;
108
+ blockNumber: number | undefined;
109
+ }>;
110
+ export declare function actionSignMessage(wallet: ethers.Wallet | ethers.HDNodeWallet, message: string): Promise<{
111
+ action: string;
112
+ message: string;
113
+ signature: string;
114
+ signer: string;
115
+ info: string;
116
+ }>;
117
+ export declare function actionRecoverAddress(message: string, signature: string): {
118
+ action: string;
119
+ message: string;
120
+ signature: string;
121
+ recoveredAddress: string | null;
122
+ valid: boolean;
123
+ info: string;
124
+ };
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.actionRecoverAddress = exports.actionSignMessage = exports.actionNotarize = exports.actionVerifyPayment = exports.actionGenerateChallenge = exports.actionPayFromWallet = exports.actionGetEventLogs = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const facilitator_client_1 = require("@crypto.com/facilitator-client");
6
+ const payment_header_1 = require("@crypto.com/facilitator-client/dist/lib/utils/payment.header");
7
+ async function broadcastTransferWithAuthorization(wallet, x402Header, provider) {
8
+ const decodedJson = (0, payment_header_1.decodePaymentHeader)(x402Header);
9
+ const headerObj = JSON.parse(decodedJson);
10
+ const p = headerObj.payload;
11
+ const { v, r, s } = ethers_1.ethers.Signature.from(p.signature);
12
+ const connectedWallet = provider ? wallet.connect(provider) : wallet;
13
+ const tokenContract = new ethers_1.ethers.Contract(p.asset, [
14
+ "function transferWithAuthorization(address from, address to, uint256 value, uint256 validAfter, uint256 validBefore, bytes32 nonce, uint8 v, bytes32 r, bytes32 s) external"
15
+ ], connectedWallet);
16
+ let txHash = null;
17
+ let receipt = null;
18
+ try {
19
+ let gasLimit = BigInt(200000);
20
+ try {
21
+ const estimated = await tokenContract.transferWithAuthorization.estimateGas(p.from, p.to, p.value, p.validAfter, p.validBefore, p.nonce, v, r, s);
22
+ gasLimit = (estimated * BigInt(120)) / BigInt(100);
23
+ }
24
+ catch {
25
+ }
26
+ const tx = await tokenContract.transferWithAuthorization(p.from, p.to, p.value, p.validAfter, p.validBefore, p.nonce, v, r, s, { gasLimit });
27
+ txHash = tx.hash;
28
+ receipt = await tx.wait();
29
+ return { success: true, txHash, blockNumber: receipt === null || receipt === void 0 ? void 0 : receipt.blockNumber };
30
+ }
31
+ catch (error) {
32
+ throw new Error(error.message);
33
+ }
34
+ }
35
+ async function actionGetEventLogs(params) {
36
+ const { provider, address, topics, fromBlock, toBlock } = params;
37
+ let logs = [];
38
+ let usedToBlock = toBlock;
39
+ let warning = undefined;
40
+ let resolvedFrom = 0;
41
+ try {
42
+ const currentBlock = await provider.getBlockNumber();
43
+ const resolveTag = (val, current) => {
44
+ if (val === 'latest' || val === 'pending')
45
+ return current;
46
+ if (val === 'earliest')
47
+ return 0;
48
+ if (typeof val === 'string' && val.startsWith('0x'))
49
+ return parseInt(val, 16);
50
+ if (typeof val === 'string')
51
+ return parseInt(val, 10);
52
+ return val;
53
+ };
54
+ resolvedFrom = resolveTag(fromBlock, currentBlock);
55
+ let resolvedTo = resolveTag(toBlock, currentBlock);
56
+ const RPC_LIMIT = 2000;
57
+ if ((resolvedTo - resolvedFrom) > RPC_LIMIT) {
58
+ resolvedTo = resolvedFrom + RPC_LIMIT;
59
+ usedToBlock = resolvedTo;
60
+ warning = `Block range exceeded ${RPC_LIMIT}. Capped search at block ${resolvedTo}.`;
61
+ }
62
+ else {
63
+ usedToBlock = resolvedTo;
64
+ }
65
+ logs = await provider.getLogs({
66
+ address: address,
67
+ topics: topics,
68
+ fromBlock: resolvedFrom,
69
+ toBlock: usedToBlock
70
+ });
71
+ }
72
+ catch (error) {
73
+ throw new Error(error.message);
74
+ }
75
+ let maxBlock = -1;
76
+ const formattedLogs = logs.map(log => {
77
+ if (log.blockNumber > maxBlock)
78
+ maxBlock = log.blockNumber;
79
+ let dataDecimal = '0';
80
+ try {
81
+ if (log.data && log.data !== '0x') {
82
+ dataDecimal = BigInt(log.data).toString();
83
+ }
84
+ }
85
+ catch { }
86
+ let args = {};
87
+ if (log.topics.length === 3 && log.topics[0] === '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef') {
88
+ try {
89
+ const strip = (val) => `0x${val.slice(26)}`;
90
+ args = {
91
+ from: strip(log.topics[1]),
92
+ to: strip(log.topics[2]),
93
+ value: dataDecimal
94
+ };
95
+ }
96
+ catch { }
97
+ }
98
+ return {
99
+ transactionHash: log.transactionHash,
100
+ blockNumber: log.blockNumber,
101
+ blockHash: log.blockHash,
102
+ data: log.data,
103
+ dataDecimal: dataDecimal,
104
+ topics: log.topics,
105
+ args: args,
106
+ address: log.address,
107
+ timestamp: new Date().toISOString()
108
+ };
109
+ });
110
+ const checkoutBlock = maxBlock > -1 ? maxBlock : (typeof usedToBlock === 'number' ? usedToBlock : -1);
111
+ return {
112
+ success: true,
113
+ logs: formattedLogs,
114
+ maxBlockChecked: checkoutBlock,
115
+ lastBlockQueried: usedToBlock,
116
+ fromBlock,
117
+ toBlock: toBlock,
118
+ warning
119
+ };
120
+ }
121
+ exports.actionGetEventLogs = actionGetEventLogs;
122
+ async function actionPayFromWallet(params) {
123
+ const { wallet, tokenAddress, recipient, amount, chainId, provider } = params;
124
+ let network = facilitator_client_1.CronosNetwork.CronosTestnet;
125
+ if (chainId === 25)
126
+ network = facilitator_client_1.CronosNetwork.CronosMainnet;
127
+ const x402Header = await (0, payment_header_1.generateCronosPaymentHeader)({
128
+ signer: wallet,
129
+ network: network,
130
+ to: recipient,
131
+ value: amount,
132
+ asset: tokenAddress
133
+ });
134
+ let broadcastResult = null;
135
+ if (provider) {
136
+ const result = await broadcastTransferWithAuthorization(wallet, x402Header, provider);
137
+ broadcastResult = result;
138
+ }
139
+ const headerObj = JSON.parse((0, payment_header_1.decodePaymentHeader)(x402Header));
140
+ return {
141
+ success: true,
142
+ paymentId: headerObj.payload.nonce,
143
+ x402Header: x402Header,
144
+ x402HeaderJSON: headerObj,
145
+ message: (broadcastResult === null || broadcastResult === void 0 ? void 0 : broadcastResult.txHash) ? "Payment Broadcasted to Blockchain" : "Signed EIP-3009 Payment (Offline)",
146
+ txHash: broadcastResult === null || broadcastResult === void 0 ? void 0 : broadcastResult.txHash,
147
+ blockNumber: broadcastResult === null || broadcastResult === void 0 ? void 0 : broadcastResult.blockNumber
148
+ };
149
+ }
150
+ exports.actionPayFromWallet = actionPayFromWallet;
151
+ function actionGenerateChallenge(params) {
152
+ return {
153
+ status: 402,
154
+ challenge: {
155
+ payTo: params.recipient,
156
+ maxAmountRequired: params.amount,
157
+ asset: {
158
+ address: params.tokenAddress,
159
+ chainId: params.chainId,
160
+ name: 'USDC',
161
+ version: '1',
162
+ verifyingContract: params.tokenAddress,
163
+ },
164
+ description: "Payment Required for n8n Workflow",
165
+ },
166
+ payTo: params.recipient,
167
+ amount: params.amount,
168
+ token: params.tokenAddress,
169
+ chainId: params.chainId,
170
+ message: "Please sign this payment request.",
171
+ };
172
+ }
173
+ exports.actionGenerateChallenge = actionGenerateChallenge;
174
+ async function actionVerifyPayment(params) {
175
+ const facilitator = new facilitator_client_1.Facilitator({
176
+ network: params.network || facilitator_client_1.CronosNetwork.CronosTestnet,
177
+ signer: params.wallet
178
+ });
179
+ const reqs = facilitator.generatePaymentRequirements({
180
+ payTo: params.expectedRecipient,
181
+ maxAmountRequired: params.expectedAmount,
182
+ description: "n8n verified payment",
183
+ });
184
+ const body = facilitator.buildVerifyRequest(params.paymentHeader, reqs);
185
+ const verifyResult = await facilitator.verifyPayment(body);
186
+ let nonceStatus = "unknown";
187
+ let onChainState = -1;
188
+ if (params.provider) {
189
+ try {
190
+ const decodedJson = (0, payment_header_1.decodePaymentHeader)(params.paymentHeader);
191
+ const headerObj = JSON.parse(decodedJson);
192
+ const p = headerObj.payload;
193
+ const tokenContract = new ethers_1.ethers.Contract(p.asset, [
194
+ "function authorizationState(address authorizer, bytes32 nonce) external view returns (uint8)"
195
+ ], params.provider);
196
+ const state = await tokenContract.authorizationState(p.from, p.nonce);
197
+ onChainState = Number(state);
198
+ if (onChainState === 0)
199
+ nonceStatus = "Unused (Ready to Settle)";
200
+ if (onChainState === 1)
201
+ nonceStatus = "Used (Already Settled)";
202
+ if (onChainState === 2)
203
+ nonceStatus = "Canceled";
204
+ }
205
+ catch {
206
+ }
207
+ }
208
+ let settleResult = null;
209
+ if (verifyResult.isValid && params.shouldSettle && params.wallet) {
210
+ try {
211
+ settleResult = await facilitator.settlePayment(body);
212
+ }
213
+ catch (e) {
214
+ throw new Error("Settlement failed: " + e.message);
215
+ }
216
+ }
217
+ return {
218
+ valid: verifyResult.isValid,
219
+ nonceStatus: nonceStatus,
220
+ nonceStateCode: onChainState,
221
+ settled: (!!settleResult && !settleResult.error) || onChainState === 1,
222
+ verification: verifyResult,
223
+ settlement: settleResult,
224
+ };
225
+ }
226
+ exports.actionVerifyPayment = actionVerifyPayment;
227
+ async function actionNotarize(params) {
228
+ let hexData = params.data;
229
+ if (!hexData.startsWith('0x')) {
230
+ hexData = ethers_1.ethers.hexlify(ethers_1.ethers.toUtf8Bytes(params.data));
231
+ }
232
+ let txHash = null;
233
+ let receipt = null;
234
+ if (params.provider) {
235
+ const connectedWallet = params.wallet.connect(params.provider);
236
+ let gasLimit = BigInt(100000);
237
+ try {
238
+ const estimated = await connectedWallet.estimateGas({
239
+ to: params.wallet.address,
240
+ value: 0,
241
+ data: hexData
242
+ });
243
+ gasLimit = (estimated * BigInt(120)) / BigInt(100);
244
+ }
245
+ catch {
246
+ }
247
+ const tx = await connectedWallet.sendTransaction({
248
+ to: params.wallet.address,
249
+ value: 0,
250
+ data: hexData,
251
+ gasLimit: gasLimit
252
+ });
253
+ txHash = tx.hash;
254
+ receipt = await tx.wait();
255
+ }
256
+ return {
257
+ action: "notarize",
258
+ dataHex: hexData,
259
+ originalData: params.data,
260
+ message: txHash ? "Notarization Broadcasted" : "Payload ready for transaction",
261
+ to: params.wallet.address,
262
+ value: 0,
263
+ txHash,
264
+ blockNumber: receipt === null || receipt === void 0 ? void 0 : receipt.blockNumber
265
+ };
266
+ }
267
+ exports.actionNotarize = actionNotarize;
268
+ async function actionSignMessage(wallet, message) {
269
+ const signature = await wallet.signMessage(message);
270
+ const address = await wallet.getAddress();
271
+ return {
272
+ action: "signMessage",
273
+ message: message,
274
+ signature: signature,
275
+ signer: address,
276
+ info: "This signature can be used for Off-Chain Authentication (SIWE) or proving ownership."
277
+ };
278
+ }
279
+ exports.actionSignMessage = actionSignMessage;
280
+ function actionRecoverAddress(message, signature) {
281
+ let recovered = null;
282
+ let isValid = false;
283
+ try {
284
+ recovered = ethers_1.ethers.verifyMessage(message, signature);
285
+ isValid = true;
286
+ }
287
+ catch {
288
+ }
289
+ return {
290
+ action: "recoverAddress",
291
+ message,
292
+ signature,
293
+ recoveredAddress: recovered,
294
+ valid: isValid,
295
+ info: "Use 'recoveredAddress' to match against your whitelist of allowed agents."
296
+ };
297
+ }
298
+ exports.actionRecoverAddress = actionRecoverAddress;
299
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../../nodes/CronosX402/utils/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "n8n-nodes-cronos-paytech",
3
+ "version": "0.1.1",
4
+ "description": "n8n node for Cronos x402 Agentic Payments",
5
+ "keywords": [
6
+ "n8n-community-node-package"
7
+ ],
8
+ "license": "MIT",
9
+ "homepage": "",
10
+ "author": {
11
+ "name": "Ainun",
12
+ "email": "ai@algo.fit"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/ec2ainun/n8n-nodes-cronos-paytech.git"
17
+ },
18
+ "main": "index.js",
19
+ "scripts": {
20
+ "build": "n8n-node build",
21
+ "dev": "n8n-node dev",
22
+ "format": "prettier --write .",
23
+ "lint": "n8n-node lint",
24
+ "lint:fix": "n8n-node lint --fix",
25
+ "prepublishOnly": "n8n-node prerelease",
26
+ "release": "n8n-node release",
27
+ "test": "jest"
28
+ },
29
+ "files": [
30
+ "dist"
31
+ ],
32
+ "n8n": {
33
+ "n8nNodesApiVersion": 1,
34
+ "strict": false,
35
+ "nodes": [
36
+ "dist/nodes/CronosX402/CronosX402.node.js"
37
+ ],
38
+ "credentials": [
39
+ "dist/credentials/CronosWalletCredentialsApi.credentials.js"
40
+ ]
41
+ },
42
+ "devDependencies": {
43
+ "@n8n/node-cli": "^0.18.0",
44
+ "@types/express": "^4.17.6",
45
+ "@types/jest": "^29.5.12",
46
+ "@types/node": "^20.11.24",
47
+ "@types/request-promise-native": "~1.0.15",
48
+ "copyfiles": "^2.4.1",
49
+ "eslint": "^9.0.0",
50
+ "jest": "^29.7.0",
51
+ "n8n-core": "*",
52
+ "prettier": "^3.2.5",
53
+ "ts-jest": "^29.1.2",
54
+ "typescript": "~5.3.3"
55
+ },
56
+ "peerDependencies": {
57
+ "n8n-workflow": "*"
58
+ },
59
+ "dependencies": {
60
+ "@crypto.com/facilitator-client": "^1.0.4",
61
+ "ethers": "^6.11.1"
62
+ }
63
+ }