@grimoirelabs/venues 0.2.2 → 0.3.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/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/lifi.d.ts +10 -0
- package/dist/lifi.d.ts.map +1 -0
- package/dist/lifi.js +355 -0
- package/dist/lifi.js.map +1 -0
- package/dist/yellow.d.ts +10 -0
- package/dist/yellow.d.ts.map +1 -0
- package/dist/yellow.js +385 -0
- package/dist/yellow.js.map +1 -0
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -2,9 +2,11 @@ import type { VenueAdapter } from "@grimoirelabs/core";
|
|
|
2
2
|
import { aaveV3Adapter, createAaveV3Adapter } from "./aave-v3.js";
|
|
3
3
|
import { acrossAdapter, createAcrossAdapter } from "./across.js";
|
|
4
4
|
import { createHyperliquidAdapter, hyperliquidAdapter } from "./hyperliquid.js";
|
|
5
|
+
import { createLifiAdapter, lifiAdapter } from "./lifi.js";
|
|
5
6
|
import { createMorphoBlueAdapter, morphoBlueAdapter } from "./morpho-blue.js";
|
|
6
7
|
import { createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV3Adapter } from "./uniswap-v3.js";
|
|
7
8
|
import { createUniswapV4Adapter, DEFAULT_ROUTERS as defaultUniswapV4Routers, uniswapV4Adapter } from "./uniswap-v4.js";
|
|
9
|
+
import { createYellowAdapter, yellowAdapter } from "./yellow.js";
|
|
8
10
|
export declare const adapters: VenueAdapter[];
|
|
9
|
-
export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, };
|
|
11
|
+
export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, yellowAdapter, createYellowAdapter, lifiAdapter, createLifiAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, };
|
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,eAAO,MAAM,QAAQ,EAAE,YAAY,EASlC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,GACzB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { aaveV3Adapter, createAaveV3Adapter } from "./aave-v3.js";
|
|
2
2
|
import { acrossAdapter, createAcrossAdapter } from "./across.js";
|
|
3
3
|
import { createHyperliquidAdapter, hyperliquidAdapter } from "./hyperliquid.js";
|
|
4
|
+
import { createLifiAdapter, lifiAdapter } from "./lifi.js";
|
|
4
5
|
import { createMorphoBlueAdapter, morphoBlueAdapter } from "./morpho-blue.js";
|
|
5
6
|
import { createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV3Adapter } from "./uniswap-v3.js";
|
|
6
7
|
import { createUniswapV4Adapter, DEFAULT_ROUTERS as defaultUniswapV4Routers, uniswapV4Adapter, } from "./uniswap-v4.js";
|
|
8
|
+
import { createYellowAdapter, yellowAdapter } from "./yellow.js";
|
|
7
9
|
export const adapters = [
|
|
8
10
|
aaveV3Adapter,
|
|
9
11
|
uniswapV3Adapter,
|
|
@@ -11,6 +13,8 @@ export const adapters = [
|
|
|
11
13
|
morphoBlueAdapter,
|
|
12
14
|
hyperliquidAdapter,
|
|
13
15
|
acrossAdapter,
|
|
16
|
+
yellowAdapter,
|
|
17
|
+
lifiAdapter,
|
|
14
18
|
];
|
|
15
|
-
export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, };
|
|
19
|
+
export { aaveV3Adapter, createAaveV3Adapter, acrossAdapter, createAcrossAdapter, yellowAdapter, createYellowAdapter, lifiAdapter, createLifiAdapter, uniswapV3Adapter, createUniswapV3Adapter, defaultUniswapV3Routers, uniswapV4Adapter, createUniswapV4Adapter, defaultUniswapV4Routers, morphoBlueAdapter, createMorphoBlueAdapter, hyperliquidAdapter, createHyperliquidAdapter, };
|
|
16
20
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;IACb,aAAa;IACb,WAAW;CACZ,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,GACzB,CAAC"}
|
package/dist/lifi.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { VenueAdapter } from "@grimoirelabs/core";
|
|
2
|
+
export interface LifiAdapterConfig {
|
|
3
|
+
apiUrl?: string;
|
|
4
|
+
apiKey?: string;
|
|
5
|
+
integrator?: string;
|
|
6
|
+
fetch?: typeof fetch;
|
|
7
|
+
}
|
|
8
|
+
export declare function createLifiAdapter(config?: LifiAdapterConfig): VenueAdapter;
|
|
9
|
+
export declare const lifiAdapter: VenueAdapter;
|
|
10
|
+
//# sourceMappingURL=lifi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifi.d.ts","sourceRoot":"","sources":["../src/lifi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAMV,YAAY,EAEb,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAYD,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,iBAAsB,GAAG,YAAY,CAuF9E;AAED,eAAO,MAAM,WAAW,cAAsB,CAAC"}
|
package/dist/lifi.js
ADDED
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { isAddress, zeroAddress } from "viem";
|
|
2
|
+
const DEFAULT_LIFI_API = "https://li.quest/v1";
|
|
3
|
+
const DEFAULT_SUPPORTED_CHAINS = [1, 10, 56, 100, 137, 250, 324, 42161, 43114, 59144, 8453];
|
|
4
|
+
export function createLifiAdapter(config = {}) {
|
|
5
|
+
const fetchImpl = config.fetch ?? globalThis.fetch;
|
|
6
|
+
const apiUrl = (config.apiUrl ?? process.env.LIFI_API_URL ?? DEFAULT_LIFI_API).replace(/\/$/, "");
|
|
7
|
+
const apiKey = config.apiKey ?? process.env.LIFI_API_KEY;
|
|
8
|
+
const integrator = config.integrator ?? process.env.LIFI_INTEGRATOR;
|
|
9
|
+
const requestJson = async (method, path, body) => {
|
|
10
|
+
if (!fetchImpl) {
|
|
11
|
+
throw new Error("LI.FI adapter requires fetch support");
|
|
12
|
+
}
|
|
13
|
+
const headers = {
|
|
14
|
+
"content-type": "application/json",
|
|
15
|
+
};
|
|
16
|
+
if (apiKey)
|
|
17
|
+
headers["x-lifi-api-key"] = apiKey;
|
|
18
|
+
if (integrator)
|
|
19
|
+
headers["x-lifi-integrator"] = integrator;
|
|
20
|
+
const response = await fetchImpl(`${apiUrl}${path}`, {
|
|
21
|
+
method,
|
|
22
|
+
headers,
|
|
23
|
+
body: method === "POST" ? JSON.stringify(body ?? {}) : undefined,
|
|
24
|
+
});
|
|
25
|
+
const text = await response.text();
|
|
26
|
+
let data = {};
|
|
27
|
+
if (text.length > 0) {
|
|
28
|
+
try {
|
|
29
|
+
data = JSON.parse(text);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
throw new Error(`LI.FI ${method} ${path} returned invalid JSON`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
const message = extractErrorMessage(data) ?? `status ${response.status}`;
|
|
37
|
+
throw new Error(`LI.FI ${method} ${path} failed: ${message}`);
|
|
38
|
+
}
|
|
39
|
+
if (!isRecord(data)) {
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
return data;
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
meta: {
|
|
46
|
+
name: "lifi",
|
|
47
|
+
supportedChains: DEFAULT_SUPPORTED_CHAINS,
|
|
48
|
+
actions: ["swap", "bridge", "custom"],
|
|
49
|
+
description: "LI.FI routing adapter for swap/bridge flows",
|
|
50
|
+
executionType: "offchain",
|
|
51
|
+
},
|
|
52
|
+
async buildAction(action, ctx) {
|
|
53
|
+
const plan = await buildPlan(action, ctx, requestJson);
|
|
54
|
+
return {
|
|
55
|
+
tx: { to: zeroAddress, data: "0x", value: 0n },
|
|
56
|
+
description: plan.description,
|
|
57
|
+
action,
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
async executeAction(action, ctx) {
|
|
61
|
+
const plan = await buildPlan(action, ctx, requestJson);
|
|
62
|
+
const executePayload = { route: plan.quote };
|
|
63
|
+
const execution = await requestJson("POST", "/execute", executePayload);
|
|
64
|
+
const executionId = extractExecutionId(execution) ?? `lifi-${Date.now()}`;
|
|
65
|
+
const status = await safeRequestStatus(requestJson, executionId);
|
|
66
|
+
return {
|
|
67
|
+
id: executionId,
|
|
68
|
+
status: extractStatus(execution) ?? extractStatus(status) ?? "submitted",
|
|
69
|
+
raw: {
|
|
70
|
+
request: plan.request,
|
|
71
|
+
quote: plan.quote,
|
|
72
|
+
execution,
|
|
73
|
+
status,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export const lifiAdapter = createLifiAdapter();
|
|
80
|
+
async function buildPlan(action, ctx, requestJson) {
|
|
81
|
+
if (action.type === "swap") {
|
|
82
|
+
const amount = toBigInt(action.amount);
|
|
83
|
+
const request = {
|
|
84
|
+
fromChainId: ctx.chainId,
|
|
85
|
+
toChainId: ctx.chainId,
|
|
86
|
+
fromToken: action.assetIn,
|
|
87
|
+
toToken: action.assetOut,
|
|
88
|
+
fromAmount: amount.toString(),
|
|
89
|
+
fromAddress: ctx.walletAddress,
|
|
90
|
+
};
|
|
91
|
+
const quote = await requestJson("POST", "/quote", request);
|
|
92
|
+
enforceConstraints(action.constraints, quote);
|
|
93
|
+
return {
|
|
94
|
+
kind: "swap",
|
|
95
|
+
request,
|
|
96
|
+
quote,
|
|
97
|
+
description: `LI.FI swap ${action.assetIn} -> ${action.assetOut}`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (action.type === "bridge") {
|
|
101
|
+
if (typeof action.toChain !== "number") {
|
|
102
|
+
throw new Error("LI.FI bridge action requires numeric toChain");
|
|
103
|
+
}
|
|
104
|
+
const amount = toBigInt(action.amount);
|
|
105
|
+
const request = {
|
|
106
|
+
fromChainId: ctx.chainId,
|
|
107
|
+
toChainId: action.toChain,
|
|
108
|
+
fromToken: action.asset,
|
|
109
|
+
toToken: action.asset,
|
|
110
|
+
fromAmount: amount.toString(),
|
|
111
|
+
fromAddress: ctx.walletAddress,
|
|
112
|
+
toAddress: ctx.walletAddress,
|
|
113
|
+
};
|
|
114
|
+
const quote = await requestJson("POST", "/routes", request);
|
|
115
|
+
enforceConstraints(action.constraints, quote);
|
|
116
|
+
return {
|
|
117
|
+
kind: "bridge",
|
|
118
|
+
request,
|
|
119
|
+
quote,
|
|
120
|
+
description: `LI.FI bridge ${action.asset} ${ctx.chainId} -> ${action.toChain}`,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
if (action.type === "custom") {
|
|
124
|
+
const custom = asComposeExecuteAction(action);
|
|
125
|
+
const args = materializeArgs(custom.args);
|
|
126
|
+
const rawRequest = args.routeRequest ?? args.request ?? args.arg0;
|
|
127
|
+
if (!isRecord(rawRequest)) {
|
|
128
|
+
throw new Error("LI.FI compose_execute requires args.routeRequest (object)");
|
|
129
|
+
}
|
|
130
|
+
const request = normalizeComposeExecuteRequest(rawRequest, ctx.walletAddress);
|
|
131
|
+
const quote = await requestJson("POST", "/routes", request);
|
|
132
|
+
enforceConstraints(action.constraints, quote);
|
|
133
|
+
return {
|
|
134
|
+
kind: "compose_execute",
|
|
135
|
+
request,
|
|
136
|
+
quote,
|
|
137
|
+
description: "LI.FI compose_execute route",
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
throw new Error(`LI.FI adapter only supports swap, bridge, or custom compose_execute (got ${action.type})`);
|
|
141
|
+
}
|
|
142
|
+
function enforceConstraints(constraints, payload) {
|
|
143
|
+
if (!constraints)
|
|
144
|
+
return;
|
|
145
|
+
const output = extractAmountOut(payload);
|
|
146
|
+
if (constraints.minOutput !== undefined &&
|
|
147
|
+
output !== undefined &&
|
|
148
|
+
output < constraints.minOutput) {
|
|
149
|
+
throw new Error(`LI.FI quote output ${output.toString()} below min_output ${constraints.minOutput.toString()}`);
|
|
150
|
+
}
|
|
151
|
+
const slippageBps = extractSlippageBps(payload);
|
|
152
|
+
if (constraints.maxSlippageBps !== undefined &&
|
|
153
|
+
slippageBps !== undefined &&
|
|
154
|
+
slippageBps > constraints.maxSlippageBps) {
|
|
155
|
+
throw new Error(`LI.FI slippage ${slippageBps} bps exceeds max_slippage ${constraints.maxSlippageBps}`);
|
|
156
|
+
}
|
|
157
|
+
const gas = extractGasEstimate(payload);
|
|
158
|
+
if (constraints.maxGas !== undefined && gas !== undefined && gas > constraints.maxGas) {
|
|
159
|
+
throw new Error(`LI.FI gas estimate ${gas.toString()} exceeds max_gas ${constraints.maxGas.toString()}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function extractAmountOut(payload) {
|
|
163
|
+
const candidates = [
|
|
164
|
+
getPath(payload, ["toAmount"]),
|
|
165
|
+
getPath(payload, ["estimate", "toAmount"]),
|
|
166
|
+
getPath(payload, ["estimate", "toAmountMin"]),
|
|
167
|
+
getPath(payload, ["action", "toAmount"]),
|
|
168
|
+
getPath(payload, ["quote", "toAmount"]),
|
|
169
|
+
getPath(payload, ["route", "toAmount"]),
|
|
170
|
+
];
|
|
171
|
+
for (const candidate of candidates) {
|
|
172
|
+
const parsed = toBigIntLoose(candidate);
|
|
173
|
+
if (parsed !== undefined)
|
|
174
|
+
return parsed;
|
|
175
|
+
}
|
|
176
|
+
return undefined;
|
|
177
|
+
}
|
|
178
|
+
function extractSlippageBps(payload) {
|
|
179
|
+
const raw = getPath(payload, ["estimate", "slippage"]) ??
|
|
180
|
+
getPath(payload, ["slippage"]) ??
|
|
181
|
+
getPath(payload, ["route", "slippage"]);
|
|
182
|
+
if (typeof raw === "number" && Number.isFinite(raw)) {
|
|
183
|
+
if (raw <= 1) {
|
|
184
|
+
return Math.round(raw * 10_000);
|
|
185
|
+
}
|
|
186
|
+
return Math.round(raw);
|
|
187
|
+
}
|
|
188
|
+
if (typeof raw === "string" && raw.length > 0) {
|
|
189
|
+
const parsed = Number.parseFloat(raw);
|
|
190
|
+
if (Number.isFinite(parsed)) {
|
|
191
|
+
if (parsed <= 1) {
|
|
192
|
+
return Math.round(parsed * 10_000);
|
|
193
|
+
}
|
|
194
|
+
return Math.round(parsed);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
function extractGasEstimate(payload) {
|
|
200
|
+
const direct = toBigIntLoose(getPath(payload, ["estimate", "gasCost"]) ??
|
|
201
|
+
getPath(payload, ["estimatedGas"]) ??
|
|
202
|
+
getPath(payload, ["gasCost"]));
|
|
203
|
+
if (direct !== undefined)
|
|
204
|
+
return direct;
|
|
205
|
+
const gasCosts = getPath(payload, ["estimate", "gasCosts"]);
|
|
206
|
+
if (Array.isArray(gasCosts)) {
|
|
207
|
+
for (const item of gasCosts) {
|
|
208
|
+
if (!isRecord(item))
|
|
209
|
+
continue;
|
|
210
|
+
const amount = toBigIntLoose(item.amount);
|
|
211
|
+
if (amount !== undefined)
|
|
212
|
+
return amount;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return undefined;
|
|
216
|
+
}
|
|
217
|
+
function asComposeExecuteAction(action) {
|
|
218
|
+
if (action.type !== "custom") {
|
|
219
|
+
throw new Error(`LI.FI compose_execute expects custom action (got ${action.type})`);
|
|
220
|
+
}
|
|
221
|
+
if (action.op !== "compose_execute") {
|
|
222
|
+
throw new Error(`LI.FI custom op '${action.op}' is not supported`);
|
|
223
|
+
}
|
|
224
|
+
return action;
|
|
225
|
+
}
|
|
226
|
+
function normalizeComposeExecuteRequest(rawRequest, walletAddress) {
|
|
227
|
+
const { allowExternalToAddress, allow_external_to_address, ...request } = rawRequest;
|
|
228
|
+
const allowExternalToAddressOverride = allowExternalToAddress === true || allow_external_to_address === true;
|
|
229
|
+
const toAddress = request.toAddress;
|
|
230
|
+
if (toAddress === undefined || toAddress === null || toAddress === "") {
|
|
231
|
+
request.toAddress = walletAddress;
|
|
232
|
+
return request;
|
|
233
|
+
}
|
|
234
|
+
if (typeof toAddress !== "string" || !isAddress(toAddress)) {
|
|
235
|
+
throw new Error("LI.FI compose_execute routeRequest.toAddress must be a valid EVM address");
|
|
236
|
+
}
|
|
237
|
+
if (!sameAddress(toAddress, walletAddress) && !allowExternalToAddressOverride) {
|
|
238
|
+
throw new Error("LI.FI compose_execute routeRequest.toAddress must match walletAddress (set allowExternalToAddress=true to override)");
|
|
239
|
+
}
|
|
240
|
+
request.toAddress = toAddress;
|
|
241
|
+
return request;
|
|
242
|
+
}
|
|
243
|
+
function materializeArgs(args) {
|
|
244
|
+
const out = {};
|
|
245
|
+
for (const [key, value] of Object.entries(args)) {
|
|
246
|
+
out[key] = materializeValue(value);
|
|
247
|
+
}
|
|
248
|
+
return out;
|
|
249
|
+
}
|
|
250
|
+
function materializeValue(value) {
|
|
251
|
+
if (Array.isArray(value)) {
|
|
252
|
+
return value.map((entry) => materializeValue(entry));
|
|
253
|
+
}
|
|
254
|
+
if (isRecord(value)) {
|
|
255
|
+
if (value.kind === "literal" && "value" in value) {
|
|
256
|
+
return value.value;
|
|
257
|
+
}
|
|
258
|
+
if (isExpressionNode(value)) {
|
|
259
|
+
throw new Error("LI.FI adapter received unresolved custom expression args");
|
|
260
|
+
}
|
|
261
|
+
const nested = {};
|
|
262
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
263
|
+
nested[key] = materializeValue(entry);
|
|
264
|
+
}
|
|
265
|
+
return nested;
|
|
266
|
+
}
|
|
267
|
+
return value;
|
|
268
|
+
}
|
|
269
|
+
async function safeRequestStatus(requestJson, id) {
|
|
270
|
+
try {
|
|
271
|
+
return await requestJson("GET", `/status?txHash=${encodeURIComponent(id)}`);
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
return {
|
|
275
|
+
status: "unknown",
|
|
276
|
+
error: error instanceof Error ? error.message : String(error),
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
function extractExecutionId(payload) {
|
|
281
|
+
const id = payload.id ??
|
|
282
|
+
payload.txHash ??
|
|
283
|
+
payload.transactionHash ??
|
|
284
|
+
getPath(payload, ["execution", "id"]) ??
|
|
285
|
+
getPath(payload, ["route", "id"]);
|
|
286
|
+
return typeof id === "string" && id.length > 0 ? id : undefined;
|
|
287
|
+
}
|
|
288
|
+
function extractStatus(payload) {
|
|
289
|
+
const status = payload.status ?? getPath(payload, ["execution", "status"]);
|
|
290
|
+
return typeof status === "string" && status.length > 0 ? status : undefined;
|
|
291
|
+
}
|
|
292
|
+
function extractErrorMessage(payload) {
|
|
293
|
+
if (!isRecord(payload))
|
|
294
|
+
return undefined;
|
|
295
|
+
const message = payload.message ?? getPath(payload, ["error", "message"]);
|
|
296
|
+
return typeof message === "string" && message.length > 0 ? message : undefined;
|
|
297
|
+
}
|
|
298
|
+
function getPath(obj, path) {
|
|
299
|
+
let current = obj;
|
|
300
|
+
for (const key of path) {
|
|
301
|
+
if (!isRecord(current))
|
|
302
|
+
return undefined;
|
|
303
|
+
current = current[key];
|
|
304
|
+
}
|
|
305
|
+
return current;
|
|
306
|
+
}
|
|
307
|
+
function toBigInt(amount) {
|
|
308
|
+
const parsed = toBigIntLoose(amount);
|
|
309
|
+
if (parsed === undefined) {
|
|
310
|
+
throw new Error("LI.FI adapter requires numeric amount");
|
|
311
|
+
}
|
|
312
|
+
return parsed;
|
|
313
|
+
}
|
|
314
|
+
function toBigIntLoose(value) {
|
|
315
|
+
if (typeof value === "bigint") {
|
|
316
|
+
return value;
|
|
317
|
+
}
|
|
318
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
319
|
+
return BigInt(Math.floor(value));
|
|
320
|
+
}
|
|
321
|
+
if (typeof value === "string" && value.length > 0) {
|
|
322
|
+
try {
|
|
323
|
+
return BigInt(value);
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
return undefined;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
if (isRecord(value) && value.kind === "literal" && "value" in value) {
|
|
330
|
+
return toBigIntLoose(value.value);
|
|
331
|
+
}
|
|
332
|
+
return undefined;
|
|
333
|
+
}
|
|
334
|
+
function isRecord(value) {
|
|
335
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
336
|
+
}
|
|
337
|
+
function isExpressionNode(value) {
|
|
338
|
+
const kind = value.kind;
|
|
339
|
+
return (kind === "literal" ||
|
|
340
|
+
kind === "param" ||
|
|
341
|
+
kind === "state" ||
|
|
342
|
+
kind === "binding" ||
|
|
343
|
+
kind === "item" ||
|
|
344
|
+
kind === "index" ||
|
|
345
|
+
kind === "binary" ||
|
|
346
|
+
kind === "unary" ||
|
|
347
|
+
kind === "ternary" ||
|
|
348
|
+
kind === "call" ||
|
|
349
|
+
kind === "array_access" ||
|
|
350
|
+
kind === "property_access");
|
|
351
|
+
}
|
|
352
|
+
function sameAddress(a, b) {
|
|
353
|
+
return a.toLowerCase() === b.toLowerCase();
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=lifi.js.map
|
package/dist/lifi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifi.js","sourceRoot":"","sources":["../src/lifi.ts"],"names":[],"mappings":"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"}
|
package/dist/yellow.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { VenueAdapter } from "@grimoirelabs/core";
|
|
2
|
+
export interface YellowAdapterConfig {
|
|
3
|
+
rpcUrl?: string;
|
|
4
|
+
appId?: string;
|
|
5
|
+
chainId?: number;
|
|
6
|
+
fetch?: typeof fetch;
|
|
7
|
+
}
|
|
8
|
+
export declare function createYellowAdapter(config?: YellowAdapterConfig): VenueAdapter;
|
|
9
|
+
export declare const yellowAdapter: VenueAdapter;
|
|
10
|
+
//# sourceMappingURL=yellow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yellow.d.ts","sourceRoot":"","sources":["../src/yellow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,YAAY,EACb,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAoCD,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,mBAAwB,GAAG,YAAY,CAmIlF;AAED,eAAO,MAAM,aAAa,cAAwB,CAAC"}
|
package/dist/yellow.js
ADDED
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { zeroAddress } from "viem";
|
|
2
|
+
const ALLOWED_INTENTS = new Set(["operate", "deposit", "withdraw"]);
|
|
3
|
+
const YELLOW_OPS = new Set([
|
|
4
|
+
"session_open",
|
|
5
|
+
"session_update",
|
|
6
|
+
"session_close_settle",
|
|
7
|
+
"session_transfer",
|
|
8
|
+
]);
|
|
9
|
+
export function createYellowAdapter(config = {}) {
|
|
10
|
+
const fetchImpl = config.fetch ?? globalThis.fetch;
|
|
11
|
+
const rpcUrl = config.rpcUrl ?? process.env.YELLOW_RPC_URL;
|
|
12
|
+
const appId = config.appId ?? process.env.YELLOW_APP_ID;
|
|
13
|
+
const configuredChainId = resolveChainId(config.chainId, process.env.YELLOW_CHAIN_ID);
|
|
14
|
+
const sessions = new Map();
|
|
15
|
+
const callRpc = async (method, params) => {
|
|
16
|
+
if (!rpcUrl) {
|
|
17
|
+
throw new Error("Yellow adapter requires YELLOW_RPC_URL");
|
|
18
|
+
}
|
|
19
|
+
if (!fetchImpl) {
|
|
20
|
+
throw new Error("Yellow adapter requires fetch support");
|
|
21
|
+
}
|
|
22
|
+
const payload = {
|
|
23
|
+
jsonrpc: "2.0",
|
|
24
|
+
id: Date.now(),
|
|
25
|
+
method,
|
|
26
|
+
params,
|
|
27
|
+
};
|
|
28
|
+
const response = await fetchImpl(rpcUrl, {
|
|
29
|
+
method: "POST",
|
|
30
|
+
headers: { "content-type": "application/json" },
|
|
31
|
+
body: JSON.stringify(payload),
|
|
32
|
+
});
|
|
33
|
+
const text = await response.text();
|
|
34
|
+
if (!response.ok) {
|
|
35
|
+
throw new Error(`Yellow RPC ${method} failed (${response.status})`);
|
|
36
|
+
}
|
|
37
|
+
let data;
|
|
38
|
+
try {
|
|
39
|
+
data = JSON.parse(text);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
throw new Error(`Yellow RPC ${method} returned invalid JSON`);
|
|
43
|
+
}
|
|
44
|
+
if (isRecord(data) && "error" in data && data.error !== null && data.error !== undefined) {
|
|
45
|
+
throw new Error(`Yellow RPC ${method} error: ${formatRpcError(data.error)}`);
|
|
46
|
+
}
|
|
47
|
+
if (isRecord(data) && "result" in data) {
|
|
48
|
+
return data.result;
|
|
49
|
+
}
|
|
50
|
+
return data;
|
|
51
|
+
};
|
|
52
|
+
return {
|
|
53
|
+
meta: {
|
|
54
|
+
name: "yellow",
|
|
55
|
+
supportedChains: configuredChainId ? [configuredChainId] : [1],
|
|
56
|
+
actions: ["custom"],
|
|
57
|
+
description: "Yellow NitroRPC app-session adapter",
|
|
58
|
+
executionType: "offchain",
|
|
59
|
+
},
|
|
60
|
+
async buildAction(action) {
|
|
61
|
+
const req = normalizeYellowAction(action, sessions, { appId });
|
|
62
|
+
return {
|
|
63
|
+
tx: { to: zeroAddress, data: "0x", value: 0n },
|
|
64
|
+
description: `Yellow ${req.op} session ${req.sessionId} v${req.version}`,
|
|
65
|
+
action,
|
|
66
|
+
};
|
|
67
|
+
},
|
|
68
|
+
async executeAction(action) {
|
|
69
|
+
const req = normalizeYellowAction(action, sessions, { appId });
|
|
70
|
+
if (req.op === "session_open") {
|
|
71
|
+
const payload = {
|
|
72
|
+
...req.raw,
|
|
73
|
+
session_id: req.sessionId,
|
|
74
|
+
version: req.version,
|
|
75
|
+
app_id: req.raw.app_id ?? appId,
|
|
76
|
+
signers: req.signers,
|
|
77
|
+
quorum: req.quorum,
|
|
78
|
+
};
|
|
79
|
+
const result = await callRpc("create_app_session", [payload]);
|
|
80
|
+
sessions.set(req.sessionId, {
|
|
81
|
+
version: req.version,
|
|
82
|
+
signers: req.signers,
|
|
83
|
+
quorum: req.quorum,
|
|
84
|
+
});
|
|
85
|
+
return {
|
|
86
|
+
id: extractExecutionId(result, req.sessionId),
|
|
87
|
+
status: "submitted",
|
|
88
|
+
raw: result,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
if (req.op === "session_close_settle") {
|
|
92
|
+
if (!sessions.has(req.sessionId)) {
|
|
93
|
+
throw new Error(`Yellow session '${req.sessionId}' is not open`);
|
|
94
|
+
}
|
|
95
|
+
const payload = {
|
|
96
|
+
...req.raw,
|
|
97
|
+
session_id: req.sessionId,
|
|
98
|
+
app_id: req.raw.app_id ?? appId,
|
|
99
|
+
};
|
|
100
|
+
const result = await callRpc("close_app_session", [payload]);
|
|
101
|
+
sessions.delete(req.sessionId);
|
|
102
|
+
return {
|
|
103
|
+
id: extractExecutionId(result, req.sessionId),
|
|
104
|
+
status: "submitted",
|
|
105
|
+
raw: result,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const payload = {
|
|
109
|
+
...req.raw,
|
|
110
|
+
session_id: req.sessionId,
|
|
111
|
+
version: req.version,
|
|
112
|
+
intent: req.intent,
|
|
113
|
+
allocations: req.allocations,
|
|
114
|
+
signatures: req.signatures,
|
|
115
|
+
};
|
|
116
|
+
const result = await callRpc("submit_app_state", [payload]);
|
|
117
|
+
sessions.set(req.sessionId, {
|
|
118
|
+
version: req.version,
|
|
119
|
+
signers: req.signers,
|
|
120
|
+
quorum: req.quorum,
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
id: extractExecutionId(result, req.sessionId),
|
|
124
|
+
status: "submitted",
|
|
125
|
+
raw: result,
|
|
126
|
+
};
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export const yellowAdapter = createYellowAdapter();
|
|
131
|
+
function normalizeYellowAction(action, sessions, defaults) {
|
|
132
|
+
const custom = asYellowCustomAction(action);
|
|
133
|
+
const raw = extractRawArgs(custom);
|
|
134
|
+
const arg0 = raw.arg0;
|
|
135
|
+
const payload = isRecord(arg0) ? { ...arg0 } : raw;
|
|
136
|
+
const op = custom.op;
|
|
137
|
+
const sessionId = normalizeSessionId(payload);
|
|
138
|
+
const state = sessions.get(sessionId);
|
|
139
|
+
const signers = asStringArray(payload.signers);
|
|
140
|
+
const requestedQuorum = toNumber(payload.quorum);
|
|
141
|
+
const quorum = requestedQuorum ?? state?.quorum ?? signers.length;
|
|
142
|
+
if (quorum < 0) {
|
|
143
|
+
throw new Error("Yellow session quorum must be >= 0");
|
|
144
|
+
}
|
|
145
|
+
if (signers.length > 0 && quorum > signers.length) {
|
|
146
|
+
throw new Error("Yellow session quorum exceeds signer count");
|
|
147
|
+
}
|
|
148
|
+
if (op === "session_open") {
|
|
149
|
+
if (sessions.has(sessionId)) {
|
|
150
|
+
throw new Error(`Yellow session '${sessionId}' is already open`);
|
|
151
|
+
}
|
|
152
|
+
const version = toNumber(payload.version ?? payload.v) ?? 1;
|
|
153
|
+
if (version < 1) {
|
|
154
|
+
throw new Error("Yellow session version must start at 1");
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
op,
|
|
158
|
+
sessionId,
|
|
159
|
+
version,
|
|
160
|
+
signatures: asStringArray(payload.signatures),
|
|
161
|
+
signers,
|
|
162
|
+
quorum,
|
|
163
|
+
raw: withAppId(payload, defaults.appId),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (!state) {
|
|
167
|
+
throw new Error(`Yellow session '${sessionId}' is not open`);
|
|
168
|
+
}
|
|
169
|
+
if (op === "session_close_settle") {
|
|
170
|
+
return {
|
|
171
|
+
op,
|
|
172
|
+
sessionId,
|
|
173
|
+
version: state.version,
|
|
174
|
+
signatures: asStringArray(payload.signatures),
|
|
175
|
+
signers: state.signers,
|
|
176
|
+
quorum: state.quorum,
|
|
177
|
+
raw: withAppId(payload, defaults.appId),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
const expectedVersion = state.version + 1;
|
|
181
|
+
const version = toNumber(payload.version ?? payload.v) ?? expectedVersion;
|
|
182
|
+
if (version !== expectedVersion) {
|
|
183
|
+
throw new Error(`Yellow session version must increment by 1 (expected ${expectedVersion}, got ${version})`);
|
|
184
|
+
}
|
|
185
|
+
const signatures = asStringArray(payload.signatures);
|
|
186
|
+
const effectiveSigners = state.signers.length > 0 ? state.signers : signers;
|
|
187
|
+
const effectiveQuorum = state.quorum > 0 ? state.quorum : quorum;
|
|
188
|
+
enforceQuorum(signatures, effectiveSigners, effectiveQuorum);
|
|
189
|
+
if (op === "session_transfer") {
|
|
190
|
+
const to = asString(payload.to ?? payload.account ?? payload.recipient, "transfer target");
|
|
191
|
+
const amount = String(payload.amount ?? payload.value ?? "");
|
|
192
|
+
if (!amount || amount === "0") {
|
|
193
|
+
throw new Error("Yellow session_transfer requires a non-zero amount");
|
|
194
|
+
}
|
|
195
|
+
const intent = normalizeIntent(payload.intent ?? "operate");
|
|
196
|
+
const allocations = [{ account: to, amount }];
|
|
197
|
+
return {
|
|
198
|
+
op,
|
|
199
|
+
sessionId,
|
|
200
|
+
version,
|
|
201
|
+
intent,
|
|
202
|
+
allocations,
|
|
203
|
+
signatures,
|
|
204
|
+
signers: effectiveSigners,
|
|
205
|
+
quorum: effectiveQuorum,
|
|
206
|
+
raw: payload,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
const intent = normalizeIntent(payload.intent);
|
|
210
|
+
const allocations = normalizeAllocations(payload.allocations);
|
|
211
|
+
return {
|
|
212
|
+
op,
|
|
213
|
+
sessionId,
|
|
214
|
+
version,
|
|
215
|
+
intent,
|
|
216
|
+
allocations,
|
|
217
|
+
signatures,
|
|
218
|
+
signers: effectiveSigners,
|
|
219
|
+
quorum: effectiveQuorum,
|
|
220
|
+
raw: payload,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function asYellowCustomAction(action) {
|
|
224
|
+
if (action.type !== "custom") {
|
|
225
|
+
throw new Error(`Yellow adapter only supports custom actions (got ${action.type})`);
|
|
226
|
+
}
|
|
227
|
+
if (!YELLOW_OPS.has(action.op)) {
|
|
228
|
+
throw new Error(`Yellow adapter does not support op '${action.op}'`);
|
|
229
|
+
}
|
|
230
|
+
return action;
|
|
231
|
+
}
|
|
232
|
+
function extractRawArgs(action) {
|
|
233
|
+
const out = {};
|
|
234
|
+
for (const [key, value] of Object.entries(action.args)) {
|
|
235
|
+
out[key] = materializeCustomValue(value);
|
|
236
|
+
}
|
|
237
|
+
return out;
|
|
238
|
+
}
|
|
239
|
+
function materializeCustomValue(value) {
|
|
240
|
+
if (Array.isArray(value)) {
|
|
241
|
+
return value.map((entry) => materializeCustomValue(entry));
|
|
242
|
+
}
|
|
243
|
+
if (isRecord(value)) {
|
|
244
|
+
if (isLiteralExpression(value)) {
|
|
245
|
+
return value.value;
|
|
246
|
+
}
|
|
247
|
+
if (isExpressionNode(value)) {
|
|
248
|
+
throw new Error("Yellow adapter received unresolved custom expression args");
|
|
249
|
+
}
|
|
250
|
+
const nested = {};
|
|
251
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
252
|
+
nested[key] = materializeCustomValue(entry);
|
|
253
|
+
}
|
|
254
|
+
return nested;
|
|
255
|
+
}
|
|
256
|
+
return value;
|
|
257
|
+
}
|
|
258
|
+
function normalizeSessionId(payload) {
|
|
259
|
+
const value = payload.session_id ?? payload.sessionId ?? payload.id ?? payload.arg0;
|
|
260
|
+
return asString(value, "session_id");
|
|
261
|
+
}
|
|
262
|
+
function normalizeIntent(value) {
|
|
263
|
+
const intent = asString(value, "intent");
|
|
264
|
+
if (!ALLOWED_INTENTS.has(intent)) {
|
|
265
|
+
throw new Error(`Yellow intent must be one of operate|deposit|withdraw (got '${intent}')`);
|
|
266
|
+
}
|
|
267
|
+
return intent;
|
|
268
|
+
}
|
|
269
|
+
function normalizeAllocations(value) {
|
|
270
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
271
|
+
throw new Error("Yellow allocations must be a non-empty array");
|
|
272
|
+
}
|
|
273
|
+
return value.map((entry, idx) => {
|
|
274
|
+
if (!isRecord(entry)) {
|
|
275
|
+
throw new Error(`Yellow allocation ${idx} must be an object`);
|
|
276
|
+
}
|
|
277
|
+
const account = asString(entry.account ?? entry.address, `allocations[${idx}].account`);
|
|
278
|
+
const amount = String(entry.amount ?? "");
|
|
279
|
+
if (!amount || amount === "0") {
|
|
280
|
+
throw new Error(`Yellow allocation ${idx} must include a non-zero amount`);
|
|
281
|
+
}
|
|
282
|
+
return { account, amount };
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
function enforceQuorum(signatures, signers, quorum) {
|
|
286
|
+
if (quorum <= 0)
|
|
287
|
+
return;
|
|
288
|
+
if (signatures.length < quorum) {
|
|
289
|
+
throw new Error(`Yellow signatures do not satisfy quorum (${signatures.length}/${quorum})`);
|
|
290
|
+
}
|
|
291
|
+
if (signers.length > 0) {
|
|
292
|
+
for (const signer of signatures) {
|
|
293
|
+
if (!signers.includes(signer)) {
|
|
294
|
+
throw new Error(`Yellow signature '${signer}' is not part of the signer set`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
function withAppId(payload, appId) {
|
|
300
|
+
if (!appId || payload.app_id !== undefined) {
|
|
301
|
+
return payload;
|
|
302
|
+
}
|
|
303
|
+
return { ...payload, app_id: appId };
|
|
304
|
+
}
|
|
305
|
+
function resolveChainId(primary, envValue) {
|
|
306
|
+
if (typeof primary === "number" && Number.isFinite(primary)) {
|
|
307
|
+
return Math.floor(primary);
|
|
308
|
+
}
|
|
309
|
+
if (!envValue)
|
|
310
|
+
return undefined;
|
|
311
|
+
const parsed = Number.parseInt(envValue, 10);
|
|
312
|
+
if (!Number.isFinite(parsed))
|
|
313
|
+
return undefined;
|
|
314
|
+
return parsed;
|
|
315
|
+
}
|
|
316
|
+
function extractExecutionId(result, fallback) {
|
|
317
|
+
if (isRecord(result)) {
|
|
318
|
+
const direct = result.id ??
|
|
319
|
+
result.tx_hash ??
|
|
320
|
+
result.txHash ??
|
|
321
|
+
result.session_id ??
|
|
322
|
+
result.sessionId ??
|
|
323
|
+
result.hash;
|
|
324
|
+
if (typeof direct === "string" && direct.length > 0) {
|
|
325
|
+
return direct;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return fallback;
|
|
329
|
+
}
|
|
330
|
+
function formatRpcError(error) {
|
|
331
|
+
if (isRecord(error)) {
|
|
332
|
+
const message = error.message;
|
|
333
|
+
if (typeof message === "string" && message.length > 0) {
|
|
334
|
+
return message;
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
return String(error);
|
|
338
|
+
}
|
|
339
|
+
function asString(value, field) {
|
|
340
|
+
if (typeof value === "string" && value.length > 0) {
|
|
341
|
+
return value;
|
|
342
|
+
}
|
|
343
|
+
throw new Error(`Yellow ${field} is required`);
|
|
344
|
+
}
|
|
345
|
+
function asStringArray(value) {
|
|
346
|
+
if (!Array.isArray(value))
|
|
347
|
+
return [];
|
|
348
|
+
return value.filter((entry) => typeof entry === "string");
|
|
349
|
+
}
|
|
350
|
+
function toNumber(value) {
|
|
351
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
352
|
+
return Math.floor(value);
|
|
353
|
+
}
|
|
354
|
+
if (typeof value === "string" && value.length > 0) {
|
|
355
|
+
const parsed = Number.parseInt(value, 10);
|
|
356
|
+
if (Number.isFinite(parsed))
|
|
357
|
+
return parsed;
|
|
358
|
+
}
|
|
359
|
+
if (typeof value === "bigint") {
|
|
360
|
+
return Number(value);
|
|
361
|
+
}
|
|
362
|
+
return undefined;
|
|
363
|
+
}
|
|
364
|
+
function isRecord(value) {
|
|
365
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
366
|
+
}
|
|
367
|
+
function isLiteralExpression(value) {
|
|
368
|
+
return value.kind === "literal" && "value" in value;
|
|
369
|
+
}
|
|
370
|
+
function isExpressionNode(value) {
|
|
371
|
+
const kind = value.kind;
|
|
372
|
+
return (kind === "literal" ||
|
|
373
|
+
kind === "param" ||
|
|
374
|
+
kind === "state" ||
|
|
375
|
+
kind === "binding" ||
|
|
376
|
+
kind === "item" ||
|
|
377
|
+
kind === "index" ||
|
|
378
|
+
kind === "binary" ||
|
|
379
|
+
kind === "unary" ||
|
|
380
|
+
kind === "ternary" ||
|
|
381
|
+
kind === "call" ||
|
|
382
|
+
kind === "array_access" ||
|
|
383
|
+
kind === "property_access");
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=yellow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yellow.js","sourceRoot":"","sources":["../src/yellow.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grimoirelabs/venues",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Official Grimoire venue adapters",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@aave/client": "^0.7.0",
|
|
27
27
|
"@across-protocol/app-sdk": "^0.4.4",
|
|
28
|
-
"@grimoirelabs/core": "0.
|
|
28
|
+
"@grimoirelabs/core": "0.4.0",
|
|
29
29
|
"@morpho-org/blue-sdk": "^2.0.0",
|
|
30
30
|
"@morpho-org/blue-sdk-viem": "^2.0.0",
|
|
31
31
|
"@nktkas/hyperliquid": "^0.30.3",
|