damm-sdk 1.4.24 → 1.4.26
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.cjs +2017 -2001
- package/dist/index.cjs.map +16 -17
- package/dist/index.js +51 -5
- package/dist/index.js.map +4 -4
- package/dist/integrations/aaveV3/aave.v3.d.ts +17 -0
- package/dist/integrations/aaveV3/aave.v3.d.ts.map +1 -1
- package/dist/integrations/enso/enso.route.api.d.ts +18 -2
- package/dist/integrations/enso/enso.route.api.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/integrations/aaveV3/aave.v3.ts +64 -0
- package/src/integrations/enso/enso.route.api.ts +31 -6
|
@@ -76,5 +76,22 @@ export declare const repayToAaveV3Trx: <Asset = number | `0x${string}`>({ args,
|
|
|
76
76
|
args: RepayAaveV3Args<Asset>;
|
|
77
77
|
compact: boolean;
|
|
78
78
|
}) => Unwrapable<Call>;
|
|
79
|
+
export type SetUserEModeOnAaveV3Args = Readonly<{
|
|
80
|
+
categoryId: number;
|
|
81
|
+
}>;
|
|
82
|
+
export declare const SetUserEModeOnAaveV3Calldata: ({ categoryId }: SetUserEModeOnAaveV3Args) => HexString;
|
|
83
|
+
export declare const setUserEModeOnAaveV3Trx: ({ poolAddress, args, }: {
|
|
84
|
+
poolAddress: Address;
|
|
85
|
+
args: SetUserEModeOnAaveV3Args;
|
|
86
|
+
}) => Unwrapable<Call>;
|
|
87
|
+
export type SetUserUseReserveAsCollateralOnAaveV3Args = Readonly<{
|
|
88
|
+
asset: Address;
|
|
89
|
+
useAsCollateral: boolean;
|
|
90
|
+
}>;
|
|
91
|
+
export declare const SetUserUseReserveAsCollateralOnAaveV3Calldata: ({ asset, useAsCollateral, }: SetUserUseReserveAsCollateralOnAaveV3Args) => HexString;
|
|
92
|
+
export declare const setUserUseReserveAsCollateralOnAaveV3Trx: ({ poolAddress, args, }: {
|
|
93
|
+
poolAddress: Address;
|
|
94
|
+
args: SetUserUseReserveAsCollateralOnAaveV3Args;
|
|
95
|
+
}) => Unwrapable<Call>;
|
|
79
96
|
export {};
|
|
80
97
|
//# sourceMappingURL=aave.v3.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aave.v3.d.ts","sourceRoot":"","sources":["../../../src/integrations/aaveV3/aave.v3.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"aave.v3.d.ts","sourceRoot":"","sources":["../../../src/integrations/aaveV3/aave.v3.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,11 +44,27 @@ export type EnsoRouteArgs = Readonly<{
|
|
|
44
44
|
* string").
|
|
45
45
|
*/
|
|
46
46
|
slippageBips: number;
|
|
47
|
-
/**
|
|
48
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Enso API key. **Required** to use this integration — calls without a
|
|
49
|
+
* key share a global 1 rps limit and fail often in production. Sign up
|
|
50
|
+
* at https://developers.enso.build.
|
|
51
|
+
*
|
|
52
|
+
* If this is falsy (undefined, empty string), `fetchEnsoRoute` throws
|
|
53
|
+
* `EnsoApiKeyMissingError` before hitting the network.
|
|
54
|
+
*/
|
|
55
|
+
apiKey: string;
|
|
49
56
|
/** Override the API base URL (useful for tests). */
|
|
50
57
|
apiBase?: string;
|
|
51
58
|
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Thrown when `fetchEnsoRoute` is called without an API key. Without a
|
|
61
|
+
* key the caller shares Enso's global 1 rps limit and will hit 429 in
|
|
62
|
+
* production — we fail fast so the misconfiguration shows up immediately
|
|
63
|
+
* in logs instead of after a long, confusing 429 trail.
|
|
64
|
+
*/
|
|
65
|
+
export declare class EnsoApiKeyMissingError extends Error {
|
|
66
|
+
constructor();
|
|
67
|
+
}
|
|
52
68
|
export declare class EnsoRouteApiError extends Error {
|
|
53
69
|
readonly status: number;
|
|
54
70
|
readonly statusText: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enso.route.api.d.ts","sourceRoot":"","sources":["../../../src/integrations/enso/enso.route.api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,aAAa,4BAAsC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACrC,EAAE,EAAE,QAAQ,CAAC;QACT,EAAE,EAAE,SAAS,CAAC;QACd,IAAI,EAAE,SAAS,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB
|
|
1
|
+
{"version":3,"file":"enso.route.api.d.ts","sourceRoot":"","sources":["../../../src/integrations/enso/enso.route.api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,eAAO,MAAM,aAAa,4BAAsC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACrC,EAAE,EAAE,QAAQ,CAAC;QACT,EAAE,EAAE,SAAS,CAAC;QACd,IAAI,EAAE,SAAS,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,oFAAoF;IACpF,YAAY,EAAE,MAAM,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;OAMG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;OAOG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;;CAKhD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAEf,EACR,MAAM,EACN,UAAU,EACV,OAAO,EACP,QAAQ,GACX,EAAE;QACC,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,OAAO,CAAC;KACrB;CAQJ;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SAAgB,aAAa,KAAG,QAAQ,iBAAiB,CA+CnF,CAAC"}
|
package/package.json
CHANGED
|
@@ -241,3 +241,67 @@ export const repayToAaveV3Trx = <Asset = L1AaveV3AssetIdentifier | L2AaveV3Asset
|
|
|
241
241
|
data,
|
|
242
242
|
});
|
|
243
243
|
};
|
|
244
|
+
|
|
245
|
+
// ─── setUserEMode(uint8 categoryId) ─────────────────────────────────────
|
|
246
|
+
//
|
|
247
|
+
// E-Mode lets correlated assets (wstETH/ETH, stable/stable, etc.) enjoy
|
|
248
|
+
// higher LTV and liquidation thresholds. categoryId 0 = exit E-Mode back
|
|
249
|
+
// to the standard market. Same selector on L1 and L2 pools — no packed-
|
|
250
|
+
// args variant needed.
|
|
251
|
+
|
|
252
|
+
export type SetUserEModeOnAaveV3Args = Readonly<{
|
|
253
|
+
categoryId: number;
|
|
254
|
+
}>;
|
|
255
|
+
|
|
256
|
+
export const SetUserEModeOnAaveV3Calldata = ({ categoryId }: SetUserEModeOnAaveV3Args): HexString => {
|
|
257
|
+
return poolInterface_L1.encodeFunctionData("setUserEMode", [categoryId]) as HexString;
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
export const setUserEModeOnAaveV3Trx = ({
|
|
261
|
+
poolAddress,
|
|
262
|
+
args,
|
|
263
|
+
}: {
|
|
264
|
+
poolAddress: Address;
|
|
265
|
+
args: SetUserEModeOnAaveV3Args;
|
|
266
|
+
}): Unwrapable<Call> => {
|
|
267
|
+
return createCall({
|
|
268
|
+
operation: 0,
|
|
269
|
+
to: poolAddress,
|
|
270
|
+
value: 0n,
|
|
271
|
+
data: SetUserEModeOnAaveV3Calldata(args),
|
|
272
|
+
});
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
// ─── setUserUseReserveAsCollateral(address asset, bool useAsCollateral) ─
|
|
276
|
+
//
|
|
277
|
+
// Opts the supplied reserve into / out of counting as collateral for the
|
|
278
|
+
// user's position. Required when the reserve's `usageAsCollateralEnabled`
|
|
279
|
+
// is true but the user wants to explicitly toggle it (e.g., isolation
|
|
280
|
+
// mode interactions). Same selector on L1 and L2.
|
|
281
|
+
|
|
282
|
+
export type SetUserUseReserveAsCollateralOnAaveV3Args = Readonly<{
|
|
283
|
+
asset: Address;
|
|
284
|
+
useAsCollateral: boolean;
|
|
285
|
+
}>;
|
|
286
|
+
|
|
287
|
+
export const SetUserUseReserveAsCollateralOnAaveV3Calldata = ({
|
|
288
|
+
asset,
|
|
289
|
+
useAsCollateral,
|
|
290
|
+
}: SetUserUseReserveAsCollateralOnAaveV3Args): HexString => {
|
|
291
|
+
return poolInterface_L1.encodeFunctionData("setUserUseReserveAsCollateral", [asset, useAsCollateral]) as HexString;
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
export const setUserUseReserveAsCollateralOnAaveV3Trx = ({
|
|
295
|
+
poolAddress,
|
|
296
|
+
args,
|
|
297
|
+
}: {
|
|
298
|
+
poolAddress: Address;
|
|
299
|
+
args: SetUserUseReserveAsCollateralOnAaveV3Args;
|
|
300
|
+
}): Unwrapable<Call> => {
|
|
301
|
+
return createCall({
|
|
302
|
+
operation: 0,
|
|
303
|
+
to: poolAddress,
|
|
304
|
+
value: 0n,
|
|
305
|
+
data: SetUserUseReserveAsCollateralOnAaveV3Calldata(args),
|
|
306
|
+
});
|
|
307
|
+
};
|
|
@@ -48,12 +48,32 @@ export type EnsoRouteArgs = Readonly<{
|
|
|
48
48
|
* string").
|
|
49
49
|
*/
|
|
50
50
|
slippageBips: number;
|
|
51
|
-
/**
|
|
52
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Enso API key. **Required** to use this integration — calls without a
|
|
53
|
+
* key share a global 1 rps limit and fail often in production. Sign up
|
|
54
|
+
* at https://developers.enso.build.
|
|
55
|
+
*
|
|
56
|
+
* If this is falsy (undefined, empty string), `fetchEnsoRoute` throws
|
|
57
|
+
* `EnsoApiKeyMissingError` before hitting the network.
|
|
58
|
+
*/
|
|
59
|
+
apiKey: string;
|
|
53
60
|
/** Override the API base URL (useful for tests). */
|
|
54
61
|
apiBase?: string;
|
|
55
62
|
}>;
|
|
56
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Thrown when `fetchEnsoRoute` is called without an API key. Without a
|
|
66
|
+
* key the caller shares Enso's global 1 rps limit and will hit 429 in
|
|
67
|
+
* production — we fail fast so the misconfiguration shows up immediately
|
|
68
|
+
* in logs instead of after a long, confusing 429 trail.
|
|
69
|
+
*/
|
|
70
|
+
export class EnsoApiKeyMissingError extends Error {
|
|
71
|
+
constructor() {
|
|
72
|
+
super("Enso API key required; pass `apiKey`.");
|
|
73
|
+
this.name = "EnsoApiKeyMissingError";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
57
77
|
export class EnsoRouteApiError extends Error {
|
|
58
78
|
readonly status: number;
|
|
59
79
|
readonly statusText: string;
|
|
@@ -99,6 +119,11 @@ export const fetchEnsoRoute = async (args: EnsoRouteArgs): Promise<EnsoRouteResp
|
|
|
99
119
|
apiBase = ENSO_API_BASE,
|
|
100
120
|
} = args;
|
|
101
121
|
|
|
122
|
+
// Fail fast if no API key — see EnsoApiKeyMissingError doc for rationale.
|
|
123
|
+
if (!apiKey) {
|
|
124
|
+
throw new EnsoApiKeyMissingError();
|
|
125
|
+
}
|
|
126
|
+
|
|
102
127
|
const params = new URLSearchParams({
|
|
103
128
|
chainId: String(chainId),
|
|
104
129
|
fromAddress,
|
|
@@ -109,10 +134,10 @@ export const fetchEnsoRoute = async (args: EnsoRouteArgs): Promise<EnsoRouteResp
|
|
|
109
134
|
slippage: String(slippageBips),
|
|
110
135
|
});
|
|
111
136
|
|
|
112
|
-
const headers: Record<string, string> = {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
137
|
+
const headers: Record<string, string> = {
|
|
138
|
+
Accept: "application/json",
|
|
139
|
+
Authorization: `Bearer ${apiKey}`,
|
|
140
|
+
};
|
|
116
141
|
|
|
117
142
|
const response = await fetch(`${apiBase}/api/v1/shortcuts/route?${params.toString()}`, {
|
|
118
143
|
headers,
|