@andrewkimjoseph/celina-sdk 0.27.5 → 0.28.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/README.md +2 -2
- package/build/a2a/skills.js +1 -1
- package/build/a2a/skills.js.map +1 -1
- package/build/abis/aave-data-provider.d.ts +17 -0
- package/build/abis/aave-data-provider.js +14 -0
- package/build/abis/aave-data-provider.js.map +1 -0
- package/build/abis/uniswap-v3.d.ts +171 -0
- package/build/abis/uniswap-v3.js +120 -0
- package/build/abis/uniswap-v3.js.map +1 -0
- package/build/config/aave.d.ts +2 -0
- package/build/config/aave.js +2 -0
- package/build/config/aave.js.map +1 -1
- package/build/config/uniswap.d.ts +15 -0
- package/build/config/uniswap.js +9 -1
- package/build/config/uniswap.js.map +1 -1
- package/build/index.d.ts +3 -3
- package/build/services/aave.service.d.ts +7 -0
- package/build/services/aave.service.js +31 -1
- package/build/services/aave.service.js.map +1 -1
- package/build/services/swap-pairs.d.ts +18 -4
- package/build/services/swap-pairs.js +35 -2
- package/build/services/swap-pairs.js.map +1 -1
- package/build/services/uniswap-path-router.d.ts +11 -1
- package/build/services/uniswap-path-router.js +36 -10
- package/build/services/uniswap-path-router.js.map +1 -1
- package/build/services/uniswap-v3-path-router.d.ts +40 -0
- package/build/services/uniswap-v3-path-router.js +183 -0
- package/build/services/uniswap-v3-path-router.js.map +1 -0
- package/build/services/uniswap-v3-pool-discovery.d.ts +33 -0
- package/build/services/uniswap-v3-pool-discovery.js +141 -0
- package/build/services/uniswap-v3-pool-discovery.js.map +1 -0
- package/build/services/uniswap-venue-quote.d.ts +28 -0
- package/build/services/uniswap-venue-quote.js +114 -0
- package/build/services/uniswap-venue-quote.js.map +1 -0
- package/build/services/uniswap.service.d.ts +24 -9
- package/build/services/uniswap.service.js +86 -37
- package/build/services/uniswap.service.js.map +1 -1
- package/build/src/a2a/skills.js +1 -1
- package/build/src/a2a/skills.js.map +1 -1
- package/build/src/abis/aave-data-provider.d.ts +17 -0
- package/build/src/abis/aave-data-provider.js +14 -0
- package/build/src/abis/aave-data-provider.js.map +1 -0
- package/build/src/abis/uniswap-v3.d.ts +171 -0
- package/build/src/abis/uniswap-v3.js +120 -0
- package/build/src/abis/uniswap-v3.js.map +1 -0
- package/build/src/config/aave.d.ts +2 -0
- package/build/src/config/aave.js +2 -0
- package/build/src/config/aave.js.map +1 -1
- package/build/src/config/uniswap.d.ts +15 -0
- package/build/src/config/uniswap.js +9 -1
- package/build/src/config/uniswap.js.map +1 -1
- package/build/src/index.d.ts +3 -3
- package/build/src/services/aave.service.d.ts +7 -0
- package/build/src/services/aave.service.js +31 -1
- package/build/src/services/aave.service.js.map +1 -1
- package/build/src/services/swap-pairs.d.ts +18 -4
- package/build/src/services/swap-pairs.js +35 -2
- package/build/src/services/swap-pairs.js.map +1 -1
- package/build/src/services/uniswap-path-router.d.ts +11 -1
- package/build/src/services/uniswap-path-router.js +36 -10
- package/build/src/services/uniswap-path-router.js.map +1 -1
- package/build/src/services/uniswap-v3-path-router.d.ts +40 -0
- package/build/src/services/uniswap-v3-path-router.js +183 -0
- package/build/src/services/uniswap-v3-path-router.js.map +1 -0
- package/build/src/services/uniswap-v3-pool-discovery.d.ts +33 -0
- package/build/src/services/uniswap-v3-pool-discovery.js +141 -0
- package/build/src/services/uniswap-v3-pool-discovery.js.map +1 -0
- package/build/src/services/uniswap-venue-quote.d.ts +28 -0
- package/build/src/services/uniswap-venue-quote.js +114 -0
- package/build/src/services/uniswap-venue-quote.js.map +1 -0
- package/build/src/services/uniswap.service.d.ts +24 -9
- package/build/src/services/uniswap.service.js +86 -37
- package/build/src/services/uniswap.service.js.map +1 -1
- package/build/src/tools/domains/browser.js +5 -3
- package/build/src/tools/domains/browser.js.map +1 -1
- package/build/src/tools/domains/uniswap.js +5 -5
- package/build/src/tools/domains/uniswap.js.map +1 -1
- package/build/src/tools/swap-routing.d.ts +2 -2
- package/build/src/tools/swap-routing.js +21 -6
- package/build/src/tools/swap-routing.js.map +1 -1
- package/build/tests/catalog/domains/defi.js +8 -1
- package/build/tests/catalog/domains/defi.js.map +1 -1
- package/build/tools/domains/browser.js +5 -3
- package/build/tools/domains/browser.js.map +1 -1
- package/build/tools/domains/uniswap.js +5 -5
- package/build/tools/domains/uniswap.js.map +1 -1
- package/build/tools/swap-routing.d.ts +2 -2
- package/build/tools/swap-routing.js +21 -6
- package/build/tools/swap-routing.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/** Uniswap v3 factory, QuoterV2, and SwapRouter02 on Celo mainnet. */
|
|
2
|
+
export declare const uniswapV3FactoryAbi: readonly [{
|
|
3
|
+
readonly name: "getPool";
|
|
4
|
+
readonly type: "function";
|
|
5
|
+
readonly stateMutability: "view";
|
|
6
|
+
readonly inputs: readonly [{
|
|
7
|
+
readonly name: "tokenA";
|
|
8
|
+
readonly type: "address";
|
|
9
|
+
}, {
|
|
10
|
+
readonly name: "tokenB";
|
|
11
|
+
readonly type: "address";
|
|
12
|
+
}, {
|
|
13
|
+
readonly name: "fee";
|
|
14
|
+
readonly type: "uint24";
|
|
15
|
+
}];
|
|
16
|
+
readonly outputs: readonly [{
|
|
17
|
+
readonly name: "pool";
|
|
18
|
+
readonly type: "address";
|
|
19
|
+
}];
|
|
20
|
+
}];
|
|
21
|
+
export declare const uniswapV3PoolAbi: readonly [{
|
|
22
|
+
readonly name: "liquidity";
|
|
23
|
+
readonly type: "function";
|
|
24
|
+
readonly stateMutability: "view";
|
|
25
|
+
readonly inputs: readonly [];
|
|
26
|
+
readonly outputs: readonly [{
|
|
27
|
+
readonly name: "liquidity";
|
|
28
|
+
readonly type: "uint128";
|
|
29
|
+
}];
|
|
30
|
+
}];
|
|
31
|
+
export declare const v3QuoterAbi: readonly [{
|
|
32
|
+
readonly name: "quoteExactInputSingle";
|
|
33
|
+
readonly type: "function";
|
|
34
|
+
readonly stateMutability: "nonpayable";
|
|
35
|
+
readonly inputs: readonly [{
|
|
36
|
+
readonly name: "params";
|
|
37
|
+
readonly type: "tuple";
|
|
38
|
+
readonly components: readonly [{
|
|
39
|
+
readonly name: "tokenIn";
|
|
40
|
+
readonly type: "address";
|
|
41
|
+
}, {
|
|
42
|
+
readonly name: "tokenOut";
|
|
43
|
+
readonly type: "address";
|
|
44
|
+
}, {
|
|
45
|
+
readonly name: "amountIn";
|
|
46
|
+
readonly type: "uint256";
|
|
47
|
+
}, {
|
|
48
|
+
readonly name: "fee";
|
|
49
|
+
readonly type: "uint24";
|
|
50
|
+
}, {
|
|
51
|
+
readonly name: "sqrtPriceLimitX96";
|
|
52
|
+
readonly type: "uint160";
|
|
53
|
+
}];
|
|
54
|
+
}];
|
|
55
|
+
readonly outputs: readonly [{
|
|
56
|
+
readonly name: "amountOut";
|
|
57
|
+
readonly type: "uint256";
|
|
58
|
+
}, {
|
|
59
|
+
readonly name: "sqrtPriceX96After";
|
|
60
|
+
readonly type: "uint160";
|
|
61
|
+
}, {
|
|
62
|
+
readonly name: "initializedTicksCrossed";
|
|
63
|
+
readonly type: "uint32";
|
|
64
|
+
}, {
|
|
65
|
+
readonly name: "gasEstimate";
|
|
66
|
+
readonly type: "uint256";
|
|
67
|
+
}];
|
|
68
|
+
}, {
|
|
69
|
+
readonly name: "quoteExactInput";
|
|
70
|
+
readonly type: "function";
|
|
71
|
+
readonly stateMutability: "nonpayable";
|
|
72
|
+
readonly inputs: readonly [{
|
|
73
|
+
readonly name: "path";
|
|
74
|
+
readonly type: "bytes";
|
|
75
|
+
}, {
|
|
76
|
+
readonly name: "amountIn";
|
|
77
|
+
readonly type: "uint256";
|
|
78
|
+
}];
|
|
79
|
+
readonly outputs: readonly [{
|
|
80
|
+
readonly name: "amountOut";
|
|
81
|
+
readonly type: "uint256";
|
|
82
|
+
}, {
|
|
83
|
+
readonly name: "sqrtPriceX96AfterList";
|
|
84
|
+
readonly type: "uint160[]";
|
|
85
|
+
}, {
|
|
86
|
+
readonly name: "initializedTicksCrossedList";
|
|
87
|
+
readonly type: "uint32[]";
|
|
88
|
+
}, {
|
|
89
|
+
readonly name: "gasEstimate";
|
|
90
|
+
readonly type: "uint256";
|
|
91
|
+
}];
|
|
92
|
+
}];
|
|
93
|
+
/**
|
|
94
|
+
* SwapRouter02 execution surface used by Celina.
|
|
95
|
+
* `exactInputSingle` / `exactInput` have no deadline; `multicall(uint256,bytes[])` applies one.
|
|
96
|
+
*/
|
|
97
|
+
export declare const swapRouter02Abi: readonly [{
|
|
98
|
+
readonly name: "exactInputSingle";
|
|
99
|
+
readonly type: "function";
|
|
100
|
+
readonly stateMutability: "payable";
|
|
101
|
+
readonly inputs: readonly [{
|
|
102
|
+
readonly name: "params";
|
|
103
|
+
readonly type: "tuple";
|
|
104
|
+
readonly components: readonly [{
|
|
105
|
+
readonly name: "tokenIn";
|
|
106
|
+
readonly type: "address";
|
|
107
|
+
}, {
|
|
108
|
+
readonly name: "tokenOut";
|
|
109
|
+
readonly type: "address";
|
|
110
|
+
}, {
|
|
111
|
+
readonly name: "fee";
|
|
112
|
+
readonly type: "uint24";
|
|
113
|
+
}, {
|
|
114
|
+
readonly name: "recipient";
|
|
115
|
+
readonly type: "address";
|
|
116
|
+
}, {
|
|
117
|
+
readonly name: "amountIn";
|
|
118
|
+
readonly type: "uint256";
|
|
119
|
+
}, {
|
|
120
|
+
readonly name: "amountOutMinimum";
|
|
121
|
+
readonly type: "uint256";
|
|
122
|
+
}, {
|
|
123
|
+
readonly name: "sqrtPriceLimitX96";
|
|
124
|
+
readonly type: "uint160";
|
|
125
|
+
}];
|
|
126
|
+
}];
|
|
127
|
+
readonly outputs: readonly [{
|
|
128
|
+
readonly name: "amountOut";
|
|
129
|
+
readonly type: "uint256";
|
|
130
|
+
}];
|
|
131
|
+
}, {
|
|
132
|
+
readonly name: "exactInput";
|
|
133
|
+
readonly type: "function";
|
|
134
|
+
readonly stateMutability: "payable";
|
|
135
|
+
readonly inputs: readonly [{
|
|
136
|
+
readonly name: "params";
|
|
137
|
+
readonly type: "tuple";
|
|
138
|
+
readonly components: readonly [{
|
|
139
|
+
readonly name: "path";
|
|
140
|
+
readonly type: "bytes";
|
|
141
|
+
}, {
|
|
142
|
+
readonly name: "recipient";
|
|
143
|
+
readonly type: "address";
|
|
144
|
+
}, {
|
|
145
|
+
readonly name: "amountIn";
|
|
146
|
+
readonly type: "uint256";
|
|
147
|
+
}, {
|
|
148
|
+
readonly name: "amountOutMinimum";
|
|
149
|
+
readonly type: "uint256";
|
|
150
|
+
}];
|
|
151
|
+
}];
|
|
152
|
+
readonly outputs: readonly [{
|
|
153
|
+
readonly name: "amountOut";
|
|
154
|
+
readonly type: "uint256";
|
|
155
|
+
}];
|
|
156
|
+
}, {
|
|
157
|
+
readonly name: "multicall";
|
|
158
|
+
readonly type: "function";
|
|
159
|
+
readonly stateMutability: "payable";
|
|
160
|
+
readonly inputs: readonly [{
|
|
161
|
+
readonly name: "deadline";
|
|
162
|
+
readonly type: "uint256";
|
|
163
|
+
}, {
|
|
164
|
+
readonly name: "data";
|
|
165
|
+
readonly type: "bytes[]";
|
|
166
|
+
}];
|
|
167
|
+
readonly outputs: readonly [{
|
|
168
|
+
readonly name: "results";
|
|
169
|
+
readonly type: "bytes[]";
|
|
170
|
+
}];
|
|
171
|
+
}];
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/** Uniswap v3 factory, QuoterV2, and SwapRouter02 on Celo mainnet. */
|
|
2
|
+
export const uniswapV3FactoryAbi = [
|
|
3
|
+
{
|
|
4
|
+
name: "getPool",
|
|
5
|
+
type: "function",
|
|
6
|
+
stateMutability: "view",
|
|
7
|
+
inputs: [
|
|
8
|
+
{ name: "tokenA", type: "address" },
|
|
9
|
+
{ name: "tokenB", type: "address" },
|
|
10
|
+
{ name: "fee", type: "uint24" },
|
|
11
|
+
],
|
|
12
|
+
outputs: [{ name: "pool", type: "address" }],
|
|
13
|
+
},
|
|
14
|
+
];
|
|
15
|
+
export const uniswapV3PoolAbi = [
|
|
16
|
+
{
|
|
17
|
+
name: "liquidity",
|
|
18
|
+
type: "function",
|
|
19
|
+
stateMutability: "view",
|
|
20
|
+
inputs: [],
|
|
21
|
+
outputs: [{ name: "liquidity", type: "uint128" }],
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
export const v3QuoterAbi = [
|
|
25
|
+
{
|
|
26
|
+
name: "quoteExactInputSingle",
|
|
27
|
+
type: "function",
|
|
28
|
+
stateMutability: "nonpayable",
|
|
29
|
+
inputs: [
|
|
30
|
+
{
|
|
31
|
+
name: "params",
|
|
32
|
+
type: "tuple",
|
|
33
|
+
components: [
|
|
34
|
+
{ name: "tokenIn", type: "address" },
|
|
35
|
+
{ name: "tokenOut", type: "address" },
|
|
36
|
+
{ name: "amountIn", type: "uint256" },
|
|
37
|
+
{ name: "fee", type: "uint24" },
|
|
38
|
+
{ name: "sqrtPriceLimitX96", type: "uint160" },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
outputs: [
|
|
43
|
+
{ name: "amountOut", type: "uint256" },
|
|
44
|
+
{ name: "sqrtPriceX96After", type: "uint160" },
|
|
45
|
+
{ name: "initializedTicksCrossed", type: "uint32" },
|
|
46
|
+
{ name: "gasEstimate", type: "uint256" },
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "quoteExactInput",
|
|
51
|
+
type: "function",
|
|
52
|
+
stateMutability: "nonpayable",
|
|
53
|
+
inputs: [
|
|
54
|
+
{ name: "path", type: "bytes" },
|
|
55
|
+
{ name: "amountIn", type: "uint256" },
|
|
56
|
+
],
|
|
57
|
+
outputs: [
|
|
58
|
+
{ name: "amountOut", type: "uint256" },
|
|
59
|
+
{ name: "sqrtPriceX96AfterList", type: "uint160[]" },
|
|
60
|
+
{ name: "initializedTicksCrossedList", type: "uint32[]" },
|
|
61
|
+
{ name: "gasEstimate", type: "uint256" },
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
/**
|
|
66
|
+
* SwapRouter02 execution surface used by Celina.
|
|
67
|
+
* `exactInputSingle` / `exactInput` have no deadline; `multicall(uint256,bytes[])` applies one.
|
|
68
|
+
*/
|
|
69
|
+
export const swapRouter02Abi = [
|
|
70
|
+
{
|
|
71
|
+
name: "exactInputSingle",
|
|
72
|
+
type: "function",
|
|
73
|
+
stateMutability: "payable",
|
|
74
|
+
inputs: [
|
|
75
|
+
{
|
|
76
|
+
name: "params",
|
|
77
|
+
type: "tuple",
|
|
78
|
+
components: [
|
|
79
|
+
{ name: "tokenIn", type: "address" },
|
|
80
|
+
{ name: "tokenOut", type: "address" },
|
|
81
|
+
{ name: "fee", type: "uint24" },
|
|
82
|
+
{ name: "recipient", type: "address" },
|
|
83
|
+
{ name: "amountIn", type: "uint256" },
|
|
84
|
+
{ name: "amountOutMinimum", type: "uint256" },
|
|
85
|
+
{ name: "sqrtPriceLimitX96", type: "uint160" },
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
outputs: [{ name: "amountOut", type: "uint256" }],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: "exactInput",
|
|
93
|
+
type: "function",
|
|
94
|
+
stateMutability: "payable",
|
|
95
|
+
inputs: [
|
|
96
|
+
{
|
|
97
|
+
name: "params",
|
|
98
|
+
type: "tuple",
|
|
99
|
+
components: [
|
|
100
|
+
{ name: "path", type: "bytes" },
|
|
101
|
+
{ name: "recipient", type: "address" },
|
|
102
|
+
{ name: "amountIn", type: "uint256" },
|
|
103
|
+
{ name: "amountOutMinimum", type: "uint256" },
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
outputs: [{ name: "amountOut", type: "uint256" }],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: "multicall",
|
|
111
|
+
type: "function",
|
|
112
|
+
stateMutability: "payable",
|
|
113
|
+
inputs: [
|
|
114
|
+
{ name: "deadline", type: "uint256" },
|
|
115
|
+
{ name: "data", type: "bytes[]" },
|
|
116
|
+
],
|
|
117
|
+
outputs: [{ name: "results", type: "bytes[]" }],
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
//# sourceMappingURL=uniswap-v3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uniswap-v3.js","sourceRoot":"","sources":["../../../src/abis/uniswap-v3.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/** Aave V3 on Celo mainnet — from bgd-labs/aave-address-book AaveV3Celo */
|
|
2
2
|
export declare const AAVE_POOL: "0x3E59A31363E2ad014dcbc521c4a0d5757d9f3402";
|
|
3
3
|
export declare const AAVE_CHAIN_ID = 42220;
|
|
4
|
+
/** Aave V3 Celo protocol data provider — exposes per-reserve supply/borrow caps. */
|
|
5
|
+
export declare const AAVE_PROTOCOL_DATA_PROVIDER: "0x2e0f8D3B1631296cC7c56538D6Eb6032601E15ED";
|
|
4
6
|
/** Underlying and aToken addresses for one Aave V3 market on Celo. */
|
|
5
7
|
export type AaveAsset = {
|
|
6
8
|
symbol: string;
|
package/build/src/config/aave.js
CHANGED
|
@@ -6,6 +6,8 @@ const HEX_ADDRESS_RE = /^0x[a-fA-F0-9]{40}$/;
|
|
|
6
6
|
/** Aave V3 on Celo mainnet — from bgd-labs/aave-address-book AaveV3Celo */
|
|
7
7
|
export const AAVE_POOL = "0x3E59A31363E2ad014dcbc521c4a0d5757d9f3402";
|
|
8
8
|
export const AAVE_CHAIN_ID = 42220;
|
|
9
|
+
/** Aave V3 Celo protocol data provider — exposes per-reserve supply/borrow caps. */
|
|
10
|
+
export const AAVE_PROTOCOL_DATA_PROVIDER = "0x2e0f8D3B1631296cC7c56538D6Eb6032601E15ED";
|
|
9
11
|
export const AAVE_ASSETS = {
|
|
10
12
|
USDT: {
|
|
11
13
|
symbol: "USDT",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aave.js","sourceRoot":"","sources":["../../../src/config/aave.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAE7C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,4CAAqD,CAAC;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"aave.js","sourceRoot":"","sources":["../../../src/config/aave.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAE7C,2EAA2E;AAC3E,MAAM,CAAC,MAAM,SAAS,GAAG,4CAAqD,CAAC;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AAEnC,oFAAoF;AACpF,MAAM,CAAC,MAAM,2BAA2B,GACtC,4CAAqD,CAAC;AASxD,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,4CAA4C;QACxD,MAAM,EAAE,4CAA4C;KACrD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACE,CAAC;AAEX;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAEzC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAC/C,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,KAAK;YACxC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,CACvC,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CACnE,CAAC;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,UAAU,KAAK,kDAAkD,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACtG,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/** Uniswap v3 on Celo mainnet — https://docs.celo.org/tooling/contracts/uniswap-contracts */
|
|
2
|
+
export declare const UNISWAP_V3: {
|
|
3
|
+
readonly factory: "0xAfE208a311B21f13EF87E33A90049fC17A7acDEc";
|
|
4
|
+
readonly quoterV2: "0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8";
|
|
5
|
+
readonly swapRouter02: "0x5615CDAb10dc425a742d643d949a7F474C01abc4";
|
|
6
|
+
};
|
|
7
|
+
/** Standard v3 fee tiers probed on the Celo factory. */
|
|
8
|
+
export declare const UNISWAP_V3_FEE_TIERS: readonly [100, 500, 3000, 10000];
|
|
9
|
+
/** Canonical v3 pool (token0 sorts before token1). */
|
|
10
|
+
export type UniswapV3Pool = {
|
|
11
|
+
token0: `0x${string}`;
|
|
12
|
+
token1: `0x${string}`;
|
|
13
|
+
fee: number;
|
|
14
|
+
};
|
|
15
|
+
export type UniswapProtocol = "uniswap_v3" | "uniswap_v4";
|
|
1
16
|
/** Uniswap v4 on Celo mainnet — https://docs.celo.org/tooling/contracts/uniswap-contracts */
|
|
2
17
|
export declare const UNISWAP_V4: {
|
|
3
18
|
readonly poolManager: "0x288dc841A52FCA2707c6947B3A777c5E56cd87BC";
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Uniswap v4 contract addresses and routing helpers for Celo mainnet.
|
|
2
|
+
* Uniswap v3 and v4 contract addresses and routing helpers for Celo mainnet.
|
|
3
3
|
* @see https://docs.celo.org/tooling/contracts/uniswap-contracts
|
|
4
4
|
*/
|
|
5
5
|
import { MENTO_CELO_ADDRESS } from "./chains.js";
|
|
6
|
+
/** Uniswap v3 on Celo mainnet — https://docs.celo.org/tooling/contracts/uniswap-contracts */
|
|
7
|
+
export const UNISWAP_V3 = {
|
|
8
|
+
factory: "0xAfE208a311B21f13EF87E33A90049fC17A7acDEc",
|
|
9
|
+
quoterV2: "0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8",
|
|
10
|
+
swapRouter02: "0x5615CDAb10dc425a742d643d949a7F474C01abc4",
|
|
11
|
+
};
|
|
12
|
+
/** Standard v3 fee tiers probed on the Celo factory. */
|
|
13
|
+
export const UNISWAP_V3_FEE_TIERS = [100, 500, 3000, 10000];
|
|
6
14
|
/** Uniswap v4 on Celo mainnet — https://docs.celo.org/tooling/contracts/uniswap-contracts */
|
|
7
15
|
export const UNISWAP_V4 = {
|
|
8
16
|
poolManager: "0x288dc841A52FCA2707c6947B3A777c5E56cd87BC",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../src/config/uniswap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,WAAW,EAAE,4CAAqD;IAClE,QAAQ,EAAE,4CAAqD;IAC/D,SAAS,EAAE,4CAAqD;IAChE,eAAe,EAAE,4CAAqD;IACtE,OAAO,EAAE,4CAAqD;IAC9D,SAAS,EAAE,4CAAqD;IAChE,cAAc,EAAE,4CAAqD;CAC7D,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAC/B,8EAA8E,CAAC;AAEjF,gEAAgE;AAChE,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAEvD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAEzE,qEAAqE;AACrE,MAAM,CAAC,MAAM,4BAA4B,GAA2B;IAClE,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC9D,UAAU,CAAC,cAAc;IACzB,kBAAkB;IAClB,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,kBAAkB;CACjE,CAAC;AAWF,mEAAmE;AACnE,MAAM,UAAU,qBAAqB,CACnC,CAAgB,EAChB,CAAgB;IAEhB,OAAO,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,uBAAuB,CAAC,OAAuB;IAC7D,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,qBAAqB,CAClD,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,SAAS,CAClB,CAAC;IACF,OAAO,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAC9C,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAC/B,OAAiC;IAEjC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,UAAU,CAAC,cAAc,CAAC;IACnC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAiC;IAEjC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,wBAAwB,CACtC,OAAiC;IAEjC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,uBAAuB,CAAC,QAAuB;IAC7D,OAAO,QAAQ,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,cAAc,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"uniswap.js","sourceRoot":"","sources":["../../../src/config/uniswap.ts"],"names":[],"mappings":"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"}
|
package/build/src/index.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export interface CelinaClient {
|
|
|
35
35
|
transaction: TransactionService;
|
|
36
36
|
/** Mento FX quotes, estimates, and `prepareFx` flows. */
|
|
37
37
|
mentoFx: MentoFxService;
|
|
38
|
-
/** Uniswap v4 quotes, estimates, and `prepareSwap` flows. */
|
|
38
|
+
/** Uniswap v3 and v4 quotes, estimates, and `prepareSwap` flows. */
|
|
39
39
|
uniswap: UniswapService;
|
|
40
40
|
/** Aave V3 `getBalances`, `prepareSupply`, and `prepareWithdraw` on Celo. */
|
|
41
41
|
aave: AaveService;
|
|
@@ -89,9 +89,9 @@ export type { SdkConfig } from "./config/sdk-config.js";
|
|
|
89
89
|
export type { ResolvedToken } from "./services/token.service.js";
|
|
90
90
|
/** Slippage, deadline, and recipient options for Mento FX swaps. */
|
|
91
91
|
export type { MentoFxParams } from "./services/mento-fx.service.js";
|
|
92
|
-
/** Unordered registry-token pair listing for Mento FX / Uniswap
|
|
92
|
+
/** Unordered registry-token pair listing for Mento FX / Uniswap. */
|
|
93
93
|
export type { SwapPair, SwapPairsResult } from "./services/swap-pairs.js";
|
|
94
|
-
/** Slippage, deadline, and
|
|
94
|
+
/** Slippage, deadline, recipient, and optional venue pin for Uniswap swaps. */
|
|
95
95
|
export type { UniswapSwapParams } from "./services/uniswap.service.js";
|
|
96
96
|
/** Pagination and metadata options for governance proposal lists. */
|
|
97
97
|
export type { GovernanceProposalsOptions } from "./services/governance.service.js";
|
|
@@ -8,6 +8,13 @@ export declare class AaveService {
|
|
|
8
8
|
constructor(clientFactory: CeloClientFactory);
|
|
9
9
|
private getPublicClient;
|
|
10
10
|
private assertUnderlyingBalance;
|
|
11
|
+
/**
|
|
12
|
+
* Reject early when the Aave reserve's supply cap would be exceeded.
|
|
13
|
+
* Checked before any approve/supply step is built, so the error surfaces
|
|
14
|
+
* before the user ever signs a transaction. A `supplyCap` of 0 means
|
|
15
|
+
* Aave has no cap configured for this reserve.
|
|
16
|
+
*/
|
|
17
|
+
private assertSupplyCapAvailable;
|
|
11
18
|
private readATokenBalance;
|
|
12
19
|
private assertATokenBalance;
|
|
13
20
|
/**
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/** Aave V3 on Celo: prepareSupply and prepareWithdraw return multi-step flows (approve + pool call). */
|
|
2
2
|
import { encodeFunctionData, erc20Abi, formatUnits } from "viem";
|
|
3
|
+
import { aaveDataProviderAbi } from "../abis/aave-data-provider.js";
|
|
3
4
|
import { aavePoolAbi } from "../abis/aave-pool.js";
|
|
4
|
-
import { AAVE_ASSETS, AAVE_POOL, resolveAaveAsset, } from "../config/aave.js";
|
|
5
|
+
import { AAVE_ASSETS, AAVE_POOL, AAVE_PROTOCOL_DATA_PROVIDER, resolveAaveAsset, } from "../config/aave.js";
|
|
5
6
|
import { appendCelinaCalldataTag } from "../config/celina-tag.js";
|
|
6
7
|
import { serializePreparedFlow, } from "../types/prepared.js";
|
|
7
8
|
import { CHAIN } from "../config/chains.js";
|
|
@@ -35,6 +36,34 @@ export class AaveService {
|
|
|
35
36
|
throw new Error(`Insufficient ${asset.symbol} balance. Required ${amount} ${asset.symbol}, available ${balance.toString()} raw units.${celoHint}`);
|
|
36
37
|
}
|
|
37
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Reject early when the Aave reserve's supply cap would be exceeded.
|
|
41
|
+
* Checked before any approve/supply step is built, so the error surfaces
|
|
42
|
+
* before the user ever signs a transaction. A `supplyCap` of 0 means
|
|
43
|
+
* Aave has no cap configured for this reserve.
|
|
44
|
+
*/
|
|
45
|
+
async assertSupplyCapAvailable(asset, publicClient, amountWei, decimals) {
|
|
46
|
+
const [, supplyCap] = await publicClient.readContract({
|
|
47
|
+
address: AAVE_PROTOCOL_DATA_PROVIDER,
|
|
48
|
+
abi: aaveDataProviderAbi,
|
|
49
|
+
functionName: "getReserveCaps",
|
|
50
|
+
args: [asset.underlying],
|
|
51
|
+
});
|
|
52
|
+
if (supplyCap === 0n) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const supplyCapWei = supplyCap * 10n ** BigInt(decimals);
|
|
56
|
+
const totalSupply = await publicClient.readContract({
|
|
57
|
+
address: asset.aToken,
|
|
58
|
+
abi: erc20Abi,
|
|
59
|
+
functionName: "totalSupply",
|
|
60
|
+
});
|
|
61
|
+
if (totalSupply + amountWei > supplyCapWei) {
|
|
62
|
+
const available = supplyCapWei > totalSupply ? supplyCapWei - totalSupply : 0n;
|
|
63
|
+
const availableFormatted = formatUnits(available, decimals);
|
|
64
|
+
throw new Error(`Aave ${asset.symbol} supply cap reached. Only ${availableFormatted} ${asset.symbol} can still be supplied to this market.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
38
67
|
async readATokenBalance(asset, publicClient, owner) {
|
|
39
68
|
return publicClient.readContract({
|
|
40
69
|
address: asset.aToken,
|
|
@@ -125,6 +154,7 @@ export class AaveService {
|
|
|
125
154
|
await this.assertUnderlyingBalance(asset, publicClient, from, amount);
|
|
126
155
|
const resolved = this.tokenService.resolveToken(asset.symbol);
|
|
127
156
|
const amountWei = this.tokenService.parseAmount(amount, resolved.decimals);
|
|
157
|
+
await this.assertSupplyCapAvailable(asset, publicClient, amountWei, resolved.decimals);
|
|
128
158
|
const steps = [];
|
|
129
159
|
if (await this.needsApproval(asset.underlying, from, amountWei)) {
|
|
130
160
|
const approveData = appendCelinaCalldataTag(encodeFunctionData({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aave.service.js","sourceRoot":"","sources":["../../../src/services/aave.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"aave.service.js","sourceRoot":"","sources":["../../../src/services/aave.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/** Graph fields shared by the v3 and v4 pool indexes. */
|
|
2
|
+
type UniswapPairGraph = {
|
|
3
|
+
poolsByPair: Iterable<readonly [string, unknown]>;
|
|
4
|
+
adjacency: Map<string, Set<string>>;
|
|
5
|
+
};
|
|
6
|
+
/** Uniswap venue that currently has a pool or multi-hop path for a pair. */
|
|
7
|
+
export type UniswapVenue = "uniswap_v3" | "uniswap_v4";
|
|
2
8
|
/** One unordered registry-token pair with hop count. */
|
|
3
9
|
export type SwapPair = {
|
|
4
10
|
token_a: string;
|
|
5
11
|
token_b: string;
|
|
6
12
|
hops: number;
|
|
13
|
+
/** Set on Uniswap listings. Omitted for Mento pairs. */
|
|
14
|
+
venues?: UniswapVenue[];
|
|
7
15
|
};
|
|
8
|
-
/** Mento FX or Uniswap
|
|
16
|
+
/** Mento FX or Uniswap pair listing returned to tools and SDK callers. */
|
|
9
17
|
export type SwapPairsResult = {
|
|
10
18
|
network: "mainnet";
|
|
11
19
|
protocol: "mento_fx" | "uniswap_v4";
|
|
@@ -35,9 +43,15 @@ export declare function filterPairsByToken(pairs: SwapPair[], symbol: string): {
|
|
|
35
43
|
export declare function withTokenFilter(result: SwapPairsResult, symbol?: string): SwapPairsResult;
|
|
36
44
|
/** Build unordered registry pairs from Mento `routes.getRoutes()` results. */
|
|
37
45
|
export declare function buildPairsFromMentoRoutes(routes: readonly MentoRouteLike[]): SwapPair[];
|
|
46
|
+
/** Tag every pair with a single Uniswap venue. */
|
|
47
|
+
export declare function withVenue(pairs: SwapPair[], venue: UniswapVenue): SwapPair[];
|
|
48
|
+
/**
|
|
49
|
+
* Merge pair listings. Hop count is the shortest path. Venues are the union.
|
|
50
|
+
*/
|
|
51
|
+
export declare function mergeSwapPairs(lists: SwapPair[][]): SwapPair[];
|
|
38
52
|
/**
|
|
39
|
-
* Build unordered registry pairs from a Uniswap
|
|
53
|
+
* Build unordered registry pairs from a Uniswap pool index.
|
|
40
54
|
* Direct pools are hops: 1; two-hop adjacency among registry tokens is hops: 2.
|
|
41
55
|
*/
|
|
42
|
-
export declare function buildPairsFromUniswapIndex(index:
|
|
56
|
+
export declare function buildPairsFromUniswapIndex(index: UniswapPairGraph): SwapPair[];
|
|
43
57
|
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared swap-pair listing helpers for Mento FX and Uniswap v4.
|
|
2
|
+
* Shared swap-pair listing helpers for Mento FX and Uniswap v3/v4.
|
|
3
3
|
* Pair existence only — no quotes.
|
|
4
4
|
*/
|
|
5
5
|
import { findKnownToken, KNOWN_TOKENS, MENTO_CELO_ADDRESS } from "../config/chains.js";
|
|
@@ -83,8 +83,41 @@ export function buildPairsFromMentoRoutes(routes) {
|
|
|
83
83
|
}
|
|
84
84
|
return sortedPairs(map);
|
|
85
85
|
}
|
|
86
|
+
/** Tag every pair with a single Uniswap venue. */
|
|
87
|
+
export function withVenue(pairs, venue) {
|
|
88
|
+
return pairs.map((pair) => ({ ...pair, venues: [venue] }));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Merge pair listings. Hop count is the shortest path. Venues are the union.
|
|
92
|
+
*/
|
|
93
|
+
export function mergeSwapPairs(lists) {
|
|
94
|
+
const map = new Map();
|
|
95
|
+
for (const list of lists) {
|
|
96
|
+
for (const pair of list) {
|
|
97
|
+
const key = pairKey(pair.token_a, pair.token_b);
|
|
98
|
+
const existing = map.get(key);
|
|
99
|
+
if (!existing) {
|
|
100
|
+
map.set(key, {
|
|
101
|
+
...pair,
|
|
102
|
+
venues: pair.venues ? [...pair.venues] : undefined,
|
|
103
|
+
});
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const venues = [
|
|
107
|
+
...new Set([...(existing.venues ?? []), ...(pair.venues ?? [])]),
|
|
108
|
+
].sort();
|
|
109
|
+
map.set(key, {
|
|
110
|
+
token_a: existing.token_a,
|
|
111
|
+
token_b: existing.token_b,
|
|
112
|
+
hops: Math.min(existing.hops, pair.hops),
|
|
113
|
+
...(venues.length > 0 ? { venues } : {}),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return sortedPairs(map);
|
|
118
|
+
}
|
|
86
119
|
/**
|
|
87
|
-
* Build unordered registry pairs from a Uniswap
|
|
120
|
+
* Build unordered registry pairs from a Uniswap pool index.
|
|
88
121
|
* Direct pools are hops: 1; two-hop adjacency among registry tokens is hops: 2.
|
|
89
122
|
*/
|
|
90
123
|
export function buildPairsFromUniswapIndex(index) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swap-pairs.js","sourceRoot":"","sources":["../../../src/services/swap-pairs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"swap-pairs.js","sourceRoot":"","sources":["../../../src/services/swap-pairs.ts"],"names":[],"mappings":"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"}
|