@ael-protocol/sdk 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.
package/dist/abi.js ADDED
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QUOTER_ABI = exports.ERC20_ABI = exports.ROUTER_ABI = void 0;
4
+ /**
5
+ * AEL Router ABI
6
+ */
7
+ exports.ROUTER_ABI = [
8
+ // Events
9
+ {
10
+ type: 'event',
11
+ name: 'IntentSubmitted',
12
+ inputs: [
13
+ { name: 'intentHash', type: 'bytes32', indexed: true },
14
+ { name: 'agent', type: 'address', indexed: true },
15
+ { name: 'tokenIn', type: 'address', indexed: false },
16
+ { name: 'tokenOut', type: 'address', indexed: false },
17
+ { name: 'amountIn', type: 'uint256', indexed: false },
18
+ { name: 'minAmountOut', type: 'uint256', indexed: false },
19
+ { name: 'deadline', type: 'uint256', indexed: false },
20
+ ],
21
+ },
22
+ {
23
+ type: 'event',
24
+ name: 'IntentSettled',
25
+ inputs: [
26
+ { name: 'intentHash', type: 'bytes32', indexed: true },
27
+ { name: 'solver', type: 'address', indexed: true },
28
+ { name: 'amountOut', type: 'uint256', indexed: false },
29
+ { name: 'fee', type: 'uint256', indexed: false },
30
+ ],
31
+ },
32
+ {
33
+ type: 'event',
34
+ name: 'IntentCancelled',
35
+ inputs: [
36
+ { name: 'intentHash', type: 'bytes32', indexed: true },
37
+ ],
38
+ },
39
+ {
40
+ type: 'event',
41
+ name: 'IntentExpired',
42
+ inputs: [
43
+ { name: 'intentHash', type: 'bytes32', indexed: true },
44
+ ],
45
+ },
46
+ // Functions
47
+ {
48
+ type: 'function',
49
+ name: 'submitIntent',
50
+ inputs: [
51
+ {
52
+ name: 'intent',
53
+ type: 'tuple',
54
+ components: [
55
+ { name: 'agent', type: 'address' },
56
+ { name: 'tokenIn', type: 'address' },
57
+ { name: 'tokenOut', type: 'address' },
58
+ { name: 'amountIn', type: 'uint256' },
59
+ { name: 'minAmountOut', type: 'uint256' },
60
+ { name: 'deadline', type: 'uint256' },
61
+ { name: 'nonce', type: 'uint256' },
62
+ { name: 'signature', type: 'bytes' },
63
+ ],
64
+ },
65
+ ],
66
+ outputs: [{ name: 'intentHash', type: 'bytes32' }],
67
+ stateMutability: 'payable',
68
+ },
69
+ {
70
+ type: 'function',
71
+ name: 'cancelIntent',
72
+ inputs: [{ name: 'intentHash', type: 'bytes32' }],
73
+ outputs: [],
74
+ stateMutability: 'nonpayable',
75
+ },
76
+ {
77
+ type: 'function',
78
+ name: 'getIntentStatus',
79
+ inputs: [{ name: 'intentHash', type: 'bytes32' }],
80
+ outputs: [{ name: '', type: 'uint8' }],
81
+ stateMutability: 'view',
82
+ },
83
+ {
84
+ type: 'function',
85
+ name: 'getNonce',
86
+ inputs: [{ name: 'agent', type: 'address' }],
87
+ outputs: [{ name: '', type: 'uint256' }],
88
+ stateMutability: 'view',
89
+ },
90
+ {
91
+ type: 'function',
92
+ name: 'domainSeparator',
93
+ inputs: [],
94
+ outputs: [{ name: '', type: 'bytes32' }],
95
+ stateMutability: 'view',
96
+ },
97
+ {
98
+ type: 'function',
99
+ name: 'intents',
100
+ inputs: [{ name: 'intentHash', type: 'bytes32' }],
101
+ outputs: [
102
+ { name: 'agent', type: 'address' },
103
+ { name: 'tokenIn', type: 'address' },
104
+ { name: 'tokenOut', type: 'address' },
105
+ { name: 'amountIn', type: 'uint256' },
106
+ { name: 'minAmountOut', type: 'uint256' },
107
+ { name: 'deadline', type: 'uint256' },
108
+ { name: 'status', type: 'uint8' },
109
+ ],
110
+ stateMutability: 'view',
111
+ },
112
+ ];
113
+ /**
114
+ * ERC20 ABI
115
+ */
116
+ exports.ERC20_ABI = [
117
+ {
118
+ type: 'function',
119
+ name: 'approve',
120
+ inputs: [
121
+ { name: 'spender', type: 'address' },
122
+ { name: 'amount', type: 'uint256' },
123
+ ],
124
+ outputs: [{ name: '', type: 'bool' }],
125
+ stateMutability: 'nonpayable',
126
+ },
127
+ {
128
+ type: 'function',
129
+ name: 'allowance',
130
+ inputs: [
131
+ { name: 'owner', type: 'address' },
132
+ { name: 'spender', type: 'address' },
133
+ ],
134
+ outputs: [{ name: '', type: 'uint256' }],
135
+ stateMutability: 'view',
136
+ },
137
+ {
138
+ type: 'function',
139
+ name: 'balanceOf',
140
+ inputs: [{ name: 'account', type: 'address' }],
141
+ outputs: [{ name: '', type: 'uint256' }],
142
+ stateMutability: 'view',
143
+ },
144
+ {
145
+ type: 'function',
146
+ name: 'decimals',
147
+ inputs: [],
148
+ outputs: [{ name: '', type: 'uint8' }],
149
+ stateMutability: 'view',
150
+ },
151
+ {
152
+ type: 'function',
153
+ name: 'symbol',
154
+ inputs: [],
155
+ outputs: [{ name: '', type: 'string' }],
156
+ stateMutability: 'view',
157
+ },
158
+ ];
159
+ /**
160
+ * Uniswap V3 Quoter ABI
161
+ */
162
+ exports.QUOTER_ABI = [
163
+ {
164
+ type: 'function',
165
+ name: 'quoteExactInputSingle',
166
+ inputs: [
167
+ {
168
+ name: 'params',
169
+ type: 'tuple',
170
+ components: [
171
+ { name: 'tokenIn', type: 'address' },
172
+ { name: 'tokenOut', type: 'address' },
173
+ { name: 'amountIn', type: 'uint256' },
174
+ { name: 'fee', type: 'uint24' },
175
+ { name: 'sqrtPriceLimitX96', type: 'uint160' },
176
+ ],
177
+ },
178
+ ],
179
+ outputs: [
180
+ { name: 'amountOut', type: 'uint256' },
181
+ { name: 'sqrtPriceX96After', type: 'uint160' },
182
+ { name: 'initializedTicksCrossed', type: 'uint32' },
183
+ { name: 'gasEstimate', type: 'uint256' },
184
+ ],
185
+ stateMutability: 'nonpayable',
186
+ },
187
+ ];
188
+ //# sourceMappingURL=abi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"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"}
package/dist/ael.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ import { type Address, type Hash } from 'viem';
2
+ import type { AELConfig, SwapParams, SwapResult, IntentDetails, QuoteResult } from './types';
3
+ import { IntentStatus } from './types';
4
+ /**
5
+ * AEL SDK 主类
6
+ * 提供 AI Agent 交易执行能力
7
+ */
8
+ export declare class AEL {
9
+ private publicClient;
10
+ private walletClient;
11
+ private account;
12
+ private agentAddress;
13
+ private routerAddress;
14
+ private chain;
15
+ /**
16
+ * 创建 AEL 实例
17
+ */
18
+ constructor(config: AELConfig);
19
+ /**
20
+ * 获取 Agent 地址
21
+ */
22
+ get address(): Address;
23
+ /**
24
+ * 执行 Swap
25
+ * 构造意图 → EIP-712 签名 → 授权 → 提交
26
+ */
27
+ swap(params: SwapParams): Promise<SwapResult>;
28
+ /**
29
+ * 获取报价 (通过 Uniswap V3)
30
+ */
31
+ quote(tokenIn: Address, tokenOut: Address, amountIn: bigint): Promise<QuoteResult | null>;
32
+ /**
33
+ * 获取意图状态
34
+ */
35
+ getStatus(intentHash: Hash): Promise<IntentStatus>;
36
+ /**
37
+ * 获取意图详情
38
+ */
39
+ getIntent(intentHash: Hash): Promise<IntentDetails>;
40
+ /**
41
+ * 取消意图
42
+ */
43
+ cancel(intentHash: Hash): Promise<Hash>;
44
+ /**
45
+ * 等待意图结算
46
+ */
47
+ waitForSettlement(intentHash: Hash, timeoutMs?: number): Promise<IntentStatus>;
48
+ /**
49
+ * 获取当前 nonce
50
+ */
51
+ private getNonce;
52
+ /**
53
+ * EIP-712 签名
54
+ */
55
+ private signIntent;
56
+ /**
57
+ * 确保代币授权
58
+ */
59
+ private ensureApproval;
60
+ /**
61
+ * 从日志中提取 intentHash
62
+ */
63
+ private extractIntentHash;
64
+ }
65
+ //# sourceMappingURL=ael.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ael.d.ts","sourceRoot":"","sources":["../src/ael.ts"],"names":[],"mappings":"AAAA,OAAO,EAUL,KAAK,OAAO,EACZ,KAAK,IAAI,EAEV,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAsBvC;;;GAGG;AACH,qBAAa,GAAG;IACd,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,KAAK,CAAQ;IAErB;;OAEG;gBACS,MAAM,EAAE,SAAS;IAkB7B;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;OAGG;IACG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAoDnD;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAqC/F;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC;IAUxD;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC;IAmBzD;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C;;OAEG;IACG,iBAAiB,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB3F;;OAEG;YACW,QAAQ;IAStB;;OAEG;YACW,UAAU;IA4CxB;;OAEG;YACW,cAAc;IAqB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAS1B"}
package/dist/ael.js ADDED
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AEL = void 0;
4
+ const viem_1 = require("viem");
5
+ const accounts_1 = require("viem/accounts");
6
+ const types_1 = require("./types");
7
+ const abi_1 = require("./abi");
8
+ const constants_1 = require("./constants");
9
+ // EIP-712 类型哈希
10
+ const INTENT_TYPEHASH = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['string'], ['AgentIntent(address agent,address tokenIn,address tokenOut,uint256 amountIn,uint256 minAmountOut,uint256 deadline,uint256 nonce)']));
11
+ /**
12
+ * 获取对应链的 Quoter 地址
13
+ */
14
+ function getQuoterAddress(chain) {
15
+ if (chain.id === constants_1.CHAIN_IDS.BASE_MAINNET) {
16
+ return constants_1.BASE_MAINNET.UNISWAP_QUOTER_V2;
17
+ }
18
+ return constants_1.BASE_SEPOLIA.UNISWAP_QUOTER_V2;
19
+ }
20
+ /**
21
+ * AEL SDK 主类
22
+ * 提供 AI Agent 交易执行能力
23
+ */
24
+ class AEL {
25
+ publicClient;
26
+ walletClient;
27
+ account;
28
+ agentAddress;
29
+ routerAddress;
30
+ chain;
31
+ /**
32
+ * 创建 AEL 实例
33
+ */
34
+ constructor(config) {
35
+ this.account = (0, accounts_1.privateKeyToAccount)(config.privateKey);
36
+ this.agentAddress = this.account.address;
37
+ this.routerAddress = config.routerAddress;
38
+ this.chain = config.chain;
39
+ this.publicClient = (0, viem_1.createPublicClient)({
40
+ chain: config.chain,
41
+ transport: (0, viem_1.http)(config.rpcUrl),
42
+ });
43
+ this.walletClient = (0, viem_1.createWalletClient)({
44
+ account: this.account,
45
+ chain: config.chain,
46
+ transport: (0, viem_1.http)(config.rpcUrl),
47
+ });
48
+ }
49
+ /**
50
+ * 获取 Agent 地址
51
+ */
52
+ get address() {
53
+ return this.agentAddress;
54
+ }
55
+ /**
56
+ * 执行 Swap
57
+ * 构造意图 → EIP-712 签名 → 授权 → 提交
58
+ */
59
+ async swap(params) {
60
+ const { tokenIn, tokenOut, amountIn, minAmountOut } = params;
61
+ const deadline = params.deadline ?? BigInt(Math.floor(Date.now() / 1000) + 3600); // 默认 1 小时
62
+ // 1. 获取 nonce
63
+ const nonce = await this.getNonce();
64
+ // 2. 构造意图
65
+ const intent = {
66
+ agent: this.agentAddress,
67
+ tokenIn,
68
+ tokenOut,
69
+ amountIn,
70
+ minAmountOut,
71
+ deadline,
72
+ nonce,
73
+ signature: '0x',
74
+ };
75
+ // 3. 签名
76
+ intent.signature = await this.signIntent(intent);
77
+ // 4. 授权 tokenIn (如果是 ERC20)
78
+ if (tokenIn !== '0x0000000000000000000000000000000000000000') {
79
+ await this.ensureApproval(tokenIn, amountIn);
80
+ }
81
+ // 5. 提交意图
82
+ const isETH = tokenIn === '0x0000000000000000000000000000000000000000';
83
+ const txHash = await this.walletClient.writeContract({
84
+ chain: this.chain,
85
+ account: this.account,
86
+ address: this.routerAddress,
87
+ abi: abi_1.ROUTER_ABI,
88
+ functionName: 'submitIntent',
89
+ args: [intent],
90
+ value: isETH ? amountIn : 0n,
91
+ });
92
+ // 6. 等待确认并获取 intentHash
93
+ const receipt = await this.publicClient.waitForTransactionReceipt({ hash: txHash });
94
+ // 从事件中提取 intentHash
95
+ const intentHash = this.extractIntentHash(receipt.logs);
96
+ return {
97
+ intentHash,
98
+ txHash,
99
+ status: types_1.IntentStatus.Pending,
100
+ };
101
+ }
102
+ /**
103
+ * 获取报价 (通过 Uniswap V3)
104
+ */
105
+ async quote(tokenIn, tokenOut, amountIn) {
106
+ const feeTiers = [500, 3000, 10000];
107
+ let bestQuote = null;
108
+ const quoterAddress = getQuoterAddress(this.chain);
109
+ for (const fee of feeTiers) {
110
+ try {
111
+ const result = await this.publicClient.simulateContract({
112
+ address: quoterAddress,
113
+ abi: abi_1.QUOTER_ABI,
114
+ functionName: 'quoteExactInputSingle',
115
+ args: [{
116
+ tokenIn,
117
+ tokenOut,
118
+ amountIn,
119
+ fee,
120
+ sqrtPriceLimitX96: 0n,
121
+ }],
122
+ });
123
+ const amountOut = result.result[0];
124
+ if (!bestQuote || amountOut > bestQuote.amountOut) {
125
+ bestQuote = {
126
+ amountOut,
127
+ priceImpact: 0,
128
+ fee,
129
+ };
130
+ }
131
+ }
132
+ catch {
133
+ // 该费用等级无报价
134
+ }
135
+ }
136
+ return bestQuote;
137
+ }
138
+ /**
139
+ * 获取意图状态
140
+ */
141
+ async getStatus(intentHash) {
142
+ const status = await this.publicClient.readContract({
143
+ address: this.routerAddress,
144
+ abi: abi_1.ROUTER_ABI,
145
+ functionName: 'getIntentStatus',
146
+ args: [intentHash],
147
+ });
148
+ return status;
149
+ }
150
+ /**
151
+ * 获取意图详情
152
+ */
153
+ async getIntent(intentHash) {
154
+ const result = await this.publicClient.readContract({
155
+ address: this.routerAddress,
156
+ abi: abi_1.ROUTER_ABI,
157
+ functionName: 'intents',
158
+ args: [intentHash],
159
+ });
160
+ return {
161
+ agent: result[0],
162
+ tokenIn: result[1],
163
+ tokenOut: result[2],
164
+ amountIn: result[3],
165
+ minAmountOut: result[4],
166
+ deadline: result[5],
167
+ status: result[6],
168
+ };
169
+ }
170
+ /**
171
+ * 取消意图
172
+ */
173
+ async cancel(intentHash) {
174
+ const txHash = await this.walletClient.writeContract({
175
+ chain: this.chain,
176
+ account: this.account,
177
+ address: this.routerAddress,
178
+ abi: abi_1.ROUTER_ABI,
179
+ functionName: 'cancelIntent',
180
+ args: [intentHash],
181
+ });
182
+ await this.publicClient.waitForTransactionReceipt({ hash: txHash });
183
+ return txHash;
184
+ }
185
+ /**
186
+ * 等待意图结算
187
+ */
188
+ async waitForSettlement(intentHash, timeoutMs = 60000) {
189
+ const startTime = Date.now();
190
+ while (Date.now() - startTime < timeoutMs) {
191
+ const status = await this.getStatus(intentHash);
192
+ if (status !== types_1.IntentStatus.Pending) {
193
+ return status;
194
+ }
195
+ await new Promise((resolve) => setTimeout(resolve, 2000));
196
+ }
197
+ throw new Error('等待结算超时');
198
+ }
199
+ // ============ 私有方法 ============
200
+ /**
201
+ * 获取当前 nonce
202
+ */
203
+ async getNonce() {
204
+ return await this.publicClient.readContract({
205
+ address: this.routerAddress,
206
+ abi: abi_1.ROUTER_ABI,
207
+ functionName: 'getNonce',
208
+ args: [this.agentAddress],
209
+ });
210
+ }
211
+ /**
212
+ * EIP-712 签名
213
+ */
214
+ async signIntent(intent) {
215
+ // 获取 domain separator
216
+ const domainSeparator = await this.publicClient.readContract({
217
+ address: this.routerAddress,
218
+ abi: abi_1.ROUTER_ABI,
219
+ functionName: 'domainSeparator',
220
+ });
221
+ // 构造 struct hash
222
+ const structHash = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)('bytes32, address, address, address, uint256, uint256, uint256, uint256'), [
223
+ INTENT_TYPEHASH,
224
+ intent.agent,
225
+ intent.tokenIn,
226
+ intent.tokenOut,
227
+ intent.amountIn,
228
+ intent.minAmountOut,
229
+ intent.deadline,
230
+ intent.nonce,
231
+ ]));
232
+ // 构造 EIP-712 digest
233
+ const digest = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['string', 'bytes32', 'bytes32'], ['\x19\x01', domainSeparator, structHash]));
234
+ // 使用 account.sign 直接签名哈希(不添加 EIP-191 前缀)
235
+ const signature = await this.account.sign({ hash: digest });
236
+ return signature;
237
+ }
238
+ /**
239
+ * 确保代币授权
240
+ */
241
+ async ensureApproval(token, amount) {
242
+ const allowance = await this.publicClient.readContract({
243
+ address: token,
244
+ abi: abi_1.ERC20_ABI,
245
+ functionName: 'allowance',
246
+ args: [this.agentAddress, this.routerAddress],
247
+ });
248
+ if (allowance < amount) {
249
+ const txHash = await this.walletClient.writeContract({
250
+ chain: this.chain,
251
+ account: this.account,
252
+ address: token,
253
+ abi: abi_1.ERC20_ABI,
254
+ functionName: 'approve',
255
+ args: [this.routerAddress, 2n ** 256n - 1n],
256
+ });
257
+ await this.publicClient.waitForTransactionReceipt({ hash: txHash });
258
+ }
259
+ }
260
+ /**
261
+ * 从日志中提取 intentHash
262
+ */
263
+ extractIntentHash(logs) {
264
+ for (const log of logs) {
265
+ if (log.topics.length > 1) {
266
+ // IntentSubmitted 事件的第一个 indexed 参数是 intentHash
267
+ return log.topics[1];
268
+ }
269
+ }
270
+ throw new Error('未找到 IntentSubmitted 事件');
271
+ }
272
+ }
273
+ exports.AEL = AEL;
274
+ //# sourceMappingURL=ael.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ael.js","sourceRoot":"","sources":["../src/ael.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Address } from 'viem';
2
+ /**
3
+ * Base Sepolia 地址
4
+ */
5
+ export declare const BASE_SEPOLIA: {
6
+ UNISWAP_QUOTER_V2: Address;
7
+ UNISWAP_SWAP_ROUTER: Address;
8
+ WETH: Address;
9
+ USDC: Address;
10
+ AEL_ROUTER: Address;
11
+ AEL_SOLVER_REGISTRY: Address;
12
+ AEL_FEE_VAULT: Address;
13
+ };
14
+ /**
15
+ * Base Mainnet 地址
16
+ */
17
+ export declare const BASE_MAINNET: {
18
+ UNISWAP_QUOTER_V2: Address;
19
+ UNISWAP_SWAP_ROUTER: Address;
20
+ AERODROME_ROUTER: Address;
21
+ AERODROME_FACTORY: Address;
22
+ WETH: Address;
23
+ USDC: Address;
24
+ USDbC: Address;
25
+ AERO: Address;
26
+ AEL_ROUTER: Address;
27
+ AEL_SOLVER_REGISTRY: Address;
28
+ AEL_FEE_VAULT: Address;
29
+ };
30
+ /**
31
+ * ETH 零地址 (用于表示原生 ETH)
32
+ */
33
+ export declare const ETH_ADDRESS: Address;
34
+ /**
35
+ * Chain IDs
36
+ */
37
+ export declare const CHAIN_IDS: {
38
+ readonly BASE_MAINNET: 8453;
39
+ readonly BASE_SEPOLIA: 84532;
40
+ };
41
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,YAAY;uBAE4C,OAAO;yBACL,OAAO;UAEtB,OAAO;UACP,OAAO;gBAED,OAAO;yBACE,OAAO;mBACb,OAAO;CACvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY;uBAE4C,OAAO;yBACL,OAAO;sBAEV,OAAO;uBACN,OAAO;UAEpB,OAAO;UACP,OAAO;WACN,OAAO;UACR,OAAO;gBAED,OAAO;yBACE,OAAO;mBACb,OAAO;CACvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAmD,OAAO,CAAC;AAEnF;;GAEG;AACH,eAAO,MAAM,SAAS;;;CAGZ,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHAIN_IDS = exports.ETH_ADDRESS = exports.BASE_MAINNET = exports.BASE_SEPOLIA = void 0;
4
+ /**
5
+ * Base Sepolia 地址
6
+ */
7
+ exports.BASE_SEPOLIA = {
8
+ // Uniswap V3
9
+ UNISWAP_QUOTER_V2: '0xC5290058841028F1614F3A6F0F5816cAd0df5E27',
10
+ UNISWAP_SWAP_ROUTER: '0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4',
11
+ // 代币
12
+ WETH: '0x4200000000000000000000000000000000000006',
13
+ USDC: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
14
+ // AEL Contracts
15
+ AEL_ROUTER: '0x83A260939cF1326E9aa94eF6c814F2Fd876535e8',
16
+ AEL_SOLVER_REGISTRY: '0xC69A90904B44297af5fC7C554d7ca37612Ef01B3',
17
+ AEL_FEE_VAULT: '0xAec32AbD0233a124B7D0A17055fB40a50442E088',
18
+ };
19
+ /**
20
+ * Base Mainnet 地址
21
+ */
22
+ exports.BASE_MAINNET = {
23
+ // Uniswap V3
24
+ UNISWAP_QUOTER_V2: '0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a',
25
+ UNISWAP_SWAP_ROUTER: '0x2626664c2603336E57B271c5C0b26F421741e481',
26
+ // Aerodrome
27
+ AERODROME_ROUTER: '0xcF77a3Ba9A5CA399B7c97c74d54e5b1Beb874E43',
28
+ AERODROME_FACTORY: '0x420DD381b31aEf6683db6B902084cB0FFECe40Da',
29
+ // 代币
30
+ WETH: '0x4200000000000000000000000000000000000006',
31
+ USDC: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', // Native USDC
32
+ USDbC: '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', // Bridged USDC
33
+ AERO: '0x940181a94A35A4569E4529A3CDfB74e38FD98631',
34
+ // AEL Contracts
35
+ AEL_ROUTER: '0x85977BD37d8100F81566A1c6815047f5557bCDCB',
36
+ AEL_SOLVER_REGISTRY: '0xd14D394631C32Ea35fFF8407157C6867bCc8E946',
37
+ AEL_FEE_VAULT: '0xF8E3646b03a83465D6DAE65edbF380C77feb5DE0',
38
+ };
39
+ /**
40
+ * ETH 零地址 (用于表示原生 ETH)
41
+ */
42
+ exports.ETH_ADDRESS = '0x0000000000000000000000000000000000000000';
43
+ /**
44
+ * Chain IDs
45
+ */
46
+ exports.CHAIN_IDS = {
47
+ BASE_MAINNET: 8453,
48
+ BASE_SEPOLIA: 84532,
49
+ };
50
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,aAAa;IACb,iBAAiB,EAAE,4CAAuD;IAC1E,mBAAmB,EAAE,4CAAuD;IAC5E,KAAK;IACL,IAAI,EAAE,4CAAuD;IAC7D,IAAI,EAAE,4CAAuD;IAC7D,gBAAgB;IAChB,UAAU,EAAE,4CAAuD;IACnE,mBAAmB,EAAE,4CAAuD;IAC5E,aAAa,EAAE,4CAAuD;CACvE,CAAC;AAEF;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,aAAa;IACb,iBAAiB,EAAE,4CAAuD;IAC1E,mBAAmB,EAAE,4CAAuD;IAC5E,YAAY;IACZ,gBAAgB,EAAE,4CAAuD;IACzE,iBAAiB,EAAE,4CAAuD;IAC1E,KAAK;IACL,IAAI,EAAE,4CAAuD;IAC7D,IAAI,EAAE,4CAAuD,EAAE,cAAc;IAC7E,KAAK,EAAE,4CAAuD,EAAE,eAAe;IAC/E,IAAI,EAAE,4CAAuD;IAC7D,gBAAgB;IAChB,UAAU,EAAE,4CAAuD;IACnE,mBAAmB,EAAE,4CAAuD;IAC5E,aAAa,EAAE,4CAAuD;CACvE,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAAG,4CAAuD,CAAC;AAEnF;;GAEG;AACU,QAAA,SAAS,GAAG;IACvB,YAAY,EAAE,IAAI;IAClB,YAAY,EAAE,KAAK;CACX,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { AEL } from './ael';
2
+ export { IntentStatus } from './types';
3
+ export type { AELConfig, SwapParams, SwapResult, QuoteResult, IntentDetails } from './types';
4
+ export { ROUTER_ABI, ERC20_ABI, QUOTER_ABI } from './abi';
5
+ export { BASE_SEPOLIA, BASE_MAINNET, ETH_ADDRESS, CHAIN_IDS } from './constants';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}