chainai 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +3 -0
- package/dist/commands/broadcast.d.ts +20 -0
- package/dist/commands/broadcast.d.ts.map +1 -0
- package/dist/commands/broadcast.js +35 -0
- package/dist/commands/broadcast.js.map +1 -0
- package/dist/commands/gen-wallet.d.ts +9 -0
- package/dist/commands/gen-wallet.d.ts.map +1 -0
- package/dist/commands/gen-wallet.js +17 -0
- package/dist/commands/gen-wallet.js.map +1 -0
- package/dist/commands/get-balance.d.ts +24 -0
- package/dist/commands/get-balance.d.ts.map +1 -0
- package/dist/commands/get-balance.js +82 -0
- package/dist/commands/get-balance.js.map +1 -0
- package/dist/commands/send.d.ts +27 -0
- package/dist/commands/send.d.ts.map +1 -0
- package/dist/commands/send.js +108 -0
- package/dist/commands/send.js.map +1 -0
- package/dist/commands/sign-message.d.ts +17 -0
- package/dist/commands/sign-message.d.ts.map +1 -0
- package/dist/commands/sign-message.js +36 -0
- package/dist/commands/sign-message.js.map +1 -0
- package/dist/commands/sign-transaction.d.ts +22 -0
- package/dist/commands/sign-transaction.d.ts.map +1 -0
- package/dist/commands/sign-transaction.js +31 -0
- package/dist/commands/sign-transaction.js.map +1 -0
- package/dist/commands/sign-typed-data.d.ts +22 -0
- package/dist/commands/sign-typed-data.d.ts.map +1 -0
- package/dist/commands/sign-typed-data.js +35 -0
- package/dist/commands/sign-typed-data.js.map +1 -0
- package/dist/commands/sign.d.ts +25 -0
- package/dist/commands/sign.d.ts.map +1 -0
- package/dist/commands/sign.js +36 -0
- package/dist/commands/sign.js.map +1 -0
- package/dist/commands/swap-order-status.d.ts +23 -0
- package/dist/commands/swap-order-status.d.ts.map +1 -0
- package/dist/commands/swap-order-status.js +35 -0
- package/dist/commands/swap-order-status.js.map +1 -0
- package/dist/commands/swap.d.ts +32 -0
- package/dist/commands/swap.d.ts.map +1 -0
- package/dist/commands/swap.js +119 -0
- package/dist/commands/swap.js.map +1 -0
- package/dist/commands/tx-status.d.ts +25 -0
- package/dist/commands/tx-status.d.ts.map +1 -0
- package/dist/commands/tx-status.js +54 -0
- package/dist/commands/tx-status.js.map +1 -0
- package/dist/commands/who-am-i.d.ts +12 -0
- package/dist/commands/who-am-i.d.ts.map +1 -0
- package/dist/commands/who-am-i.js +14 -0
- package/dist/commands/who-am-i.js.map +1 -0
- package/dist/configs.d.ts +99 -0
- package/dist/configs.d.ts.map +1 -0
- package/dist/configs.js +18 -0
- package/dist/configs.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +404 -0
- package/dist/index.js.map +1 -0
- package/dist/oneInchFusion/configs.d.ts +3 -0
- package/dist/oneInchFusion/configs.d.ts.map +1 -0
- package/dist/oneInchFusion/configs.js +6 -0
- package/dist/oneInchFusion/configs.js.map +1 -0
- package/dist/oneInchFusion/oneInchFusion.d.ts +20 -0
- package/dist/oneInchFusion/oneInchFusion.d.ts.map +1 -0
- package/dist/oneInchFusion/oneInchFusion.js +164 -0
- package/dist/oneInchFusion/oneInchFusion.js.map +1 -0
- package/dist/oneInchFusion/oneInchProvider.d.ts +11 -0
- package/dist/oneInchFusion/oneInchProvider.d.ts.map +1 -0
- package/dist/oneInchFusion/oneInchProvider.js +34 -0
- package/dist/oneInchFusion/oneInchProvider.js.map +1 -0
- package/dist/oneInchFusion/oneInchTypes.d.ts +26 -0
- package/dist/oneInchFusion/oneInchTypes.d.ts.map +1 -0
- package/dist/oneInchFusion/oneInchTypes.js +3 -0
- package/dist/oneInchFusion/oneInchTypes.js.map +1 -0
- package/dist/utils.d.ts +68 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +119 -0
- package/dist/utils.js.map +1 -0
- package/package.json +38 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
const commander_1 = require("commander");
|
|
38
|
+
const readline = __importStar(require("readline"));
|
|
39
|
+
const sign_message_1 = require("./commands/sign-message");
|
|
40
|
+
const sign_1 = require("./commands/sign");
|
|
41
|
+
const sign_typed_data_1 = require("./commands/sign-typed-data");
|
|
42
|
+
const sign_transaction_1 = require("./commands/sign-transaction");
|
|
43
|
+
const get_balance_1 = require("./commands/get-balance");
|
|
44
|
+
const send_1 = require("./commands/send");
|
|
45
|
+
const broadcast_1 = require("./commands/broadcast");
|
|
46
|
+
const who_am_i_1 = require("./commands/who-am-i");
|
|
47
|
+
const tx_status_1 = require("./commands/tx-status");
|
|
48
|
+
const swap_1 = require("./commands/swap");
|
|
49
|
+
const swap_order_status_1 = require("./commands/swap-order-status");
|
|
50
|
+
const gen_wallet_1 = require("./commands/gen-wallet");
|
|
51
|
+
function askYesNo(question) {
|
|
52
|
+
const rl = readline.createInterface({
|
|
53
|
+
input: process.stdin,
|
|
54
|
+
output: process.stderr,
|
|
55
|
+
});
|
|
56
|
+
return new Promise((resolve) => {
|
|
57
|
+
rl.question(question, (answer) => {
|
|
58
|
+
rl.close();
|
|
59
|
+
resolve(answer.trim().toLowerCase() === 'y' ||
|
|
60
|
+
answer.trim().toLowerCase() === 'yes');
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const program = new commander_1.Command();
|
|
65
|
+
program.name('chainai').description('chainai CLI tool').version('0.0.1');
|
|
66
|
+
program
|
|
67
|
+
.command('sign-message')
|
|
68
|
+
.description('Sign a message using a private key')
|
|
69
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
70
|
+
.requiredOption('-m, --message <message>', 'Message to sign')
|
|
71
|
+
.option('-r, --raw', 'Treat message as raw hex data')
|
|
72
|
+
.action(async (options) => {
|
|
73
|
+
try {
|
|
74
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
75
|
+
if (!privateKey) {
|
|
76
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
77
|
+
}
|
|
78
|
+
const result = await (0, sign_message_1.signMessage)({
|
|
79
|
+
privateKey: privateKey,
|
|
80
|
+
message: options.message,
|
|
81
|
+
raw: options.raw,
|
|
82
|
+
});
|
|
83
|
+
console.log(`CHAINAI_OK: Message signed successfully`);
|
|
84
|
+
console.log(JSON.stringify(result, null, 2));
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
88
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED — ${message}`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
program
|
|
93
|
+
.command('sign')
|
|
94
|
+
.description('Sign a raw hash using a private key (secp256k1 — CRITICAL: use only when absolutely necessary)')
|
|
95
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
96
|
+
.requiredOption('-h, --hash <hash>', 'Hash to sign (0x-prefixed hex string)')
|
|
97
|
+
.action(async (options) => {
|
|
98
|
+
try {
|
|
99
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
100
|
+
if (!privateKey) {
|
|
101
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
102
|
+
}
|
|
103
|
+
const result = await (0, sign_1.sign)({
|
|
104
|
+
privateKey: privateKey,
|
|
105
|
+
hash: options.hash,
|
|
106
|
+
});
|
|
107
|
+
console.log(`CHAINAI_OK: Hash signed successfully`);
|
|
108
|
+
console.log(JSON.stringify(result, null, 2));
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
112
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED — ${message}`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
program
|
|
117
|
+
.command('sign-typed-data')
|
|
118
|
+
.description('Sign EIP-712 typed data using a private key')
|
|
119
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
120
|
+
.requiredOption('-d, --data <json>', 'EIP-712 typed data as a JSON string containing domain, types, primaryType, and message')
|
|
121
|
+
.action(async (options) => {
|
|
122
|
+
try {
|
|
123
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
124
|
+
if (!privateKey) {
|
|
125
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
126
|
+
}
|
|
127
|
+
let parsed;
|
|
128
|
+
try {
|
|
129
|
+
parsed = JSON.parse(options.data);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
throw new Error('Invalid JSON provided for --data. Must be a valid JSON string with domain, types, primaryType, and message.');
|
|
133
|
+
}
|
|
134
|
+
if (!parsed.domain ||
|
|
135
|
+
!parsed.types ||
|
|
136
|
+
!parsed.primaryType ||
|
|
137
|
+
!parsed.message) {
|
|
138
|
+
throw new Error('Data must contain domain, types, primaryType, and message fields.');
|
|
139
|
+
}
|
|
140
|
+
const result = await (0, sign_typed_data_1.signTypedData)({
|
|
141
|
+
privateKey: privateKey,
|
|
142
|
+
domain: parsed.domain,
|
|
143
|
+
types: parsed.types,
|
|
144
|
+
primaryType: parsed.primaryType,
|
|
145
|
+
message: parsed.message,
|
|
146
|
+
});
|
|
147
|
+
console.log(`CHAINAI_OK: Typed data signed successfully`);
|
|
148
|
+
console.log(JSON.stringify(result, null, 2));
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
152
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED — ${message}`);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
program
|
|
157
|
+
.command('sign-transaction')
|
|
158
|
+
.description('Sign a transaction using a private key (produces a serialized signed transaction ready to broadcast)')
|
|
159
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
160
|
+
.requiredOption('-t, --transaction <json>', 'Transaction object as a JSON string (e.g. {"to":"0x...","value":"0x...","chainId":1,...})')
|
|
161
|
+
.action(async (options) => {
|
|
162
|
+
try {
|
|
163
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
164
|
+
if (!privateKey) {
|
|
165
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
166
|
+
}
|
|
167
|
+
let parsed;
|
|
168
|
+
try {
|
|
169
|
+
parsed = JSON.parse(options.transaction);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
throw new Error('Invalid JSON provided for --transaction. Must be a valid JSON string representing a transaction object.');
|
|
173
|
+
}
|
|
174
|
+
const result = await (0, sign_transaction_1.signTransaction)({
|
|
175
|
+
privateKey: privateKey,
|
|
176
|
+
transaction: parsed,
|
|
177
|
+
});
|
|
178
|
+
console.log(`CHAINAI_OK: Transaction signed successfully`);
|
|
179
|
+
console.log(JSON.stringify(result, null, 2));
|
|
180
|
+
}
|
|
181
|
+
catch (err) {
|
|
182
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
183
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED — ${message}`);
|
|
184
|
+
process.exit(1);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
program
|
|
188
|
+
.command('get-balance')
|
|
189
|
+
.description('Get the balance of a native token or ERC-20 token for a given address')
|
|
190
|
+
.option('-a, --address <address>', 'Wallet address (0x-prefixed hex string). Falls back to address derived from CHAINAI_PRIVATE_KEY env var.')
|
|
191
|
+
.option('-n, --network <network>', 'Network name or chain ID (default: mainnet)', 'mainnet')
|
|
192
|
+
.option('-t, --token <token>', 'Token contract address (default: 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for native token)', '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee')
|
|
193
|
+
.option('--all', 'Return all token balances (native + ERC-20)')
|
|
194
|
+
.action(async (options) => {
|
|
195
|
+
try {
|
|
196
|
+
let address = options.address;
|
|
197
|
+
if (!address) {
|
|
198
|
+
const privateKey = process.env.CHAINAI_PRIVATE_KEY;
|
|
199
|
+
if (!privateKey) {
|
|
200
|
+
throw new Error('Address is required. Provide it via -a flag or set CHAINAI_PRIVATE_KEY environment variable.');
|
|
201
|
+
}
|
|
202
|
+
address = (0, who_am_i_1.whoAmI)({ privateKey: privateKey }).address;
|
|
203
|
+
}
|
|
204
|
+
const result = await (0, get_balance_1.getBalance)({
|
|
205
|
+
address: address,
|
|
206
|
+
network: options.network,
|
|
207
|
+
token: options.token,
|
|
208
|
+
all: options.all,
|
|
209
|
+
});
|
|
210
|
+
console.log(`CHAINAI_OK: Balance retrieved successfully`);
|
|
211
|
+
console.log(JSON.stringify(result, null, 2));
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
215
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
216
|
+
process.exit(1);
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
program
|
|
220
|
+
.command('send')
|
|
221
|
+
.description('Build and sign a transaction to send native tokens or ERC-20 tokens')
|
|
222
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
223
|
+
.requiredOption('--to <address>', 'Recipient address (0x-prefixed hex string)')
|
|
224
|
+
.requiredOption('-t, --token <token>', 'Token contract address (use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for native token)')
|
|
225
|
+
.requiredOption('--amount <amount>', 'Amount to send in human-readable units (e.g. "1.5")')
|
|
226
|
+
.option('-n, --network <network>', 'Network name or chain ID (default: mainnet)', 'mainnet')
|
|
227
|
+
.option('-b, --broadcast', 'Automatically broadcast the transaction after signing')
|
|
228
|
+
.action(async (options) => {
|
|
229
|
+
try {
|
|
230
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
231
|
+
if (!privateKey) {
|
|
232
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
233
|
+
}
|
|
234
|
+
const result = await (0, send_1.send)({
|
|
235
|
+
privateKey: privateKey,
|
|
236
|
+
to: options.to,
|
|
237
|
+
token: options.token,
|
|
238
|
+
amount: options.amount,
|
|
239
|
+
network: options.network,
|
|
240
|
+
});
|
|
241
|
+
console.log(`CHAINAI_OK: Transaction created successfully`);
|
|
242
|
+
console.log(JSON.stringify(result, null, 2));
|
|
243
|
+
const shouldBroadcast = options.broadcast ||
|
|
244
|
+
(await askYesNo('\nBroadcast this transaction? (y/N): '));
|
|
245
|
+
if (shouldBroadcast) {
|
|
246
|
+
const broadcastResult = await (0, broadcast_1.broadcast)({
|
|
247
|
+
serializedTransaction: result.serializedTransaction,
|
|
248
|
+
network: options.network,
|
|
249
|
+
});
|
|
250
|
+
console.log(`CHAINAI_OK: Transaction broadcast successfully`);
|
|
251
|
+
console.log(JSON.stringify(broadcastResult, null, 2));
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
256
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
257
|
+
process.exit(1);
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
program
|
|
261
|
+
.command('broadcast')
|
|
262
|
+
.description('Broadcast a serialized signed transaction to the network')
|
|
263
|
+
.requiredOption('-s, --serialized-transaction <hex>', 'Serialized signed transaction (0x-prefixed hex string)')
|
|
264
|
+
.option('-n, --network <network>', 'Network name or chain ID (default: mainnet)', 'mainnet')
|
|
265
|
+
.action(async (options) => {
|
|
266
|
+
try {
|
|
267
|
+
const result = await (0, broadcast_1.broadcast)({
|
|
268
|
+
serializedTransaction: options.serializedTransaction,
|
|
269
|
+
network: options.network,
|
|
270
|
+
});
|
|
271
|
+
console.log(`CHAINAI_OK: Transaction broadcast successfully`);
|
|
272
|
+
console.log(JSON.stringify(result, null, 2));
|
|
273
|
+
}
|
|
274
|
+
catch (err) {
|
|
275
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
276
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
277
|
+
process.exit(1);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
program
|
|
281
|
+
.command('who-am-i')
|
|
282
|
+
.description('Return the address derived from a private key')
|
|
283
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
284
|
+
.action(async (options) => {
|
|
285
|
+
try {
|
|
286
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
287
|
+
if (!privateKey) {
|
|
288
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
289
|
+
}
|
|
290
|
+
const result = (0, who_am_i_1.whoAmI)({ privateKey: privateKey });
|
|
291
|
+
console.log(`CHAINAI_OK: Address retrieved successfully`);
|
|
292
|
+
console.log(JSON.stringify(result, null, 2));
|
|
293
|
+
}
|
|
294
|
+
catch (err) {
|
|
295
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
296
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
297
|
+
process.exit(1);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
program
|
|
301
|
+
.command('tx-status')
|
|
302
|
+
.description('Get the status of a transaction by its hash')
|
|
303
|
+
.requiredOption('-h, --hash <hash>', 'Transaction hash (0x-prefixed hex string)')
|
|
304
|
+
.option('-n, --network <network>', 'Network name or chain ID (default: mainnet)', 'mainnet')
|
|
305
|
+
.action(async (options) => {
|
|
306
|
+
try {
|
|
307
|
+
const result = await (0, tx_status_1.txStatus)({
|
|
308
|
+
hash: options.hash,
|
|
309
|
+
network: options.network,
|
|
310
|
+
});
|
|
311
|
+
console.log(`CHAINAI_OK: Transaction status retrieved successfully`);
|
|
312
|
+
console.log(JSON.stringify(result, null, 2));
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
316
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
program
|
|
321
|
+
.command('swap')
|
|
322
|
+
.description('Swap tokens via 1inch Fusion (get quote, optionally submit order)')
|
|
323
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
324
|
+
.requiredOption('--from-token <address>', 'Source token contract address (use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for native token)')
|
|
325
|
+
.requiredOption('--to-token <address>', 'Destination token contract address (use 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee for native token)')
|
|
326
|
+
.requiredOption('--amount <amount>', 'Amount to swap in human-readable units (e.g. "1.5")')
|
|
327
|
+
.option('-n, --network <network>', 'Network name or chain ID (default: mainnet)', 'mainnet')
|
|
328
|
+
.option('-y, --yes', 'Skip confirmation prompt and submit the order immediately')
|
|
329
|
+
.action(async (options) => {
|
|
330
|
+
try {
|
|
331
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
332
|
+
if (!privateKey) {
|
|
333
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
334
|
+
}
|
|
335
|
+
const swapInput = {
|
|
336
|
+
privateKey: privateKey,
|
|
337
|
+
fromToken: options.fromToken,
|
|
338
|
+
toToken: options.toToken,
|
|
339
|
+
amount: options.amount,
|
|
340
|
+
network: options.network,
|
|
341
|
+
};
|
|
342
|
+
const quoteResult = await (0, swap_1.getSwapQuote)(swapInput);
|
|
343
|
+
console.log(`CHAINAI_OK: Swap quote retrieved successfully`);
|
|
344
|
+
console.log(JSON.stringify(quoteResult, null, 2));
|
|
345
|
+
const shouldSubmit = options.yes || (await askYesNo('\nProceed with swap? (y/N): '));
|
|
346
|
+
if (shouldSubmit) {
|
|
347
|
+
const orderResult = await (0, swap_1.submitSwapOrder)(swapInput);
|
|
348
|
+
console.log(`CHAINAI_OK: Swap order submitted successfully`);
|
|
349
|
+
console.log(JSON.stringify(orderResult, null, 2));
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
catch (err) {
|
|
353
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
354
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
355
|
+
process.exit(1);
|
|
356
|
+
}
|
|
357
|
+
});
|
|
358
|
+
program
|
|
359
|
+
.command('swap-order-status')
|
|
360
|
+
.description('Get the status of a swap order by its order hash')
|
|
361
|
+
.option('-k, --private-key <key>', 'Private key (hex string starting with 0x, or set CHAINAI_PRIVATE_KEY env var)')
|
|
362
|
+
.requiredOption('--order-hash <hash>', 'Order hash returned from the swap command')
|
|
363
|
+
.option('-n, --network <network>', 'Network name or chain ID (default: mainnet)', 'mainnet')
|
|
364
|
+
.action(async (options) => {
|
|
365
|
+
try {
|
|
366
|
+
const privateKey = options.privateKey ?? process.env.CHAINAI_PRIVATE_KEY;
|
|
367
|
+
if (!privateKey) {
|
|
368
|
+
throw new Error('Private key is required. Provide it via -k flag or CHAINAI_PRIVATE_KEY environment variable.');
|
|
369
|
+
}
|
|
370
|
+
const result = await (0, swap_order_status_1.swapOrderStatus)({
|
|
371
|
+
privateKey: privateKey,
|
|
372
|
+
orderHash: options.orderHash,
|
|
373
|
+
network: options.network,
|
|
374
|
+
});
|
|
375
|
+
console.log(`CHAINAI_OK: Swap order status retrieved successfully`);
|
|
376
|
+
console.log(JSON.stringify(result, null, 2));
|
|
377
|
+
}
|
|
378
|
+
catch (err) {
|
|
379
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
380
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
program
|
|
385
|
+
.command('gen-wallet')
|
|
386
|
+
.description('Generate a new random wallet (private key and address)')
|
|
387
|
+
.action(() => {
|
|
388
|
+
try {
|
|
389
|
+
const result = (0, gen_wallet_1.genWallet)();
|
|
390
|
+
console.log(`CHAINAI_OK: Wallet generated successfully`);
|
|
391
|
+
console.log(JSON.stringify(result, null, 2));
|
|
392
|
+
console.error(`\nTo use this wallet, either:\n 1. Pass it via -k flag: -k ${result.privateKey}\n 2. Save it to your environment: export CHAINAI_PRIVATE_KEY=${result.privateKey}`);
|
|
393
|
+
}
|
|
394
|
+
catch (err) {
|
|
395
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
396
|
+
console.error(`CHAINAI_ERR: EXECUTION_FAILED \u2014 ${message}`);
|
|
397
|
+
process.exit(1);
|
|
398
|
+
}
|
|
399
|
+
});
|
|
400
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
401
|
+
console.error(`CHAINAI_ERR: UNKNOWN — ${err instanceof Error ? err.message : String(err)}`);
|
|
402
|
+
process.exit(1);
|
|
403
|
+
});
|
|
404
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../../src/oneInchFusion/configs.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,wBAAwB,+CAA+C,CAAA;AAE7E,OAAO,EAAE,wBAAwB,EAAE,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ONEINCH_APPROVAL_ADDRESS = void 0;
|
|
4
|
+
const ONEINCH_APPROVAL_ADDRESS = '0x111111125421ca6dc452d289314280a0f8842a65';
|
|
5
|
+
exports.ONEINCH_APPROVAL_ADDRESS = ONEINCH_APPROVAL_ADDRESS;
|
|
6
|
+
//# sourceMappingURL=configs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configs.js","sourceRoot":"","sources":["../../src/oneInchFusion/configs.ts"],"names":[],"mappings":";;;AAAA,MAAM,wBAAwB,GAAG,4CAA4C,CAAA;AAEpE,4DAAwB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { OrderStatusOutputType, QuoteInputType, QuoteOutputType } from './oneInchTypes';
|
|
2
|
+
import { type Hex } from 'viem';
|
|
3
|
+
declare class OneInchFusion {
|
|
4
|
+
private web3Provider;
|
|
5
|
+
private sdk;
|
|
6
|
+
private walletClient;
|
|
7
|
+
private publicClient;
|
|
8
|
+
private chain;
|
|
9
|
+
private account;
|
|
10
|
+
constructor(nodeUrl: string, privateKey: Hex, chainId: number);
|
|
11
|
+
getOrderStatus(hash: string): Promise<OrderStatusOutputType>;
|
|
12
|
+
getQuote(config: QuoteInputType): Promise<QuoteOutputType>;
|
|
13
|
+
submitOrder(config: QuoteInputType): Promise<{
|
|
14
|
+
hash: string;
|
|
15
|
+
}>;
|
|
16
|
+
isApprovalRequired(fromAddress: string, tokenAddress: string, amount: bigint): Promise<boolean>;
|
|
17
|
+
setApproval(fromAddress: string, tokenAddress: string): Promise<`0x${string}`>;
|
|
18
|
+
}
|
|
19
|
+
export default OneInchFusion;
|
|
20
|
+
//# sourceMappingURL=oneInchFusion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneInchFusion.d.ts","sourceRoot":"","sources":["../../src/oneInchFusion/oneInchFusion.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,qBAAqB,EACrB,cAAc,EACd,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAQL,KAAK,GAAG,EAET,MAAM,MAAM,CAAC;AAqBd,cAAM,aAAa;IACjB,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,OAAO,CAAU;gBACb,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM;IAwBvD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAmB5D,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAqB1D,WAAW,CAAC,MAAM,EAAE,cAAc;;;IAuDlC,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC;IAYb,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;CA0B5D;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fusion_sdk_1 = require("@1inch/fusion-sdk");
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const accounts_1 = require("viem/accounts");
|
|
6
|
+
const configs_1 = require("./configs");
|
|
7
|
+
const chains_1 = require("viem/chains");
|
|
8
|
+
const oneInchProvider_1 = require("./oneInchProvider");
|
|
9
|
+
const utils_1 = require("../utils");
|
|
10
|
+
const getFusionParams = (config) => {
|
|
11
|
+
const { fromTokenAddress, toTokenAddress, amount, fromAddress } = config;
|
|
12
|
+
return {
|
|
13
|
+
amount,
|
|
14
|
+
fromTokenAddress,
|
|
15
|
+
toTokenAddress,
|
|
16
|
+
enableEstimate: false,
|
|
17
|
+
source: 'chainai',
|
|
18
|
+
walletAddress: fromAddress,
|
|
19
|
+
isPermit2: false,
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
class OneInchFusion {
|
|
23
|
+
web3Provider;
|
|
24
|
+
sdk;
|
|
25
|
+
walletClient;
|
|
26
|
+
publicClient;
|
|
27
|
+
chain;
|
|
28
|
+
account;
|
|
29
|
+
constructor(nodeUrl, privateKey, chainId) {
|
|
30
|
+
const account = (0, accounts_1.privateKeyToAccount)(privateKey);
|
|
31
|
+
this.account = account;
|
|
32
|
+
this.chain = chainId === 1 ? chains_1.mainnet : chains_1.bsc;
|
|
33
|
+
this.publicClient = (0, viem_1.createPublicClient)({
|
|
34
|
+
chain: this.chain,
|
|
35
|
+
transport: (0, viem_1.http)(nodeUrl),
|
|
36
|
+
});
|
|
37
|
+
this.walletClient = (0, viem_1.createWalletClient)({
|
|
38
|
+
account,
|
|
39
|
+
chain: this.chain,
|
|
40
|
+
transport: (0, viem_1.http)(nodeUrl),
|
|
41
|
+
});
|
|
42
|
+
this.web3Provider = new oneInchProvider_1.Web3ProviderConnector(this.publicClient, this.walletClient);
|
|
43
|
+
this.sdk = new fusion_sdk_1.FusionSDK({
|
|
44
|
+
network: chainId === 1 ? fusion_sdk_1.NetworkEnum.ETHEREUM : fusion_sdk_1.NetworkEnum.BINANCE,
|
|
45
|
+
url: 'https://fusion.1inch.io',
|
|
46
|
+
blockchainProvider: this.web3Provider,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async getOrderStatus(hash) {
|
|
50
|
+
return this.sdk.getOrderStatus(hash).then((res) => {
|
|
51
|
+
let status = res.status;
|
|
52
|
+
if (status === 'fulfilled')
|
|
53
|
+
status = 'filled';
|
|
54
|
+
const creationDate = Math.floor(new Date(res.createdAt).getTime() / 1000);
|
|
55
|
+
const retValue = {
|
|
56
|
+
status,
|
|
57
|
+
cancelTx: res.cancelTx,
|
|
58
|
+
createdAt: creationDate,
|
|
59
|
+
duration: res.auctionDuration,
|
|
60
|
+
fills: res.fills,
|
|
61
|
+
};
|
|
62
|
+
if (status === 'filled') {
|
|
63
|
+
retValue.finalToAmount = BigInt(res.fills[0].filledAuctionTakerAmount);
|
|
64
|
+
}
|
|
65
|
+
return retValue;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
async getQuote(config) {
|
|
69
|
+
try {
|
|
70
|
+
const quote = await this.sdk.getQuote(getFusionParams(config));
|
|
71
|
+
return {
|
|
72
|
+
startAmount: quote.presets[quote.recommendedPreset].auctionStartAmount,
|
|
73
|
+
endAmount: quote.presets[quote.recommendedPreset].auctionEndAmount,
|
|
74
|
+
avgAmount: (quote.presets[quote.recommendedPreset].auctionStartAmount +
|
|
75
|
+
quote.presets[quote.recommendedPreset].auctionEndAmount) /
|
|
76
|
+
2n,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
const response = e.response?.data
|
|
81
|
+
?.description || null;
|
|
82
|
+
throw new Error(response || e.message || 'Failed to fetch quote from 1inch');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async submitOrder(config) {
|
|
86
|
+
try {
|
|
87
|
+
const preparedOrder = await this.sdk.createOrder(getFusionParams(config));
|
|
88
|
+
if (config.fromTokenAddress !== utils_1.NATIVE_TOKEN_ADDRESS) {
|
|
89
|
+
const info = await this.sdk.submitOrder(preparedOrder.order, preparedOrder.quoteId);
|
|
90
|
+
return {
|
|
91
|
+
hash: info.orderHash,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const info = await this.sdk.submitNativeOrder(preparedOrder.order, new fusion_sdk_1.Address(config.fromAddress), preparedOrder.quoteId);
|
|
96
|
+
const factory = fusion_sdk_1.NativeOrdersFactory.default(this.chain.id === 1 ? fusion_sdk_1.NetworkEnum.ETHEREUM : fusion_sdk_1.NetworkEnum.BINANCE);
|
|
97
|
+
const call = factory.create(new fusion_sdk_1.Address(config.fromAddress), preparedOrder.order.build());
|
|
98
|
+
const tx = {
|
|
99
|
+
data: call.data,
|
|
100
|
+
to: call.to.toString(),
|
|
101
|
+
account: config.fromAddress,
|
|
102
|
+
value: call.value,
|
|
103
|
+
chain: this.chain,
|
|
104
|
+
};
|
|
105
|
+
const fullTx = await this.publicClient.prepareTransactionRequest(tx);
|
|
106
|
+
const signedTx = await this.account.signTransaction(fullTx);
|
|
107
|
+
const hash = await this.publicClient.sendRawTransaction({
|
|
108
|
+
serializedTransaction: signedTx,
|
|
109
|
+
});
|
|
110
|
+
return this.publicClient
|
|
111
|
+
.waitForTransactionReceipt({ hash })
|
|
112
|
+
.then((res) => {
|
|
113
|
+
if (res.status === 'success')
|
|
114
|
+
return {
|
|
115
|
+
hash: info.orderHash,
|
|
116
|
+
};
|
|
117
|
+
else
|
|
118
|
+
throw new Error('Native Transaction Failed');
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
throw new Error(e.message || 'Failed to submit order to 1inch');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
async isApprovalRequired(fromAddress, tokenAddress, amount) {
|
|
127
|
+
if (tokenAddress === utils_1.NATIVE_TOKEN_ADDRESS)
|
|
128
|
+
return false;
|
|
129
|
+
const tokeAllowanceData = (await this.publicClient.readContract({
|
|
130
|
+
abi: viem_1.erc20Abi,
|
|
131
|
+
address: tokenAddress,
|
|
132
|
+
functionName: 'allowance',
|
|
133
|
+
args: [fromAddress, configs_1.ONEINCH_APPROVAL_ADDRESS],
|
|
134
|
+
}));
|
|
135
|
+
if (tokeAllowanceData < amount)
|
|
136
|
+
return true;
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
async setApproval(fromAddress, tokenAddress) {
|
|
140
|
+
const tx = {
|
|
141
|
+
data: (0, viem_1.encodeFunctionData)({
|
|
142
|
+
abi: viem_1.erc20Abi,
|
|
143
|
+
functionName: 'approve',
|
|
144
|
+
args: [
|
|
145
|
+
configs_1.ONEINCH_APPROVAL_ADDRESS,
|
|
146
|
+
BigInt('0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'),
|
|
147
|
+
],
|
|
148
|
+
}),
|
|
149
|
+
to: tokenAddress,
|
|
150
|
+
account: fromAddress,
|
|
151
|
+
chain: this.chain,
|
|
152
|
+
};
|
|
153
|
+
const fullTx = await this.publicClient.prepareTransactionRequest(tx);
|
|
154
|
+
const signedTx = await this.account.signTransaction(fullTx);
|
|
155
|
+
const hash = await this.publicClient.sendRawTransaction({
|
|
156
|
+
serializedTransaction: signedTx,
|
|
157
|
+
});
|
|
158
|
+
return this.publicClient.waitForTransactionReceipt({ hash }).then((res) => {
|
|
159
|
+
return res.transactionHash;
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.default = OneInchFusion;
|
|
164
|
+
//# sourceMappingURL=oneInchFusion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneInchFusion.js","sourceRoot":"","sources":["../../src/oneInchFusion/oneInchFusion.ts"],"names":[],"mappings":"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"}
|