@grimoirelabs/venues 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/README.md +45 -0
- package/dist/aave-v3.d.ts +16 -0
- package/dist/aave-v3.d.ts.map +1 -0
- package/dist/aave-v3.js +272 -0
- package/dist/aave-v3.js.map +1 -0
- package/dist/across.d.ts +12 -0
- package/dist/across.d.ts.map +1 -0
- package/dist/across.js +154 -0
- package/dist/across.js.map +1 -0
- package/dist/cli/aave.d.ts +3 -0
- package/dist/cli/aave.d.ts.map +1 -0
- package/dist/cli/aave.js +81 -0
- package/dist/cli/aave.js.map +1 -0
- package/dist/cli/hyperliquid.d.ts +3 -0
- package/dist/cli/hyperliquid.d.ts.map +1 -0
- package/dist/cli/hyperliquid.js +72 -0
- package/dist/cli/hyperliquid.js.map +1 -0
- package/dist/cli/morpho-blue.d.ts +3 -0
- package/dist/cli/morpho-blue.d.ts.map +1 -0
- package/dist/cli/morpho-blue.js +34 -0
- package/dist/cli/morpho-blue.js.map +1 -0
- package/dist/cli/uniswap.d.ts +3 -0
- package/dist/cli/uniswap.d.ts.map +1 -0
- package/dist/cli/uniswap.js +37 -0
- package/dist/cli/uniswap.js.map +1 -0
- package/dist/cli/utils.d.ts +10 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +85 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/compound-v3.d.ts +3 -0
- package/dist/compound-v3.d.ts.map +1 -0
- package/dist/compound-v3.js +12 -0
- package/dist/compound-v3.js.map +1 -0
- package/dist/erc20.d.ts +12 -0
- package/dist/erc20.d.ts.map +1 -0
- package/dist/erc20.js +49 -0
- package/dist/erc20.js.map +1 -0
- package/dist/hyperliquid.d.ts +11 -0
- package/dist/hyperliquid.d.ts.map +1 -0
- package/dist/hyperliquid.js +118 -0
- package/dist/hyperliquid.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/morpho-blue.d.ts +15 -0
- package/dist/morpho-blue.d.ts.map +1 -0
- package/dist/morpho-blue.js +176 -0
- package/dist/morpho-blue.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/uniswap-v3.d.ts +16 -0
- package/dist/uniswap-v3.d.ts.map +1 -0
- package/dist/uniswap-v3.js +287 -0
- package/dist/uniswap-v3.js.map +1 -0
- package/dist/uniswap-v4.d.ts +15 -0
- package/dist/uniswap-v4.d.ts.map +1 -0
- package/dist/uniswap-v4.js +535 -0
- package/dist/uniswap-v4.js.map +1 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# @grimoirelabs/venues
|
|
2
|
+
|
|
3
|
+
Official Grimoire venue adapters bundle.
|
|
4
|
+
|
|
5
|
+
## Adapters
|
|
6
|
+
|
|
7
|
+
- `aave_v3` (AaveKit TypeScript)
|
|
8
|
+
- `morpho_blue` (Morpho Blue SDK)
|
|
9
|
+
- `uniswap_v3` (Uniswap V3 SDK)
|
|
10
|
+
- `hyperliquid` (Hyperliquid SDK, offchain)
|
|
11
|
+
- `across` (Across Protocol bridge SDK)
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
```ts
|
|
16
|
+
import { adapters } from "@grimoirelabs/venues";
|
|
17
|
+
import { execute } from "@grimoirelabs/core";
|
|
18
|
+
|
|
19
|
+
await execute({
|
|
20
|
+
spell,
|
|
21
|
+
vault,
|
|
22
|
+
chain,
|
|
23
|
+
wallet,
|
|
24
|
+
provider,
|
|
25
|
+
executionMode: "execute",
|
|
26
|
+
adapters,
|
|
27
|
+
});
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Adapters may require configuration via factory functions for production use.
|
|
31
|
+
|
|
32
|
+
## CLI tools
|
|
33
|
+
|
|
34
|
+
Each venue exposes a small read-only CLI for fetching public data:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
grimoire-aave health
|
|
38
|
+
grimoire-aave markets --chain 1
|
|
39
|
+
|
|
40
|
+
grimoire-uniswap routers
|
|
41
|
+
grimoire-morpho-blue addresses --chain 1
|
|
42
|
+
|
|
43
|
+
grimoire-hyperliquid mids
|
|
44
|
+
grimoire-hyperliquid l2-book --coin BTC
|
|
45
|
+
```
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AaveClient } from "@aave/client";
|
|
2
|
+
import { borrow, repay, supply, withdraw } from "@aave/client/actions";
|
|
3
|
+
import type { Address, VenueAdapter } from "@grimoirelabs/core";
|
|
4
|
+
export interface AaveV3AdapterConfig {
|
|
5
|
+
markets: Record<number, Address>;
|
|
6
|
+
client?: AaveClient;
|
|
7
|
+
actions?: {
|
|
8
|
+
supply: typeof supply;
|
|
9
|
+
withdraw: typeof withdraw;
|
|
10
|
+
borrow: typeof borrow;
|
|
11
|
+
repay: typeof repay;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export declare function createAaveV3Adapter(config?: AaveV3AdapterConfig): VenueAdapter;
|
|
15
|
+
export declare const aaveV3Adapter: VenueAdapter;
|
|
16
|
+
//# sourceMappingURL=aave-v3.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aave-v3.d.ts","sourceRoot":"","sources":["../src/aave-v3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAU,OAAO,EAAoB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE1F,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,OAAO,MAAM,CAAC;QACtB,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,MAAM,EAAE,OAAO,MAAM,CAAC;QACtB,KAAK,EAAE,OAAO,KAAK,CAAC;KACrB,CAAC;CACH;AAQD,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,mBAAkD,GACzD,YAAY,CAoGd;AAED,eAAO,MAAM,aAAa,cAAwB,CAAC"}
|
package/dist/aave-v3.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { AaveClient, chainId, evmAddress } from "@aave/client";
|
|
2
|
+
import { borrow, repay, supply, withdraw } from "@aave/client/actions";
|
|
3
|
+
const DEFAULT_MARKETS = {
|
|
4
|
+
1: "0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2",
|
|
5
|
+
8453: "0xA238Dd80C259a72e81d7e4664a9801593F98d1c5",
|
|
6
|
+
};
|
|
7
|
+
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
8
|
+
export function createAaveV3Adapter(config = { markets: DEFAULT_MARKETS }) {
|
|
9
|
+
const client = config.client ?? AaveClient.create();
|
|
10
|
+
const actions = config.actions ?? { supply, withdraw, borrow, repay };
|
|
11
|
+
return {
|
|
12
|
+
meta: {
|
|
13
|
+
name: "aave_v3",
|
|
14
|
+
supportedChains: Object.keys(config.markets).map((id) => Number.parseInt(id, 10)),
|
|
15
|
+
actions: ["lend", "withdraw", "borrow", "repay"],
|
|
16
|
+
description: "Aave V3 adapter",
|
|
17
|
+
},
|
|
18
|
+
async buildAction(action, ctx) {
|
|
19
|
+
const market = config.markets[ctx.chainId];
|
|
20
|
+
if (!market) {
|
|
21
|
+
throw new Error(`No Aave V3 market configured for chain ${ctx.chainId}`);
|
|
22
|
+
}
|
|
23
|
+
if (!isAaveAction(action)) {
|
|
24
|
+
throw new Error(`Unsupported Aave action: ${action.type}`);
|
|
25
|
+
}
|
|
26
|
+
const assetAddress = resolveAssetAddress(action.asset, ctx.chainId);
|
|
27
|
+
const decimals = resolveAssetDecimals(action.asset, ctx.chainId);
|
|
28
|
+
const humanAmount = toHumanAmount(action.amount, decimals);
|
|
29
|
+
const rawAmount = toRawAmountString(action.amount);
|
|
30
|
+
const address = evmAddress(ctx.walletAddress);
|
|
31
|
+
const marketAddress = evmAddress(market);
|
|
32
|
+
const chain = chainId(ctx.chainId);
|
|
33
|
+
const requestBase = {
|
|
34
|
+
market: marketAddress,
|
|
35
|
+
chainId: chain,
|
|
36
|
+
};
|
|
37
|
+
let result;
|
|
38
|
+
switch (action.type) {
|
|
39
|
+
case "lend": {
|
|
40
|
+
const request = {
|
|
41
|
+
...requestBase,
|
|
42
|
+
sender: address,
|
|
43
|
+
amount: { erc20: { currency: evmAddress(assetAddress), value: humanAmount } },
|
|
44
|
+
};
|
|
45
|
+
result = await actions.supply(client, request);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case "withdraw": {
|
|
49
|
+
const request = {
|
|
50
|
+
...requestBase,
|
|
51
|
+
sender: address,
|
|
52
|
+
amount: { erc20: { currency: evmAddress(assetAddress), value: { exact: rawAmount } } },
|
|
53
|
+
recipient: address,
|
|
54
|
+
};
|
|
55
|
+
result = await actions.withdraw(client, request);
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
case "borrow": {
|
|
59
|
+
const request = {
|
|
60
|
+
...requestBase,
|
|
61
|
+
sender: address,
|
|
62
|
+
amount: { erc20: { currency: evmAddress(assetAddress), value: humanAmount } },
|
|
63
|
+
recipient: address,
|
|
64
|
+
};
|
|
65
|
+
result = await actions.borrow(client, request);
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
case "repay": {
|
|
69
|
+
const request = {
|
|
70
|
+
...requestBase,
|
|
71
|
+
sender: address,
|
|
72
|
+
amount: { erc20: { currency: evmAddress(assetAddress), value: { exact: rawAmount } } },
|
|
73
|
+
};
|
|
74
|
+
result = await actions.repay(client, request);
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
default:
|
|
78
|
+
throw new Error("Unsupported Aave action");
|
|
79
|
+
}
|
|
80
|
+
const planResult = await result;
|
|
81
|
+
const planWrapper = planResult;
|
|
82
|
+
if (planWrapper?.isErr?.()) {
|
|
83
|
+
throw new Error(planWrapper.error?.message ?? "Aave action failed");
|
|
84
|
+
}
|
|
85
|
+
const plan = extractExecutionPlan(planResult);
|
|
86
|
+
const allowInsufficientBalance = ctx.mode === "dry-run" || ctx.mode === "simulate";
|
|
87
|
+
if (allowInsufficientBalance &&
|
|
88
|
+
plan &&
|
|
89
|
+
typeof plan === "object" &&
|
|
90
|
+
"__typename" in plan &&
|
|
91
|
+
plan.__typename === "InsufficientBalanceError") {
|
|
92
|
+
return [buildInsufficientBalancePlaceholder(plan, action, ctx.mode)];
|
|
93
|
+
}
|
|
94
|
+
return buildAaveTransactions(plan, action);
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export const aaveV3Adapter = createAaveV3Adapter();
|
|
99
|
+
function isAaveAction(action) {
|
|
100
|
+
return ["lend", "withdraw", "borrow", "repay"].includes(action.type);
|
|
101
|
+
}
|
|
102
|
+
function isApprovalRequired(plan) {
|
|
103
|
+
return plan.__typename === "ApprovalRequired";
|
|
104
|
+
}
|
|
105
|
+
function isTransactionRequest(plan) {
|
|
106
|
+
return plan.__typename === "TransactionRequest";
|
|
107
|
+
}
|
|
108
|
+
function extractExecutionPlan(planResult) {
|
|
109
|
+
if (planResult && typeof planResult === "object" && "__typename" in planResult) {
|
|
110
|
+
return planResult;
|
|
111
|
+
}
|
|
112
|
+
if (planResult &&
|
|
113
|
+
typeof planResult === "object" &&
|
|
114
|
+
"value" in planResult &&
|
|
115
|
+
planResult.value &&
|
|
116
|
+
typeof planResult.value === "object" &&
|
|
117
|
+
"__typename" in planResult.value) {
|
|
118
|
+
return planResult.value;
|
|
119
|
+
}
|
|
120
|
+
return planResult;
|
|
121
|
+
}
|
|
122
|
+
function buildAaveTransactions(plan, action) {
|
|
123
|
+
if (isApprovalRequired(plan)) {
|
|
124
|
+
return [
|
|
125
|
+
toBuiltTx(plan.approval, action, `Aave V3 approve ${action.asset}`),
|
|
126
|
+
toBuiltTx(plan.originalTransaction, action, `Aave V3 ${action.type} ${action.asset}`),
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
if (plan.__typename === "InsufficientBalanceError") {
|
|
130
|
+
const err = plan;
|
|
131
|
+
const required = err.required?.value ?? err.required?.raw ?? "unknown";
|
|
132
|
+
const available = err.available?.value ?? err.available?.raw ?? "unknown";
|
|
133
|
+
throw new Error(`Aave V3 ${action.type}: insufficient balance (required: ${required}, available: ${available})`);
|
|
134
|
+
}
|
|
135
|
+
if (!isTransactionRequest(plan)) {
|
|
136
|
+
throw new Error(`Unsupported Aave execution plan: ${plan.__typename}`);
|
|
137
|
+
}
|
|
138
|
+
return [toBuiltTx(plan, action, `Aave V3 ${action.type} ${action.asset}`)];
|
|
139
|
+
}
|
|
140
|
+
function buildInsufficientBalancePlaceholder(plan, action, mode) {
|
|
141
|
+
const err = plan;
|
|
142
|
+
const required = err.required?.value ?? err.required?.raw;
|
|
143
|
+
const available = err.available?.value ?? err.available?.raw;
|
|
144
|
+
const balanceInfo = required && available ? ` (required: ${required}, available: ${available})` : "";
|
|
145
|
+
const modeLabel = mode ? ` ${mode}` : "";
|
|
146
|
+
return {
|
|
147
|
+
tx: {
|
|
148
|
+
to: ZERO_ADDRESS,
|
|
149
|
+
data: "0x",
|
|
150
|
+
value: 0n,
|
|
151
|
+
},
|
|
152
|
+
description: `Aave V3 ${action.type} ${action.asset}${modeLabel} placeholder${balanceInfo}`,
|
|
153
|
+
action,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
function toBuiltTx(request, action, description) {
|
|
157
|
+
return {
|
|
158
|
+
tx: {
|
|
159
|
+
to: request.to,
|
|
160
|
+
data: request.data,
|
|
161
|
+
value: toBigIntValue(request.value),
|
|
162
|
+
},
|
|
163
|
+
description,
|
|
164
|
+
action,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function toBigIntValue(value) {
|
|
168
|
+
if (value === undefined)
|
|
169
|
+
return 0n;
|
|
170
|
+
if (typeof value === "bigint")
|
|
171
|
+
return value;
|
|
172
|
+
if (typeof value === "number")
|
|
173
|
+
return BigInt(value);
|
|
174
|
+
if (typeof value === "string")
|
|
175
|
+
return BigInt(value);
|
|
176
|
+
return 0n;
|
|
177
|
+
}
|
|
178
|
+
function resolveAssetAddress(asset, chainId) {
|
|
179
|
+
if (!asset) {
|
|
180
|
+
throw new Error("Asset is required for Aave action");
|
|
181
|
+
}
|
|
182
|
+
if (asset.startsWith("0x") && asset.length === 42) {
|
|
183
|
+
return asset;
|
|
184
|
+
}
|
|
185
|
+
const KNOWN_TOKENS = {
|
|
186
|
+
1: {
|
|
187
|
+
USDC: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
188
|
+
USDT: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
|
|
189
|
+
DAI: "0x6B175474E89094C44Da98b954EedeAC495271d0F",
|
|
190
|
+
WETH: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
191
|
+
},
|
|
192
|
+
8453: {
|
|
193
|
+
USDC: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
194
|
+
WETH: "0x4200000000000000000000000000000000000006",
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
const chainTokens = KNOWN_TOKENS[chainId ?? 1] ?? KNOWN_TOKENS[1];
|
|
198
|
+
const address = chainTokens?.[asset.toUpperCase()];
|
|
199
|
+
if (!address) {
|
|
200
|
+
throw new Error(`Unknown asset: ${asset} on chain ${chainId ?? 1}. Provide address directly.`);
|
|
201
|
+
}
|
|
202
|
+
return address;
|
|
203
|
+
}
|
|
204
|
+
function toRawAmountString(amount) {
|
|
205
|
+
if (amount === "max") {
|
|
206
|
+
throw new Error("Aave adapter requires explicit amount, not 'max'");
|
|
207
|
+
}
|
|
208
|
+
if (typeof amount === "bigint")
|
|
209
|
+
return amount.toString();
|
|
210
|
+
if (typeof amount === "number")
|
|
211
|
+
return Math.floor(amount).toString();
|
|
212
|
+
if (typeof amount === "string")
|
|
213
|
+
return amount;
|
|
214
|
+
if (typeof amount === "object" && amount?.kind === "literal") {
|
|
215
|
+
return String(amount.value);
|
|
216
|
+
}
|
|
217
|
+
throw new Error("Unsupported amount type for Aave action");
|
|
218
|
+
}
|
|
219
|
+
function resolveAssetDecimals(asset, _chainId) {
|
|
220
|
+
const KNOWN_DECIMALS = {
|
|
221
|
+
USDC: 6,
|
|
222
|
+
USDT: 6,
|
|
223
|
+
DAI: 18,
|
|
224
|
+
WETH: 18,
|
|
225
|
+
ETH: 18,
|
|
226
|
+
};
|
|
227
|
+
if (asset && !asset.startsWith("0x")) {
|
|
228
|
+
const d = KNOWN_DECIMALS[asset.toUpperCase()];
|
|
229
|
+
if (d !== undefined)
|
|
230
|
+
return d;
|
|
231
|
+
}
|
|
232
|
+
return 18; // default to 18 decimals
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Convert a raw amount (e.g. 100000 for 0.1 USDC) to the human-readable
|
|
236
|
+
* BigDecimal string the Aave SDK expects (e.g. "0.1").
|
|
237
|
+
*/
|
|
238
|
+
function toHumanAmount(amount, decimals) {
|
|
239
|
+
if (amount === "max") {
|
|
240
|
+
throw new Error("Aave adapter requires explicit amount, not 'max'");
|
|
241
|
+
}
|
|
242
|
+
let raw;
|
|
243
|
+
if (typeof amount === "bigint")
|
|
244
|
+
raw = amount;
|
|
245
|
+
else if (typeof amount === "number")
|
|
246
|
+
raw = BigInt(Math.floor(amount));
|
|
247
|
+
else if (typeof amount === "string")
|
|
248
|
+
raw = BigInt(amount);
|
|
249
|
+
else if (typeof amount === "object" && amount?.kind === "literal") {
|
|
250
|
+
const lit = amount.value;
|
|
251
|
+
if (typeof lit === "bigint")
|
|
252
|
+
raw = lit;
|
|
253
|
+
else if (typeof lit === "number")
|
|
254
|
+
raw = BigInt(Math.floor(lit));
|
|
255
|
+
else if (typeof lit === "string")
|
|
256
|
+
raw = BigInt(lit);
|
|
257
|
+
else if (typeof lit === "boolean")
|
|
258
|
+
raw = BigInt(lit ? 1 : 0);
|
|
259
|
+
else
|
|
260
|
+
throw new Error("Unsupported literal amount type for Aave action");
|
|
261
|
+
}
|
|
262
|
+
else
|
|
263
|
+
throw new Error("Unsupported amount type for Aave action");
|
|
264
|
+
const divisor = 10n ** BigInt(decimals);
|
|
265
|
+
const whole = raw / divisor;
|
|
266
|
+
const frac = raw % divisor;
|
|
267
|
+
if (frac === 0n)
|
|
268
|
+
return whole.toString();
|
|
269
|
+
const fracStr = frac.toString().padStart(decimals, "0").replace(/0+$/, "");
|
|
270
|
+
return `${whole}.${fracStr}`;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=aave-v3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aave-v3.js","sourceRoot":"","sources":["../src/aave-v3.ts"],"names":[],"mappings":"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"}
|
package/dist/across.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { getQuote } from "@across-protocol/app-sdk";
|
|
2
|
+
import type { Address, VenueAdapter } from "@grimoirelabs/core";
|
|
3
|
+
export interface AcrossAdapterConfig {
|
|
4
|
+
integratorId?: `0x${string}`;
|
|
5
|
+
assets: Record<string, Record<number, Address>>;
|
|
6
|
+
apiUrl?: string;
|
|
7
|
+
getQuote?: typeof getQuote;
|
|
8
|
+
slippageBps?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function createAcrossAdapter(config?: AcrossAdapterConfig): VenueAdapter;
|
|
11
|
+
export declare const acrossAdapter: VenueAdapter;
|
|
12
|
+
//# sourceMappingURL=across.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"across.d.ts","sourceRoot":"","sources":["../src/across.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAE/F,OAAO,KAAK,EAAE,OAAO,EAAoB,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlF,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAgB,mBAAmB,CACjC,MAAM,GAAE,mBAAyE,GAChF,YAAY,CAgHd;AAkBD,eAAO,MAAM,aAAa,cAGxB,CAAC"}
|
package/dist/across.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { addressToBytes32, getIntegratorDataSuffix, getQuote } from "@across-protocol/app-sdk";
|
|
2
|
+
import { spokePoolAbiV3_5 } from "@across-protocol/app-sdk/dist/abis/SpokePool/v3_5.js";
|
|
3
|
+
import { zeroAddress } from "viem";
|
|
4
|
+
import { buildApprovalIfNeeded } from "./erc20.js";
|
|
5
|
+
const DEFAULT_INTEGRATOR_ID = "0x0000";
|
|
6
|
+
export function createAcrossAdapter(config = { assets: {}, integratorId: DEFAULT_INTEGRATOR_ID }) {
|
|
7
|
+
const getQuoteImpl = config.getQuote ?? getQuote;
|
|
8
|
+
const integratorId = config.integratorId ?? DEFAULT_INTEGRATOR_ID;
|
|
9
|
+
const supportedChains = Array.from(new Set(Object.values(config.assets).flatMap((chains) => Object.keys(chains).map(Number))));
|
|
10
|
+
return {
|
|
11
|
+
meta: {
|
|
12
|
+
name: "across",
|
|
13
|
+
supportedChains,
|
|
14
|
+
actions: ["bridge"],
|
|
15
|
+
description: "Across Protocol bridge adapter",
|
|
16
|
+
},
|
|
17
|
+
async buildAction(action, ctx) {
|
|
18
|
+
if (action.type !== "bridge") {
|
|
19
|
+
throw new Error(`Across adapter only supports bridge actions (got ${action.type})`);
|
|
20
|
+
}
|
|
21
|
+
const amount = toBigInt(action.amount);
|
|
22
|
+
const originChainId = ctx.chainId;
|
|
23
|
+
if (typeof action.toChain !== "number") {
|
|
24
|
+
throw new Error("Across adapter requires numeric toChain");
|
|
25
|
+
}
|
|
26
|
+
const destinationChainId = action.toChain;
|
|
27
|
+
const inputToken = resolveAssetAddress(action.asset, originChainId, config.assets);
|
|
28
|
+
const outputToken = resolveAssetAddress(action.asset, destinationChainId, config.assets, inputToken);
|
|
29
|
+
const quote = await getQuoteImpl({
|
|
30
|
+
route: {
|
|
31
|
+
originChainId,
|
|
32
|
+
destinationChainId,
|
|
33
|
+
inputToken,
|
|
34
|
+
outputToken,
|
|
35
|
+
},
|
|
36
|
+
inputAmount: amount,
|
|
37
|
+
apiUrl: config.apiUrl,
|
|
38
|
+
recipient: ctx.walletAddress,
|
|
39
|
+
});
|
|
40
|
+
const client = ctx.provider.getClient?.();
|
|
41
|
+
if (!client?.simulateContract) {
|
|
42
|
+
throw new Error("Across adapter requires a provider with simulateContract support");
|
|
43
|
+
}
|
|
44
|
+
const slippageBps = action.constraints?.maxSlippageBps ?? config.slippageBps;
|
|
45
|
+
const minOutput = action.constraints?.minOutput ??
|
|
46
|
+
(slippageBps !== undefined
|
|
47
|
+
? applyBps(quote.deposit.outputAmount, 10_000 - slippageBps)
|
|
48
|
+
: quote.deposit.outputAmount);
|
|
49
|
+
const deposit = { ...quote.deposit, outputAmount: minOutput };
|
|
50
|
+
const recipient = deposit.recipient ?? ctx.walletAddress;
|
|
51
|
+
const simulation = await client.simulateContract({
|
|
52
|
+
account: ctx.walletAddress,
|
|
53
|
+
abi: spokePoolAbiV3_5,
|
|
54
|
+
address: deposit.spokePoolAddress,
|
|
55
|
+
functionName: "deposit",
|
|
56
|
+
args: [
|
|
57
|
+
addressToBytes32(ctx.walletAddress),
|
|
58
|
+
addressToBytes32(recipient),
|
|
59
|
+
addressToBytes32(deposit.inputToken),
|
|
60
|
+
addressToBytes32(deposit.outputToken),
|
|
61
|
+
deposit.inputAmount,
|
|
62
|
+
deposit.outputAmount,
|
|
63
|
+
BigInt(deposit.destinationChainId),
|
|
64
|
+
addressToBytes32(deposit.exclusiveRelayer ?? zeroAddress),
|
|
65
|
+
deposit.quoteTimestamp,
|
|
66
|
+
deposit.fillDeadline,
|
|
67
|
+
deposit.exclusivityDeadline,
|
|
68
|
+
deposit.message,
|
|
69
|
+
],
|
|
70
|
+
value: deposit.isNative ? deposit.inputAmount : 0n,
|
|
71
|
+
dataSuffix: getIntegratorDataSuffix(integratorId),
|
|
72
|
+
});
|
|
73
|
+
const approvalTxs = deposit.isNative
|
|
74
|
+
? []
|
|
75
|
+
: await buildApprovalIfNeeded({
|
|
76
|
+
ctx,
|
|
77
|
+
token: inputToken,
|
|
78
|
+
spender: deposit.spokePoolAddress,
|
|
79
|
+
amount: deposit.inputAmount,
|
|
80
|
+
action,
|
|
81
|
+
description: `Approve ${action.asset} for Across`,
|
|
82
|
+
});
|
|
83
|
+
const txRequest = simulation.request;
|
|
84
|
+
const to = ("to" in txRequest ? txRequest.to : txRequest.address);
|
|
85
|
+
const data = ("data" in txRequest ? txRequest.data : "0x");
|
|
86
|
+
const bridgeTx = {
|
|
87
|
+
tx: {
|
|
88
|
+
to,
|
|
89
|
+
data,
|
|
90
|
+
value: txRequest.value ?? 0n,
|
|
91
|
+
},
|
|
92
|
+
description: `Across bridge ${action.asset} ${originChainId} → ${destinationChainId}`,
|
|
93
|
+
action,
|
|
94
|
+
};
|
|
95
|
+
return [...approvalTxs, bridgeTx];
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const DEFAULT_ASSETS = {
|
|
100
|
+
USDC: {
|
|
101
|
+
1: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
102
|
+
8453: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
103
|
+
10: "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85",
|
|
104
|
+
42161: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831",
|
|
105
|
+
1337: "0x6d1e7cde53a9467b783991afd8af56d4a99b3a56",
|
|
106
|
+
},
|
|
107
|
+
WETH: {
|
|
108
|
+
1: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
109
|
+
8453: "0x4200000000000000000000000000000000000006",
|
|
110
|
+
10: "0x4200000000000000000000000000000000000006",
|
|
111
|
+
42161: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
export const acrossAdapter = createAcrossAdapter({
|
|
115
|
+
integratorId: DEFAULT_INTEGRATOR_ID,
|
|
116
|
+
assets: DEFAULT_ASSETS,
|
|
117
|
+
});
|
|
118
|
+
function resolveAssetAddress(asset, chainId, assets, fallback) {
|
|
119
|
+
if (asset.startsWith("0x") && asset.length === 42) {
|
|
120
|
+
return asset;
|
|
121
|
+
}
|
|
122
|
+
const assetMap = assets[asset];
|
|
123
|
+
const resolved = assetMap?.[chainId] ?? fallback;
|
|
124
|
+
if (!resolved) {
|
|
125
|
+
throw new Error(`No Across asset mapping for ${asset} on chain ${chainId}`);
|
|
126
|
+
}
|
|
127
|
+
return resolved;
|
|
128
|
+
}
|
|
129
|
+
function toBigInt(amount) {
|
|
130
|
+
if (typeof amount === "bigint") {
|
|
131
|
+
return amount;
|
|
132
|
+
}
|
|
133
|
+
if (typeof amount === "number") {
|
|
134
|
+
return BigInt(Math.floor(amount));
|
|
135
|
+
}
|
|
136
|
+
if (typeof amount === "string") {
|
|
137
|
+
return BigInt(amount);
|
|
138
|
+
}
|
|
139
|
+
if (isLiteralAmount(amount)) {
|
|
140
|
+
return typeof amount.value === "bigint" ? amount.value : BigInt(amount.value);
|
|
141
|
+
}
|
|
142
|
+
throw new Error("Across adapter requires a numeric amount");
|
|
143
|
+
}
|
|
144
|
+
function isLiteralAmount(value) {
|
|
145
|
+
return (typeof value === "object" &&
|
|
146
|
+
value !== null &&
|
|
147
|
+
"kind" in value &&
|
|
148
|
+
value.kind === "literal" &&
|
|
149
|
+
"value" in value);
|
|
150
|
+
}
|
|
151
|
+
function applyBps(amount, bps) {
|
|
152
|
+
return (amount * BigInt(bps)) / 10000n;
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=across.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"across.js","sourceRoot":"","sources":["../src/across.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aave.d.ts","sourceRoot":"","sources":["../../src/cli/aave.ts"],"names":[],"mappings":""}
|
package/dist/cli/aave.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { AaveClient, chainId, evmAddress } from "@aave/client";
|
|
3
|
+
import { chains, health, market, markets, reserve } from "@aave/client/actions";
|
|
4
|
+
import { getOption, parseArgs, printResult, requireOption } from "./utils.js";
|
|
5
|
+
async function main() {
|
|
6
|
+
const { command, options } = parseArgs(process.argv.slice(2));
|
|
7
|
+
if (!command || command === "help" || options.help) {
|
|
8
|
+
printUsage();
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const client = AaveClient.create();
|
|
12
|
+
switch (command) {
|
|
13
|
+
case "health": {
|
|
14
|
+
const result = await unwrap(health(client));
|
|
15
|
+
printResult({ healthy: result });
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
case "chains": {
|
|
19
|
+
const result = await unwrap(chains(client));
|
|
20
|
+
printResult(result);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
case "markets": {
|
|
24
|
+
const chain = Number.parseInt(getOption(options, "chain") ?? "1", 10);
|
|
25
|
+
const user = getOption(options, "user");
|
|
26
|
+
const result = await unwrap(markets(client, {
|
|
27
|
+
chainIds: [chainId(chain)],
|
|
28
|
+
user: user ? evmAddress(user) : undefined,
|
|
29
|
+
}));
|
|
30
|
+
printResult(result);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
case "market": {
|
|
34
|
+
const chain = Number.parseInt(requireOption(options, "chain"), 10);
|
|
35
|
+
const address = requireOption(options, "address");
|
|
36
|
+
const user = getOption(options, "user");
|
|
37
|
+
const result = await unwrap(market(client, {
|
|
38
|
+
chainId: chainId(chain),
|
|
39
|
+
address: evmAddress(address),
|
|
40
|
+
user: user ? evmAddress(user) : undefined,
|
|
41
|
+
}));
|
|
42
|
+
printResult(result);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
case "reserve": {
|
|
46
|
+
const chain = Number.parseInt(requireOption(options, "chain"), 10);
|
|
47
|
+
const marketAddress = requireOption(options, "market");
|
|
48
|
+
const token = requireOption(options, "token");
|
|
49
|
+
const result = await unwrap(reserve(client, {
|
|
50
|
+
chainId: chainId(chain),
|
|
51
|
+
market: evmAddress(marketAddress),
|
|
52
|
+
underlyingToken: evmAddress(token),
|
|
53
|
+
}));
|
|
54
|
+
printResult(result);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
default:
|
|
58
|
+
throw new Error(`Unknown command: ${command}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function printUsage() {
|
|
62
|
+
console.log("\nAave CLI (grimoire-aave)\n\nCommands:\n health\n chains\n markets --chain <id> [--user <address>]\n market --chain <id> --address <market> [--user <address>]\n reserve --chain <id> --market <address> --token <address>\n");
|
|
63
|
+
}
|
|
64
|
+
async function unwrap(result) {
|
|
65
|
+
const resolved = await result;
|
|
66
|
+
if (resolved && typeof resolved === "object" && "isErr" in resolved) {
|
|
67
|
+
const aaveResult = resolved;
|
|
68
|
+
if (aaveResult.isErr?.()) {
|
|
69
|
+
throw new Error(aaveResult.error?.message ?? "Aave request failed");
|
|
70
|
+
}
|
|
71
|
+
if (aaveResult.value !== undefined) {
|
|
72
|
+
return aaveResult.value;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return resolved;
|
|
76
|
+
}
|
|
77
|
+
main().catch((error) => {
|
|
78
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
79
|
+
process.exit(1);
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=aave.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aave.js","sourceRoot":"","sources":["../../src/cli/aave.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperliquid.d.ts","sourceRoot":"","sources":["../../src/cli/hyperliquid.ts"],"names":[],"mappings":""}
|