curvance 5.1.9 → 5.2.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 +249 -65
- package/dist/abis/OptimizerReader.json +292 -1
- package/dist/chains/arbitrum.d.ts.map +1 -1
- package/dist/chains/arbitrum.js +14 -1
- package/dist/chains/arbitrum.js.map +1 -1
- package/dist/chains/index.d.ts +19 -0
- package/dist/chains/index.d.ts.map +1 -1
- package/dist/chains/index.js.map +1 -1
- package/dist/chains/monad.d.ts.map +1 -1
- package/dist/chains/monad.js +25 -2
- package/dist/chains/monad.js.map +1 -1
- package/dist/chains/services.d.ts +8 -0
- package/dist/chains/services.d.ts.map +1 -0
- package/dist/chains/services.js +9 -0
- package/dist/chains/services.js.map +1 -0
- package/dist/classes/Api.d.ts +7 -2
- package/dist/classes/Api.d.ts.map +1 -1
- package/dist/classes/Api.js +60 -24
- package/dist/classes/Api.js.map +1 -1
- package/dist/classes/BorrowableCToken.d.ts.map +1 -1
- package/dist/classes/BorrowableCToken.js +7 -2
- package/dist/classes/BorrowableCToken.js.map +1 -1
- package/dist/classes/CToken.d.ts +28 -15
- package/dist/classes/CToken.d.ts.map +1 -1
- package/dist/classes/CToken.js +217 -85
- package/dist/classes/CToken.js.map +1 -1
- package/dist/classes/DexAggregators/IDexAgg.d.ts +8 -0
- package/dist/classes/DexAggregators/IDexAgg.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.d.ts +5 -2
- package/dist/classes/DexAggregators/KyberSwap.d.ts.map +1 -1
- package/dist/classes/DexAggregators/KyberSwap.js +41 -19
- package/dist/classes/DexAggregators/KyberSwap.js.map +1 -1
- package/dist/classes/DexAggregators/MultiDexAgg.d.ts +7 -4
- package/dist/classes/DexAggregators/MultiDexAgg.d.ts.map +1 -1
- package/dist/classes/DexAggregators/MultiDexAgg.js +62 -16
- package/dist/classes/DexAggregators/MultiDexAgg.js.map +1 -1
- package/dist/classes/DexAggregators/helpers.d.ts +1 -1
- package/dist/classes/DexAggregators/helpers.d.ts.map +1 -1
- package/dist/classes/DexAggregators/helpers.js +1 -1
- package/dist/classes/DexAggregators/helpers.js.map +1 -1
- package/dist/classes/DexAggregators/index.d.ts +0 -1
- package/dist/classes/DexAggregators/index.d.ts.map +1 -1
- package/dist/classes/DexAggregators/index.js +0 -1
- package/dist/classes/DexAggregators/index.js.map +1 -1
- package/dist/classes/LendingOptimizer.d.ts.map +1 -1
- package/dist/classes/LendingOptimizer.js +8 -2
- package/dist/classes/LendingOptimizer.js.map +1 -1
- package/dist/classes/Market.d.ts +5 -0
- package/dist/classes/Market.d.ts.map +1 -1
- package/dist/classes/Market.js +129 -30
- package/dist/classes/Market.js.map +1 -1
- package/dist/classes/NativeToken.d.ts +5 -2
- package/dist/classes/NativeToken.d.ts.map +1 -1
- package/dist/classes/NativeToken.js +5 -5
- package/dist/classes/NativeToken.js.map +1 -1
- package/dist/classes/OptimizerReader.d.ts +44 -4
- package/dist/classes/OptimizerReader.d.ts.map +1 -1
- package/dist/classes/OptimizerReader.js +133 -62
- package/dist/classes/OptimizerReader.js.map +1 -1
- package/dist/classes/PositionManager.d.ts +1 -0
- package/dist/classes/PositionManager.d.ts.map +1 -1
- package/dist/classes/PositionManager.js +25 -0
- package/dist/classes/PositionManager.js.map +1 -1
- package/dist/classes/ProtocolReader.d.ts +3 -0
- package/dist/classes/ProtocolReader.d.ts.map +1 -1
- package/dist/classes/ProtocolReader.js +34 -0
- package/dist/classes/ProtocolReader.js.map +1 -1
- package/dist/classes/Zapper.d.ts +4 -1
- package/dist/classes/Zapper.d.ts.map +1 -1
- package/dist/classes/Zapper.js +34 -9
- package/dist/classes/Zapper.js.map +1 -1
- package/dist/classes/index.d.ts +1 -0
- package/dist/classes/index.d.ts.map +1 -1
- package/dist/classes/index.js +1 -0
- package/dist/classes/index.js.map +1 -1
- package/dist/contracts/index.d.ts +248 -248
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +3 -2
- package/dist/contracts/index.js.map +1 -1
- package/dist/contracts/monad-mainnet.json +1 -1
- package/dist/feePolicy.d.ts +29 -26
- package/dist/feePolicy.d.ts.map +1 -1
- package/dist/feePolicy.js +43 -34
- package/dist/feePolicy.js.map +1 -1
- package/dist/format/index.d.ts +5 -0
- package/dist/format/index.d.ts.map +1 -1
- package/dist/format/index.js +28 -0
- package/dist/format/index.js.map +1 -1
- package/dist/helpers.d.ts +247 -248
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +5 -5
- package/dist/helpers.js.map +1 -1
- package/dist/immutability.d.ts +6 -0
- package/dist/immutability.d.ts.map +1 -0
- package/dist/immutability.js +25 -0
- package/dist/immutability.js.map +1 -0
- package/dist/integrations/merkl.d.ts +9 -2
- package/dist/integrations/merkl.d.ts.map +1 -1
- package/dist/integrations/merkl.js +219 -11
- package/dist/integrations/merkl.js.map +1 -1
- package/dist/integrations/snapshot.d.ts +3 -0
- package/dist/integrations/snapshot.d.ts.map +1 -1
- package/dist/integrations/snapshot.js +47 -3
- package/dist/integrations/snapshot.js.map +1 -1
- package/dist/setup.d.ts +13 -3
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +101 -7
- package/dist/setup.js.map +1 -1
- package/package.json +7 -4
package/dist/feePolicy.d.ts
CHANGED
|
@@ -55,14 +55,12 @@ import { ChainRpcPrefix } from "./helpers";
|
|
|
55
55
|
* would let the protocol, integrators, and a referral program co-receive
|
|
56
56
|
* fees in one swap call.
|
|
57
57
|
*
|
|
58
|
-
* - **Dynamic DAO address from chain.**
|
|
59
|
-
*
|
|
60
|
-
* `
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* `protocolReader.centralRegistry()` → `centralRegistry.daoAddress()`,
|
|
65
|
-
* store in setup_config, and use at runtime instead of the constant.
|
|
58
|
+
* - **Dynamic DAO address from chain.** The on-chain KyberSwapChecker
|
|
59
|
+
* validates fee receivers against `centralRegistry.daoAddress()`
|
|
60
|
+
* dynamically. `setupChain()` resolves that DAO address once through
|
|
61
|
+
* ProtocolReader/CentralRegistry and builds the default fee policy with the
|
|
62
|
+
* setup-resolved receiver, so quote paths do not need per-swap registry
|
|
63
|
+
* reads.
|
|
66
64
|
*
|
|
67
65
|
* - **Per-user fee tiers / discounts.** The current policy is global (one
|
|
68
66
|
* policy per setupChain). To support staker discounts, volume tiers, or
|
|
@@ -75,10 +73,9 @@ import { ChainRpcPrefix } from "./helpers";
|
|
|
75
73
|
* query it. The classifier callback pattern generalizes to this — a
|
|
76
74
|
* `getUserVolume(address)` callback that the policy uses to pick a tier.
|
|
77
75
|
*
|
|
78
|
-
* - **Per-aggregator routing fees.**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* to take an aggregator name and return aggregator-specific bps.
|
|
76
|
+
* - **Per-aggregator routing fees.** Current adapters use the same fee policy.
|
|
77
|
+
* If routing economics differ, the policy interface could be extended to take
|
|
78
|
+
* an aggregator name and return aggregator-specific bps.
|
|
82
79
|
*
|
|
83
80
|
* - **Leverage-tiered fees (if reversed from current decision).** The current
|
|
84
81
|
* design matches perp convention (flat bps on notional). If product later
|
|
@@ -101,24 +98,30 @@ export interface FeePolicyContext {
|
|
|
101
98
|
/** Target leverage. null for zap. */
|
|
102
99
|
targetLeverage: Decimal | null;
|
|
103
100
|
}
|
|
101
|
+
export interface CheckerFeePolicyCompatibility {
|
|
102
|
+
/** Exact BPS the policy returns for every DEX-executed swap. */
|
|
103
|
+
exactFeeBpsForDexSwaps: bigint;
|
|
104
|
+
/** Receiver submitted to the checker-bound DEX route. */
|
|
105
|
+
feeReceiver: address;
|
|
106
|
+
}
|
|
104
107
|
export interface FeePolicy {
|
|
108
|
+
/** Chain this policy was constructed for. Omit only for custom legacy policies;
|
|
109
|
+
* use "any" for chain-agnostic no-op policies. */
|
|
110
|
+
chain?: ChainRpcPrefix | "any";
|
|
105
111
|
/** Returns the fee in BPS for this operation. Return 0n for no fee. */
|
|
106
112
|
getFeeBps(ctx: FeePolicyContext): bigint;
|
|
107
113
|
/** Address that receives the fee. KyberSwap supports comma-separated
|
|
108
114
|
* multi-receiver lists if extended in the future. */
|
|
109
115
|
feeReceiver: address;
|
|
116
|
+
/** Declares that non-no-op DEX swaps always use one checker-compatible fee.
|
|
117
|
+
* Omit this for context-dependent policies such as stable-tier overrides. */
|
|
118
|
+
checkerCompatibility?: CheckerFeePolicyCompatibility;
|
|
110
119
|
}
|
|
111
120
|
/** Fee BPS charged on all DEX swaps via KyberSwap's `feeAmount` parameter.
|
|
112
121
|
* Must match the on-chain KyberSwapChecker.FEE_BPS constant — if they
|
|
113
122
|
* diverge, every swap reverts (checker enforces exact match).
|
|
114
123
|
* To change the fee: update this constant AND redeploy the checker. */
|
|
115
124
|
export declare const CURVANCE_FEE_BPS = 4n;
|
|
116
|
-
/** Curvance DAO fee receiver — same wallet used for protocol interest fees
|
|
117
|
-
* and existing Kuru aggregator referrer fees. Must match
|
|
118
|
-
* centralRegistry.daoAddress() — the on-chain checker validates
|
|
119
|
-
* dynamically per-swap. If DAO permissions transfer on-chain without
|
|
120
|
-
* updating this constant, every swap reverts. */
|
|
121
|
-
export declare const CURVANCE_DAO_FEE_RECEIVER: address;
|
|
122
125
|
/** Token classification used by the optional category-tier override.
|
|
123
126
|
* Consumers provide their own classifier — the SDK does not currently
|
|
124
127
|
* populate token categories from market metadata. */
|
|
@@ -148,9 +151,10 @@ export interface FlatFeePolicyConfig {
|
|
|
148
151
|
*
|
|
149
152
|
* @example
|
|
150
153
|
* // Simple flat 4 bps everywhere except no-ops:
|
|
154
|
+
* const feeReceiver = await reader.getDaoAddress();
|
|
151
155
|
* flatFeePolicy({
|
|
152
156
|
* bps: 4n,
|
|
153
|
-
* feeReceiver
|
|
157
|
+
* feeReceiver,
|
|
154
158
|
* chain: 'monad-mainnet',
|
|
155
159
|
* })
|
|
156
160
|
*
|
|
@@ -160,7 +164,7 @@ export interface FlatFeePolicyConfig {
|
|
|
160
164
|
* flatFeePolicy({
|
|
161
165
|
* bps: 4n,
|
|
162
166
|
* stableToStableBps: 1n,
|
|
163
|
-
* feeReceiver
|
|
167
|
+
* feeReceiver,
|
|
164
168
|
* chain: 'monad-mainnet',
|
|
165
169
|
* classify: (addr) => STABLES.has(addr.toLowerCase()) ? 'stable' : 'volatile',
|
|
166
170
|
* })
|
|
@@ -168,17 +172,16 @@ export interface FlatFeePolicyConfig {
|
|
|
168
172
|
export declare function flatFeePolicy(config: FlatFeePolicyConfig): FeePolicy;
|
|
169
173
|
/**
|
|
170
174
|
* Convenience: a no-op fee policy that returns 0 bps for all operations.
|
|
171
|
-
*
|
|
172
|
-
* preserves backward compatibility with pre-fee-policy SDK behavior.
|
|
175
|
+
* Pass this explicitly when a caller wants fee-free behavior.
|
|
173
176
|
*
|
|
174
|
-
* The receiver is set to the
|
|
175
|
-
*
|
|
177
|
+
* The receiver is set to the zero address because getFeeBps always returns 0n
|
|
178
|
+
* and no fee receiver is submitted.
|
|
176
179
|
*
|
|
177
180
|
* Frozen to prevent accidental mutation. Anyone needing a customized no-op
|
|
178
181
|
* variant should construct a fresh `flatFeePolicy({ bps: 0n, ... })` instead
|
|
179
182
|
* of mutating this singleton.
|
|
180
183
|
*/
|
|
181
184
|
export declare const NO_FEE_POLICY: FeePolicy;
|
|
182
|
-
export declare function getMonadMainnetFeePolicy(): FeePolicy;
|
|
183
|
-
export declare function defaultFeePolicyForChain(chain: ChainRpcPrefix): FeePolicy;
|
|
185
|
+
export declare function getMonadMainnetFeePolicy(feeReceiver: address): FeePolicy;
|
|
186
|
+
export declare function defaultFeePolicyForChain(chain: ChainRpcPrefix, feeReceiver: address): FeePolicy;
|
|
184
187
|
//# sourceMappingURL=feePolicy.d.ts.map
|
package/dist/feePolicy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feePolicy.d.ts","sourceRoot":"","sources":["../src/feePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"feePolicy.d.ts","sourceRoot":"","sources":["../src/feePolicy.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAO,cAAc,EAAuD,MAAM,WAAW,CAAC;AAGrG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiFG;AAEH,MAAM,MAAM,YAAY,GAClB,aAAa,GACb,eAAe,GACf,sBAAsB,GACtB,KAAK,CAAC;AAEZ,MAAM,WAAW,gBAAgB;IAC7B,iDAAiD;IACjD,SAAS,EAAE,YAAY,CAAC;IACxB,wEAAwE;IACxE,UAAU,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,WAAW,EAAE,OAAO,CAAC;IACrB,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,eAAe,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,qCAAqC;IACrC,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC1C,gEAAgE;IAChE,sBAAsB,EAAE,MAAM,CAAC;IAC/B,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACtB;uDACmD;IACnD,KAAK,CAAC,EAAE,cAAc,GAAG,KAAK,CAAC;IAC/B,uEAAuE;IACvE,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACzC;0DACsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB;kFAC8E;IAC9E,oBAAoB,CAAC,EAAE,6BAA6B,CAAC;CACxD;AAED;;;wEAGwE;AACxE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;sDAEsD;AACtD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAChC,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,qCAAqC;IACrC,WAAW,EAAE,OAAO,CAAC;IACrB;gEAC4D;IAC5D,KAAK,EAAE,cAAc,CAAC;IACtB;;wCAEoC;IACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;6EAGyE;IACzE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,UAAU,GAAG,IAAI,CAAC;CACpD;AAID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CA6EpE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,SAQ1B,CAAC;AAEH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,OAAO,GAAG,SAAS,CAExE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,GAAG,SAAS,CAQ/F"}
|
package/dist/feePolicy.js
CHANGED
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NO_FEE_POLICY = exports.
|
|
3
|
+
exports.NO_FEE_POLICY = exports.CURVANCE_FEE_BPS = void 0;
|
|
4
4
|
exports.flatFeePolicy = flatFeePolicy;
|
|
5
5
|
exports.getMonadMainnetFeePolicy = getMonadMainnetFeePolicy;
|
|
6
6
|
exports.defaultFeePolicyForChain = defaultFeePolicyForChain;
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
7
8
|
const chains_1 = require("./chains");
|
|
8
9
|
/** Fee BPS charged on all DEX swaps via KyberSwap's `feeAmount` parameter.
|
|
9
10
|
* Must match the on-chain KyberSwapChecker.FEE_BPS constant — if they
|
|
10
11
|
* diverge, every swap reverts (checker enforces exact match).
|
|
11
12
|
* To change the fee: update this constant AND redeploy the checker. */
|
|
12
13
|
exports.CURVANCE_FEE_BPS = 4n;
|
|
13
|
-
|
|
14
|
-
* and existing Kuru aggregator referrer fees. Must match
|
|
15
|
-
* centralRegistry.daoAddress() — the on-chain checker validates
|
|
16
|
-
* dynamically per-swap. If DAO permissions transfer on-chain without
|
|
17
|
-
* updating this constant, every swap reverts. */
|
|
18
|
-
exports.CURVANCE_DAO_FEE_RECEIVER = '0x0Acb7eF4D8733C719d60e0992B489b629bc55C02';
|
|
19
|
-
const NATIVE_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
|
|
14
|
+
const NATIVE_ADDRESS_LOWER = helpers_1.NATIVE_ADDRESS.toLowerCase();
|
|
20
15
|
/**
|
|
21
16
|
* Default fee policy: flat BPS for all operations, with no-op exemptions for
|
|
22
17
|
* same-token and native↔wrapped routes. Optionally supports a stable→stable
|
|
@@ -24,9 +19,10 @@ const NATIVE_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
|
|
|
24
19
|
*
|
|
25
20
|
* @example
|
|
26
21
|
* // Simple flat 4 bps everywhere except no-ops:
|
|
22
|
+
* const feeReceiver = await reader.getDaoAddress();
|
|
27
23
|
* flatFeePolicy({
|
|
28
24
|
* bps: 4n,
|
|
29
|
-
* feeReceiver
|
|
25
|
+
* feeReceiver,
|
|
30
26
|
* chain: 'monad-mainnet',
|
|
31
27
|
* })
|
|
32
28
|
*
|
|
@@ -36,7 +32,7 @@ const NATIVE_ADDRESS = '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee';
|
|
|
36
32
|
* flatFeePolicy({
|
|
37
33
|
* bps: 4n,
|
|
38
34
|
* stableToStableBps: 1n,
|
|
39
|
-
* feeReceiver
|
|
35
|
+
* feeReceiver,
|
|
40
36
|
* chain: 'monad-mainnet',
|
|
41
37
|
* classify: (addr) => STABLES.has(addr.toLowerCase()) ? 'stable' : 'volatile',
|
|
42
38
|
* })
|
|
@@ -46,11 +42,11 @@ function flatFeePolicy(config) {
|
|
|
46
42
|
if (bps < 0n) {
|
|
47
43
|
throw new Error(`flatFeePolicy: bps must be non-negative, got ${bps}`);
|
|
48
44
|
}
|
|
49
|
-
if (bps >=
|
|
45
|
+
if (bps >= helpers_1.BPS) {
|
|
50
46
|
throw new Error(`flatFeePolicy: bps must be < 10000 (100%), got ${bps}`);
|
|
51
47
|
}
|
|
52
48
|
if (stableToStableBps !== undefined) {
|
|
53
|
-
if (stableToStableBps < 0n || stableToStableBps >=
|
|
49
|
+
if (stableToStableBps < 0n || stableToStableBps >= helpers_1.BPS) {
|
|
54
50
|
throw new Error(`flatFeePolicy: stableToStableBps must be in [0, 10000), got ${stableToStableBps}`);
|
|
55
51
|
}
|
|
56
52
|
}
|
|
@@ -62,7 +58,17 @@ function flatFeePolicy(config) {
|
|
|
62
58
|
throw new Error(`flatFeePolicy: unknown chain '${chain}'`);
|
|
63
59
|
}
|
|
64
60
|
const wrappedNativeLower = chainCfg.wrapped_native.toLowerCase();
|
|
65
|
-
|
|
61
|
+
const dexSwapFeeIsContextInvariant = stableToStableBps === undefined ||
|
|
62
|
+
classify === undefined ||
|
|
63
|
+
stableToStableBps === bps;
|
|
64
|
+
const checkerCompatibility = dexSwapFeeIsContextInvariant
|
|
65
|
+
? Object.freeze({
|
|
66
|
+
exactFeeBpsForDexSwaps: bps,
|
|
67
|
+
feeReceiver,
|
|
68
|
+
})
|
|
69
|
+
: undefined;
|
|
70
|
+
const policy = {
|
|
71
|
+
chain,
|
|
66
72
|
feeReceiver,
|
|
67
73
|
getFeeBps(ctx) {
|
|
68
74
|
const inLower = ctx.inputToken.toLowerCase();
|
|
@@ -76,8 +82,8 @@ function flatFeePolicy(config) {
|
|
|
76
82
|
// without a DEX call, so no fee applies. This exemption is
|
|
77
83
|
// unconditional — native↔wrapped is always a no-op regardless of
|
|
78
84
|
// which call site invokes the policy.
|
|
79
|
-
if ((inLower ===
|
|
80
|
-
(inLower === wrappedNativeLower && outLower ===
|
|
85
|
+
if ((inLower === NATIVE_ADDRESS_LOWER && outLower === wrappedNativeLower) ||
|
|
86
|
+
(inLower === wrappedNativeLower && outLower === NATIVE_ADDRESS_LOWER)) {
|
|
81
87
|
return 0n;
|
|
82
88
|
}
|
|
83
89
|
// Stable→stable tier (only when both classify and stableToStableBps
|
|
@@ -92,38 +98,41 @@ function flatFeePolicy(config) {
|
|
|
92
98
|
return bps;
|
|
93
99
|
},
|
|
94
100
|
};
|
|
101
|
+
return checkerCompatibility == null
|
|
102
|
+
? policy
|
|
103
|
+
: {
|
|
104
|
+
...policy,
|
|
105
|
+
checkerCompatibility,
|
|
106
|
+
};
|
|
95
107
|
}
|
|
96
108
|
/**
|
|
97
109
|
* Convenience: a no-op fee policy that returns 0 bps for all operations.
|
|
98
|
-
*
|
|
99
|
-
* preserves backward compatibility with pre-fee-policy SDK behavior.
|
|
110
|
+
* Pass this explicitly when a caller wants fee-free behavior.
|
|
100
111
|
*
|
|
101
|
-
* The receiver is set to the
|
|
102
|
-
*
|
|
112
|
+
* The receiver is set to the zero address because getFeeBps always returns 0n
|
|
113
|
+
* and no fee receiver is submitted.
|
|
103
114
|
*
|
|
104
115
|
* Frozen to prevent accidental mutation. Anyone needing a customized no-op
|
|
105
116
|
* variant should construct a fresh `flatFeePolicy({ bps: 0n, ... })` instead
|
|
106
117
|
* of mutating this singleton.
|
|
107
118
|
*/
|
|
108
119
|
exports.NO_FEE_POLICY = Object.freeze({
|
|
109
|
-
|
|
120
|
+
chain: "any",
|
|
121
|
+
feeReceiver: helpers_1.EMPTY_ADDRESS,
|
|
122
|
+
checkerCompatibility: Object.freeze({
|
|
123
|
+
exactFeeBpsForDexSwaps: 0n,
|
|
124
|
+
feeReceiver: helpers_1.EMPTY_ADDRESS,
|
|
125
|
+
}),
|
|
110
126
|
getFeeBps: () => 0n,
|
|
111
127
|
});
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
128
|
+
function getMonadMainnetFeePolicy(feeReceiver) {
|
|
129
|
+
return defaultFeePolicyForChain('monad-mainnet', feeReceiver);
|
|
130
|
+
}
|
|
131
|
+
function defaultFeePolicyForChain(chain, feeReceiver) {
|
|
132
|
+
return Object.freeze(flatFeePolicy({
|
|
115
133
|
bps: exports.CURVANCE_FEE_BPS,
|
|
116
|
-
feeReceiver
|
|
117
|
-
chain
|
|
134
|
+
feeReceiver,
|
|
135
|
+
chain,
|
|
118
136
|
}));
|
|
119
|
-
return monadMainnetFeePolicy;
|
|
120
|
-
}
|
|
121
|
-
function defaultFeePolicyForChain(chain) {
|
|
122
|
-
switch (chain) {
|
|
123
|
-
case 'monad-mainnet':
|
|
124
|
-
return getMonadMainnetFeePolicy();
|
|
125
|
-
default:
|
|
126
|
-
return exports.NO_FEE_POLICY;
|
|
127
|
-
}
|
|
128
137
|
}
|
|
129
138
|
//# sourceMappingURL=feePolicy.js.map
|
package/dist/feePolicy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feePolicy.js","sourceRoot":"","sources":["../src/feePolicy.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"feePolicy.js","sourceRoot":"","sources":["../src/feePolicy.ts"],"names":[],"mappings":"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"}
|
package/dist/format/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export * as leverage from './leverage';
|
|
2
|
+
export * as borrow from './borrow';
|
|
3
|
+
export * as collateral from './collateral';
|
|
4
|
+
export * as health from './health';
|
|
5
|
+
export * as amounts from './amounts';
|
|
1
6
|
export * from './leverage';
|
|
2
7
|
export * from './borrow';
|
|
3
8
|
export * from './collateral';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/format/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/format/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAErC,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
package/dist/format/index.js
CHANGED
|
@@ -10,10 +10,38 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
12
|
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
13
35
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
37
|
};
|
|
16
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.amounts = exports.health = exports.collateral = exports.borrow = exports.leverage = void 0;
|
|
40
|
+
exports.leverage = __importStar(require("./leverage"));
|
|
41
|
+
exports.borrow = __importStar(require("./borrow"));
|
|
42
|
+
exports.collateral = __importStar(require("./collateral"));
|
|
43
|
+
exports.health = __importStar(require("./health"));
|
|
44
|
+
exports.amounts = __importStar(require("./amounts"));
|
|
17
45
|
__exportStar(require("./leverage"), exports);
|
|
18
46
|
__exportStar(require("./borrow"), exports);
|
|
19
47
|
__exportStar(require("./collateral"), exports);
|
package/dist/format/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/format/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/format/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuC;AACvC,mDAAmC;AACnC,2DAA2C;AAC3C,mDAAmC;AACnC,qDAAqC;AAErC,6CAA2B;AAC3B,2CAAyB;AACzB,+CAA6B;AAC7B,2CAAyB;AACzB,4CAA0B"}
|