@varla/sdk 1.11.4 → 1.13.2
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/AGENTS.md +82 -95
- package/CHANGELOG.md +359 -0
- package/README.md +227 -275
- package/dist/abi/full/OpinionCtfExecutionEngineAdapter.js +1 -0
- package/dist/abi/full/OpinionCtfExecutionEngineAdapter.js.map +1 -0
- package/dist/abi/full/OracleUpdaterRouter.d.ts +30 -9
- package/dist/abi/full/OracleUpdaterRouter.d.ts.map +1 -1
- package/dist/abi/full/OracleUpdaterRouter.js +37 -9
- package/dist/abi/full/OracleUpdaterRouter.js.map +1 -0
- package/dist/abi/full/PolymarketCtfAdapter.js +1 -0
- package/dist/abi/full/PolymarketCtfAdapter.js.map +1 -0
- package/dist/abi/full/VarlaAccessManager.js +1 -0
- package/dist/abi/full/VarlaAccessManager.js.map +1 -0
- package/dist/abi/full/VarlaConvertLiquidator.js +1 -0
- package/dist/abi/full/VarlaConvertLiquidator.js.map +1 -0
- package/dist/abi/full/VarlaCore.js +1 -0
- package/dist/abi/full/VarlaCore.js.map +1 -0
- package/dist/abi/full/VarlaInterestRateStrategy.js +1 -0
- package/dist/abi/full/VarlaInterestRateStrategy.js.map +1 -0
- package/dist/abi/full/VarlaLiquidator.d.ts +1 -1
- package/dist/abi/full/VarlaLiquidator.js +2 -1
- package/dist/abi/full/VarlaLiquidator.js.map +1 -0
- package/dist/abi/full/VarlaMergeLiquidator.js +1 -0
- package/dist/abi/full/VarlaMergeLiquidator.js.map +1 -0
- package/dist/abi/full/VarlaOracle.js +1 -0
- package/dist/abi/full/VarlaOracle.js.map +1 -0
- package/dist/abi/full/VarlaPool.js +1 -0
- package/dist/abi/full/VarlaPool.js.map +1 -0
- package/dist/abi/full/VarlaProxyAdmin.js +1 -0
- package/dist/abi/full/VarlaProxyAdmin.js.map +1 -0
- package/dist/abi/index.js +1 -0
- package/dist/abi/index.js.map +1 -0
- package/dist/abi/subsets/VarlaOracle.registry.js +1 -0
- package/dist/abi/subsets/VarlaOracle.registry.js.map +1 -0
- package/dist/abi.js +1 -0
- package/dist/abi.js.map +1 -0
- package/dist/actions/admin.js +1 -0
- package/dist/actions/admin.js.map +1 -0
- package/dist/actions/core.js +1 -0
- package/dist/actions/core.js.map +1 -0
- package/dist/actions/erc1155.js +1 -0
- package/dist/actions/erc1155.js.map +1 -0
- package/dist/actions/erc20.js +1 -0
- package/dist/actions/erc20.js.map +1 -0
- package/dist/actions/index.d.ts +7 -7
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +8 -7
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/liquidator.js +1 -0
- package/dist/actions/liquidator.js.map +1 -0
- package/dist/actions/oracle.d.ts +1 -2
- package/dist/actions/oracle.d.ts.map +1 -1
- package/dist/actions/oracle.js +1 -0
- package/dist/actions/oracle.js.map +1 -0
- package/dist/actions/oracleUpdaterRouter.d.ts +8 -1
- package/dist/actions/oracleUpdaterRouter.d.ts.map +1 -1
- package/dist/actions/oracleUpdaterRouter.js +14 -1
- package/dist/actions/oracleUpdaterRouter.js.map +1 -0
- package/dist/actions/pool.js +1 -0
- package/dist/actions/pool.js.map +1 -0
- package/dist/actions/rbac.js +1 -0
- package/dist/actions/rbac.js.map +1 -0
- package/dist/actions/tx.js +1 -0
- package/dist/actions/tx.js.map +1 -0
- package/dist/actions/utils.js +1 -0
- package/dist/actions/utils.js.map +1 -0
- package/dist/addresses/bsc.js +1 -0
- package/dist/addresses/bsc.js.map +1 -0
- package/dist/addresses/index.js +1 -0
- package/dist/addresses/index.js.map +1 -0
- package/dist/addresses/polygon.js +1 -0
- package/dist/addresses/polygon.js.map +1 -0
- package/dist/addresses.js +1 -0
- package/dist/addresses.js.map +1 -0
- package/dist/batch.js +1 -0
- package/dist/batch.js.map +1 -0
- package/dist/contracts.d.ts +1 -2
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +2 -2
- package/dist/contracts.js.map +1 -0
- package/dist/errors.d.ts +87 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +240 -0
- package/dist/errors.js.map +1 -0
- package/dist/events/decode.js +1 -0
- package/dist/events/decode.js.map +1 -0
- package/dist/events/defs.js +1 -0
- package/dist/events/defs.js.map +1 -0
- package/dist/events/index.d.ts +3 -3
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +4 -3
- package/dist/events/index.js.map +1 -0
- package/dist/events/logs.js +1 -0
- package/dist/events/logs.js.map +1 -0
- package/dist/events/oracleRegistrySync.js +1 -0
- package/dist/events/oracleRegistrySync.js.map +1 -0
- package/dist/events/recent.d.ts +1 -1
- package/dist/events/recent.d.ts.map +1 -1
- package/dist/events/recent.js +2 -1
- package/dist/events/recent.js.map +1 -0
- package/dist/format.js +1 -0
- package/dist/format.js.map +1 -0
- package/dist/generated.d.ts +31 -10
- package/dist/generated.d.ts.map +1 -1
- package/dist/generated.js +1 -0
- package/dist/generated.js.map +1 -0
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -9
- package/dist/index.js.map +1 -0
- package/dist/leverage/deleverageExecute.d.ts +36 -0
- package/dist/leverage/deleverageExecute.d.ts.map +1 -0
- package/dist/leverage/deleverageExecute.js +53 -0
- package/dist/leverage/deleverageExecute.js.map +1 -0
- package/dist/leverage/execute.d.ts +62 -0
- package/dist/leverage/execute.d.ts.map +1 -0
- package/dist/leverage/execute.js +84 -0
- package/dist/leverage/execute.js.map +1 -0
- package/dist/leverage/index.d.ts +32 -0
- package/dist/leverage/index.d.ts.map +1 -0
- package/dist/leverage/index.js +12 -0
- package/dist/leverage/index.js.map +1 -0
- package/dist/leverage/math.d.ts +119 -0
- package/dist/leverage/math.d.ts.map +1 -0
- package/dist/leverage/math.js +304 -0
- package/dist/leverage/math.js.map +1 -0
- package/dist/leverage/plan.d.ts +143 -0
- package/dist/leverage/plan.d.ts.map +1 -0
- package/dist/leverage/plan.js +204 -0
- package/dist/leverage/plan.js.map +1 -0
- package/dist/leverage/preflight.d.ts +27 -0
- package/dist/leverage/preflight.d.ts.map +1 -0
- package/dist/leverage/preflight.js +34 -0
- package/dist/leverage/preflight.js.map +1 -0
- package/dist/leverage/types.d.ts +157 -0
- package/dist/leverage/types.d.ts.map +1 -0
- package/dist/leverage/types.js +43 -0
- package/dist/leverage/types.js.map +1 -0
- package/dist/meta.d.ts +42 -0
- package/dist/meta.d.ts.map +1 -0
- package/dist/meta.js +47 -0
- package/dist/meta.js.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/views/accessManager.js +1 -0
- package/dist/views/accessManager.js.map +1 -0
- package/dist/views/adapters.js +1 -0
- package/dist/views/adapters.js.map +1 -0
- package/dist/views/admin.d.ts.map +1 -1
- package/dist/views/admin.js +1 -0
- package/dist/views/admin.js.map +1 -0
- package/dist/views/core.d.ts.map +1 -1
- package/dist/views/core.js +1 -0
- package/dist/views/core.js.map +1 -0
- package/dist/views/index.d.ts +5 -5
- package/dist/views/index.d.ts.map +1 -1
- package/dist/views/index.js +6 -5
- package/dist/views/index.js.map +1 -0
- package/dist/views/lenders.js +1 -0
- package/dist/views/lenders.js.map +1 -0
- package/dist/views/liquidators.js +1 -0
- package/dist/views/liquidators.js.map +1 -0
- package/dist/views/oracle.js +1 -0
- package/dist/views/oracle.js.map +1 -0
- package/dist/views/pool.js +1 -0
- package/dist/views/pool.js.map +1 -0
- package/dist/views/system.d.ts.map +1 -1
- package/dist/views/system.js +1 -0
- package/dist/views/system.js.map +1 -0
- package/package.json +18 -5
- package/src/abi/README.md +17 -0
- package/src/abi/full/OpinionCtfExecutionEngineAdapter.ts +320 -0
- package/src/abi/full/OracleUpdaterRouter.ts +528 -0
- package/src/abi/full/PolymarketCtfAdapter.ts +312 -0
- package/src/abi/full/VarlaAccessManager.ts +1171 -0
- package/src/abi/full/VarlaConvertLiquidator.ts +834 -0
- package/src/abi/full/VarlaCore.ts +2277 -0
- package/src/abi/full/VarlaInterestRateStrategy.ts +442 -0
- package/src/abi/full/VarlaLiquidator.ts +914 -0
- package/src/abi/full/VarlaMergeLiquidator.ts +797 -0
- package/src/abi/full/VarlaOracle.ts +1825 -0
- package/src/abi/full/VarlaPool.ts +1637 -0
- package/src/abi/full/VarlaProxyAdmin.ts +301 -0
- package/src/abi/index.ts +17 -0
- package/src/abi/subsets/VarlaOracle.registry.ts +784 -0
- package/src/abi.ts +2 -0
- package/src/actions/admin.ts +357 -0
- package/src/actions/core.ts +68 -0
- package/src/actions/erc1155.ts +22 -0
- package/src/actions/erc20.ts +22 -0
- package/src/actions/index.ts +13 -0
- package/src/actions/liquidator.ts +76 -0
- package/src/actions/oracle.ts +618 -0
- package/src/actions/oracleUpdaterRouter.ts +233 -0
- package/src/actions/pool.ts +76 -0
- package/src/actions/rbac.ts +72 -0
- package/src/actions/tx.ts +16 -0
- package/src/actions/utils.ts +15 -0
- package/src/addresses/README.md +17 -0
- package/src/addresses/bsc.json +16 -0
- package/src/addresses/bsc.ts +15 -0
- package/src/addresses/index.ts +6 -0
- package/src/addresses/polygon.json +16 -0
- package/src/addresses/polygon.ts +15 -0
- package/src/addresses.ts +2 -0
- package/src/batch.ts +55 -0
- package/src/contracts.ts +232 -0
- package/src/errors.ts +305 -0
- package/src/events/decode.ts +37 -0
- package/src/events/defs.ts +70 -0
- package/src/events/index.ts +7 -0
- package/src/events/logs.ts +42 -0
- package/src/events/oracleRegistrySync.ts +206 -0
- package/src/events/recent.ts +39 -0
- package/src/format.ts +121 -0
- package/src/generated.ts +27 -0
- package/src/index.ts +18 -0
- package/src/leverage/deleverageExecute.ts +111 -0
- package/src/leverage/execute.ts +172 -0
- package/src/leverage/index.ts +88 -0
- package/src/leverage/math.ts +446 -0
- package/src/leverage/plan.ts +356 -0
- package/src/leverage/preflight.ts +63 -0
- package/src/leverage/types.ts +204 -0
- package/src/meta.ts +82 -0
- package/src/types.ts +25 -0
- package/src/views/accessManager.ts +286 -0
- package/src/views/adapters.ts +27 -0
- package/src/views/admin.ts +92 -0
- package/src/views/core.ts +1370 -0
- package/src/views/index.ts +11 -0
- package/src/views/lenders.ts +65 -0
- package/src/views/liquidators.ts +227 -0
- package/src/views/oracle.ts +739 -0
- package/src/views/pool.ts +277 -0
- package/src/views/system.ts +42 -0
- package/BACKEND.md +0 -405
- package/FRONTEND.md +0 -485
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
// Note: explicit .js extension is required for Node ESM resolution.
|
|
2
|
+
import { readLtvForPosition } from "../views/core.js";
|
|
3
|
+
import { planDeleverage, planLeverageLoop, } from "./math.js";
|
|
4
|
+
/**
|
|
5
|
+
* RPC-aware planner that additionally caps planned debt using:
|
|
6
|
+
* - pool.maxBorrow() (liquidity + borrow cap)
|
|
7
|
+
* - user max borrow headroom (collateral-based)
|
|
8
|
+
* - core.MIN_BORROW() (dust / protocol min)
|
|
9
|
+
*/
|
|
10
|
+
export async function planLeverageFromChainPrecise(params) {
|
|
11
|
+
const [base, poolMaxBorrow, minBorrow, userSnap] = await Promise.all([
|
|
12
|
+
planLeverageFromChain(params),
|
|
13
|
+
params.pool ? params.pool.read.maxBorrow() : Promise.resolve(undefined),
|
|
14
|
+
params.minStepBorrowFromCore && params.coreMinBorrowRead
|
|
15
|
+
? params.coreMinBorrowRead.MIN_BORROW()
|
|
16
|
+
: Promise.resolve(undefined),
|
|
17
|
+
params.capByUserMaxBorrow
|
|
18
|
+
? params.core.read.getAccountSummary([params.user])
|
|
19
|
+
: Promise.resolve(undefined),
|
|
20
|
+
]);
|
|
21
|
+
let maxTotalDebt = params.maxTotalDebt;
|
|
22
|
+
if (poolMaxBorrow !== undefined) {
|
|
23
|
+
maxTotalDebt =
|
|
24
|
+
maxTotalDebt === undefined
|
|
25
|
+
? poolMaxBorrow
|
|
26
|
+
: poolMaxBorrow < maxTotalDebt
|
|
27
|
+
? poolMaxBorrow
|
|
28
|
+
: maxTotalDebt;
|
|
29
|
+
}
|
|
30
|
+
if (params.capByUserMaxBorrow && userSnap !== undefined) {
|
|
31
|
+
const r = userSnap;
|
|
32
|
+
const maxBorrow = r.maxBorrow ?? r[4];
|
|
33
|
+
if (typeof maxBorrow !== "bigint") {
|
|
34
|
+
throw new Error("Unexpected getAccountSummary() return shape (maxBorrow)");
|
|
35
|
+
}
|
|
36
|
+
maxTotalDebt =
|
|
37
|
+
maxTotalDebt === undefined ? maxBorrow : maxBorrow < maxTotalDebt ? maxBorrow : maxTotalDebt;
|
|
38
|
+
}
|
|
39
|
+
const minStepBorrow = minBorrow !== undefined
|
|
40
|
+
? params.minStepBorrow !== undefined
|
|
41
|
+
? params.minStepBorrow > minBorrow
|
|
42
|
+
? params.minStepBorrow
|
|
43
|
+
: minBorrow
|
|
44
|
+
: minBorrow
|
|
45
|
+
: params.minStepBorrow;
|
|
46
|
+
// Re-run pure planner with caps (base already did oracle+ltv reads).
|
|
47
|
+
return planLeverageLoop({
|
|
48
|
+
initialCapital: base.params.initialCapital,
|
|
49
|
+
tokenPriceE8: base.params.tokenPriceE8,
|
|
50
|
+
ltvWad: base.params.ltvWad,
|
|
51
|
+
targetLeverageWad: base.params.targetLeverageWad,
|
|
52
|
+
maxIterations: base.params.maxIterations,
|
|
53
|
+
minStepBorrow,
|
|
54
|
+
maxTotalDebt,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Plan a leverage loop by reading on-chain state first.
|
|
59
|
+
*
|
|
60
|
+
* 1. Reads the effective LTV for the position
|
|
61
|
+
* 2. Reads the oracle price
|
|
62
|
+
* 3. Delegates to `planLeverageLoop()` (pure math)
|
|
63
|
+
*/
|
|
64
|
+
export async function planLeverageFromChain(params) {
|
|
65
|
+
const [{ ltvWad }, tokenPriceE8, depAllowed, validCollateral] = await Promise.all([
|
|
66
|
+
readLtvForPosition({ core: params.core, positionId: params.positionId }),
|
|
67
|
+
(async () => {
|
|
68
|
+
// Prefer non-reverting reads when possible.
|
|
69
|
+
if (params.oracle.read.getPositionSnapshot) {
|
|
70
|
+
const raw = await params.oracle.read.getPositionSnapshot([params.positionId]);
|
|
71
|
+
const r = raw;
|
|
72
|
+
const ok = r.priceOk ?? r[0];
|
|
73
|
+
const priceE8 = r.priceE8 ?? r[1];
|
|
74
|
+
if (typeof ok !== "boolean" || typeof priceE8 !== "bigint") {
|
|
75
|
+
throw new Error("Unexpected getPositionSnapshot() return shape");
|
|
76
|
+
}
|
|
77
|
+
if (!ok)
|
|
78
|
+
throw new Error("Oracle price unavailable");
|
|
79
|
+
return priceE8;
|
|
80
|
+
}
|
|
81
|
+
if (params.oracle.read.tryGetPrice) {
|
|
82
|
+
const raw = await params.oracle.read.tryGetPrice([params.positionId]);
|
|
83
|
+
const r = raw;
|
|
84
|
+
const ok = r.ok ?? r[0];
|
|
85
|
+
const price = r.price ?? r[1];
|
|
86
|
+
if (typeof ok !== "boolean" || typeof price !== "bigint") {
|
|
87
|
+
throw new Error("Unexpected tryGetPrice() return shape");
|
|
88
|
+
}
|
|
89
|
+
if (!ok)
|
|
90
|
+
throw new Error("Oracle price unavailable");
|
|
91
|
+
return price;
|
|
92
|
+
}
|
|
93
|
+
if (!params.oracle.read.getPrice) {
|
|
94
|
+
throw new Error("Oracle contract is missing price read method");
|
|
95
|
+
}
|
|
96
|
+
return params.oracle.read.getPrice([params.positionId]);
|
|
97
|
+
})(),
|
|
98
|
+
params.requireDepositAllowed && params.oracle.read.isDepositAllowed
|
|
99
|
+
? params.oracle.read.isDepositAllowed([params.positionId])
|
|
100
|
+
: Promise.resolve(undefined),
|
|
101
|
+
params.requireValidCollateral && params.oracle.read.isValidCollateral
|
|
102
|
+
? params.oracle.read.isValidCollateral([params.positionId])
|
|
103
|
+
: Promise.resolve(undefined),
|
|
104
|
+
]);
|
|
105
|
+
if (params.requireDepositAllowed) {
|
|
106
|
+
if (depAllowed === undefined) {
|
|
107
|
+
throw new Error("Oracle contract is missing isDepositAllowed() read method");
|
|
108
|
+
}
|
|
109
|
+
if (!depAllowed) {
|
|
110
|
+
throw new Error("Deposit not allowed for this position (early-closure window or resolved)");
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (params.requireValidCollateral) {
|
|
114
|
+
if (validCollateral === undefined) {
|
|
115
|
+
throw new Error("Oracle contract is missing isValidCollateral() read method");
|
|
116
|
+
}
|
|
117
|
+
if (!validCollateral) {
|
|
118
|
+
throw new Error("Position is not valid collateral for deposit");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const loopParams = {
|
|
122
|
+
initialCapital: params.initialCapital,
|
|
123
|
+
tokenPriceE8,
|
|
124
|
+
ltvWad,
|
|
125
|
+
targetLeverageWad: params.targetLeverageWad,
|
|
126
|
+
maxIterations: params.maxIterations,
|
|
127
|
+
minStepBorrow: params.minStepBorrow,
|
|
128
|
+
maxTotalDebt: params.maxTotalDebt,
|
|
129
|
+
};
|
|
130
|
+
return planLeverageLoop(loopParams);
|
|
131
|
+
}
|
|
132
|
+
// ---------------------------------------------------------------------------
|
|
133
|
+
// resolveLeveragePositionId
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
/**
|
|
136
|
+
* Convenience helper to pick the correct positionId for a leverage direction.
|
|
137
|
+
*
|
|
138
|
+
* Semantics:
|
|
139
|
+
* - direction="long" => returns the provided positionId
|
|
140
|
+
* - direction="short" => returns oracle.getOppositePositionId(positionId)
|
|
141
|
+
*/
|
|
142
|
+
export async function resolveLeveragePositionId(params) {
|
|
143
|
+
if (params.direction === "long")
|
|
144
|
+
return params.positionId;
|
|
145
|
+
if (!params.oracle.read.getOppositePositionId) {
|
|
146
|
+
throw new Error("Oracle contract is missing getOppositePositionId() read method");
|
|
147
|
+
}
|
|
148
|
+
return params.oracle.read.getOppositePositionId([params.positionId]);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Plan a deleverage (unwind) loop by reading on-chain state first.
|
|
152
|
+
*
|
|
153
|
+
* 1. Reads deposited token balance and current debt
|
|
154
|
+
* 2. Reads the effective LTV and oracle price
|
|
155
|
+
* 3. Delegates to `planDeleverage()` (pure math)
|
|
156
|
+
*/
|
|
157
|
+
export async function planDeleverageFromChain(params) {
|
|
158
|
+
const [{ ltvWad }, tokenPriceE8, depositedTokens, currentDebt] = await Promise.all([
|
|
159
|
+
readLtvForPosition({ core: params.core, positionId: params.positionId }),
|
|
160
|
+
(async () => {
|
|
161
|
+
if (params.oracle.read.getPositionSnapshot) {
|
|
162
|
+
const raw = await params.oracle.read.getPositionSnapshot([params.positionId]);
|
|
163
|
+
const r = raw;
|
|
164
|
+
const ok = r.priceOk ?? r[0];
|
|
165
|
+
const priceE8 = r.priceE8 ?? r[1];
|
|
166
|
+
if (typeof ok !== "boolean" || typeof priceE8 !== "bigint") {
|
|
167
|
+
throw new Error("Unexpected getPositionSnapshot() return shape");
|
|
168
|
+
}
|
|
169
|
+
if (!ok)
|
|
170
|
+
throw new Error("Oracle price unavailable");
|
|
171
|
+
return priceE8;
|
|
172
|
+
}
|
|
173
|
+
if (params.oracle.read.tryGetPrice) {
|
|
174
|
+
const raw = await params.oracle.read.tryGetPrice([params.positionId]);
|
|
175
|
+
const r = raw;
|
|
176
|
+
const ok = r.ok ?? r[0];
|
|
177
|
+
const price = r.price ?? r[1];
|
|
178
|
+
if (typeof ok !== "boolean" || typeof price !== "bigint") {
|
|
179
|
+
throw new Error("Unexpected tryGetPrice() return shape");
|
|
180
|
+
}
|
|
181
|
+
if (!ok)
|
|
182
|
+
throw new Error("Oracle price unavailable");
|
|
183
|
+
return price;
|
|
184
|
+
}
|
|
185
|
+
if (!params.oracle.read.getPrice) {
|
|
186
|
+
throw new Error("Oracle contract is missing price read method");
|
|
187
|
+
}
|
|
188
|
+
return params.oracle.read.getPrice([params.positionId]);
|
|
189
|
+
})(),
|
|
190
|
+
params.core.read.positionBalances([params.user, params.positionId]),
|
|
191
|
+
params.core.read.getDebt([params.user]),
|
|
192
|
+
]);
|
|
193
|
+
const deleverageParams = {
|
|
194
|
+
depositedTokens,
|
|
195
|
+
currentDebt,
|
|
196
|
+
tokenPriceE8,
|
|
197
|
+
ltvWad,
|
|
198
|
+
targetDebtReduction: params.targetDebtReduction,
|
|
199
|
+
maxIterations: params.maxIterations,
|
|
200
|
+
minStepSell: params.minStepSell,
|
|
201
|
+
};
|
|
202
|
+
return planDeleverage(deleverageParams);
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/leverage/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Leverage module preflight helpers.
|
|
3
|
+
*
|
|
4
|
+
* These helpers are intentionally small and “plumbing-only”.
|
|
5
|
+
* They provide standardized ways to:
|
|
6
|
+
* - check approvals required for leverage/deleverage loops
|
|
7
|
+
* - build simulate-first approval txs
|
|
8
|
+
*/
|
|
9
|
+
import type { Address, PublicClient } from "viem";
|
|
10
|
+
import type { SimulatedTx } from "../actions/oracle.js";
|
|
11
|
+
export type ReadErc1155IsApprovedForAllParams = {
|
|
12
|
+
publicClient: Pick<PublicClient, "readContract">;
|
|
13
|
+
tokenAddress: Address;
|
|
14
|
+
owner: Address;
|
|
15
|
+
operator: Address;
|
|
16
|
+
};
|
|
17
|
+
export declare function readErc1155IsApprovedForAll(params: ReadErc1155IsApprovedForAllParams): Promise<boolean>;
|
|
18
|
+
export declare function prepareApprovePositionsTokenIfNeeded(params: {
|
|
19
|
+
publicClient: Pick<PublicClient, "simulateContract" | "readContract">;
|
|
20
|
+
positionsTokenAddress: Address;
|
|
21
|
+
owner: Address;
|
|
22
|
+
operator: Address;
|
|
23
|
+
}): Promise<{
|
|
24
|
+
needed: boolean;
|
|
25
|
+
tx?: SimulatedTx;
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=preflight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/leverage/preflight.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAIlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,iCAAiC,GAAG;IAC9C,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACjD,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED,wBAAsB,oCAAoC,CAAC,MAAM,EAAE;IACjE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,GAAG,cAAc,CAAC,CAAC;IACtE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,WAAW,CAAA;CAAE,CAAC,CAkBjD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Note: explicit .js extension is required for Node ESM resolution.
|
|
2
|
+
import { erc1155Abi } from "viem";
|
|
3
|
+
import { prepareErc1155SetApprovalForAll } from "../actions/erc1155.js";
|
|
4
|
+
export async function readErc1155IsApprovedForAll(params) {
|
|
5
|
+
const approved = await params.publicClient.readContract({
|
|
6
|
+
address: params.tokenAddress,
|
|
7
|
+
abi: erc1155Abi,
|
|
8
|
+
functionName: "isApprovedForAll",
|
|
9
|
+
args: [params.owner, params.operator],
|
|
10
|
+
});
|
|
11
|
+
if (typeof approved !== "boolean") {
|
|
12
|
+
throw new Error("Unexpected isApprovedForAll return type");
|
|
13
|
+
}
|
|
14
|
+
return approved;
|
|
15
|
+
}
|
|
16
|
+
export async function prepareApprovePositionsTokenIfNeeded(params) {
|
|
17
|
+
const approved = await readErc1155IsApprovedForAll({
|
|
18
|
+
publicClient: params.publicClient,
|
|
19
|
+
tokenAddress: params.positionsTokenAddress,
|
|
20
|
+
owner: params.owner,
|
|
21
|
+
operator: params.operator,
|
|
22
|
+
});
|
|
23
|
+
if (approved)
|
|
24
|
+
return { needed: false };
|
|
25
|
+
const tx = await prepareErc1155SetApprovalForAll({
|
|
26
|
+
publicClient: params.publicClient,
|
|
27
|
+
tokenAddress: params.positionsTokenAddress,
|
|
28
|
+
account: params.owner,
|
|
29
|
+
operator: params.operator,
|
|
30
|
+
approved: true,
|
|
31
|
+
});
|
|
32
|
+
return { needed: true, tx };
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/leverage/preflight.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAYpE,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAElC,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAUxE,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAyC;IAEzC,MAAM,QAAQ,GAAG,MAAO,MAAM,CAAC,YAAoB,CAAC,YAAY,CAAC;QAC/D,OAAO,EAAE,MAAM,CAAC,YAAY;QAC5B,GAAG,EAAE,UAAU;QACf,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC;KACtC,CAAC,CAAC;IACH,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oCAAoC,CAAC,MAK1D;IACC,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC;QACjD,YAAY,EAAE,MAAM,CAAC,YAAmB;QACxC,YAAY,EAAE,MAAM,CAAC,qBAAqB;QAC1C,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;IAEH,IAAI,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEvC,MAAM,EAAE,GAAG,MAAM,+BAA+B,CAAC;QAC/C,YAAY,EAAE,MAAM,CAAC,YAAmB;QACxC,YAAY,EAAE,MAAM,CAAC,qBAAqB;QAC1C,OAAO,EAAE,MAAM,CAAC,KAAK;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { Hash } from "viem";
|
|
2
|
+
/** WAD precision (1e18). */
|
|
3
|
+
export declare const WAD = 1000000000000000000n;
|
|
4
|
+
/** Oracle price precision (1e8 = $1.00). */
|
|
5
|
+
export declare const PRICE_E8 = 100000000n;
|
|
6
|
+
/** Default maximum loop iterations (safety cap). */
|
|
7
|
+
export declare const DEFAULT_MAX_ITERATIONS = 10;
|
|
8
|
+
/**
|
|
9
|
+
* Default minimum step size, expressed in the collateral token's base units.
|
|
10
|
+
*
|
|
11
|
+
* NOTE:
|
|
12
|
+
* - This is intentionally conservative and primarily exists as a safety/DoS cap
|
|
13
|
+
* to prevent extremely long plans due to diminishing returns.
|
|
14
|
+
* - Consumers SHOULD override this using on-chain `core.MIN_BORROW()` and/or by
|
|
15
|
+
* computing a USD-denominated threshold using token decimals.
|
|
16
|
+
*/
|
|
17
|
+
export declare const DEFAULT_MIN_STEP_COLLATERAL = 1000000n;
|
|
18
|
+
/** Compute 10^n as bigint. */
|
|
19
|
+
export declare function pow10(n: number): bigint;
|
|
20
|
+
/**
|
|
21
|
+
* Returns a collateral base-unit amount corresponding to a whole-dollar amount.
|
|
22
|
+
*
|
|
23
|
+
* Example:
|
|
24
|
+
* - decimals=6, dollars=1 => 1_000_000
|
|
25
|
+
* - decimals=18, dollars=1 => 1_000_000_000_000_000_000
|
|
26
|
+
*/
|
|
27
|
+
export declare function collateralForDollars(params: {
|
|
28
|
+
decimals: number;
|
|
29
|
+
dollars: bigint;
|
|
30
|
+
}): bigint;
|
|
31
|
+
/** Direction of the leveraged position. */
|
|
32
|
+
export type LeverageDirection = "long" | "short";
|
|
33
|
+
/**
|
|
34
|
+
* A single step in a leverage loop.
|
|
35
|
+
*
|
|
36
|
+
* Steps alternate between off-chain token acquisition ("buy") and on-chain
|
|
37
|
+
* Varla operations ("deposit" / "borrow").
|
|
38
|
+
*
|
|
39
|
+
* The first step is always "buy" (user buys tokens with their initial capital),
|
|
40
|
+
* followed by deposit → borrow → buy → deposit → borrow → ... until the
|
|
41
|
+
* target leverage is reached or iterations are exhausted.
|
|
42
|
+
*/
|
|
43
|
+
export type LeverageStep = {
|
|
44
|
+
kind: "buy";
|
|
45
|
+
/** Collateral amount to spend on the CLOB (collateral base units). */
|
|
46
|
+
collateralAmount: bigint;
|
|
47
|
+
/** Expected token amount at the given price (before slippage). */
|
|
48
|
+
expectedTokens: bigint;
|
|
49
|
+
/** Iteration index (0 = initial buy, 1 = first re-buy, etc.). */
|
|
50
|
+
iteration: number;
|
|
51
|
+
} | {
|
|
52
|
+
kind: "deposit";
|
|
53
|
+
/** Token amount to deposit into VarlaCore. */
|
|
54
|
+
amount: bigint;
|
|
55
|
+
/** Iteration index. */
|
|
56
|
+
iteration: number;
|
|
57
|
+
} | {
|
|
58
|
+
kind: "borrow";
|
|
59
|
+
/** Collateral amount to borrow from VarlaPool. */
|
|
60
|
+
collateralAmount: bigint;
|
|
61
|
+
/** Iteration index. */
|
|
62
|
+
iteration: number;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Summary statistics for a planned leverage loop.
|
|
66
|
+
*/
|
|
67
|
+
export type LeverageSummary = {
|
|
68
|
+
/** Total outcome tokens held after all iterations. */
|
|
69
|
+
totalTokens: bigint;
|
|
70
|
+
/** Total collateral-token debt owed to VarlaPool (base units). */
|
|
71
|
+
totalDebt: bigint;
|
|
72
|
+
/** Net equity = totalTokens * price - totalDebt (collateral base units). */
|
|
73
|
+
netEquity: bigint;
|
|
74
|
+
/** Effective leverage as WAD (e.g. 3e18 = 3.0×). */
|
|
75
|
+
effectiveLeverageWad: bigint;
|
|
76
|
+
/** Estimated liquidation price (8 decimals). HF = 1.0 at this price. */
|
|
77
|
+
estimatedLiquidationPriceE8: bigint;
|
|
78
|
+
/** Number of loop iterations performed. */
|
|
79
|
+
iterations: number;
|
|
80
|
+
/** Maximum theoretical leverage = 1 / (1 - LTV) as WAD. */
|
|
81
|
+
maxLeverageWad: bigint;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Complete leverage plan returned by the planner.
|
|
85
|
+
*/
|
|
86
|
+
export type LeveragePlan = {
|
|
87
|
+
/** Ordered steps to execute. */
|
|
88
|
+
steps: LeverageStep[];
|
|
89
|
+
/** Summary statistics. */
|
|
90
|
+
summary: LeverageSummary;
|
|
91
|
+
/** Input parameters used to generate this plan. */
|
|
92
|
+
params: {
|
|
93
|
+
initialCapital: bigint;
|
|
94
|
+
tokenPriceE8: bigint;
|
|
95
|
+
ltvWad: bigint;
|
|
96
|
+
targetLeverageWad: bigint | undefined;
|
|
97
|
+
maxIterations: number;
|
|
98
|
+
minStepBorrow: bigint;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
export type DeleverageStep = {
|
|
102
|
+
kind: "sell";
|
|
103
|
+
/** Token amount to sell on CLOB. */
|
|
104
|
+
tokenAmount: bigint;
|
|
105
|
+
/** Expected collateral proceeds at current price (before slippage). */
|
|
106
|
+
expectedCollateral: bigint;
|
|
107
|
+
iteration: number;
|
|
108
|
+
} | {
|
|
109
|
+
kind: "repay";
|
|
110
|
+
/** Collateral amount to repay. */
|
|
111
|
+
collateralAmount: bigint;
|
|
112
|
+
iteration: number;
|
|
113
|
+
} | {
|
|
114
|
+
kind: "withdraw";
|
|
115
|
+
/** Token amount to withdraw from VarlaCore. */
|
|
116
|
+
amount: bigint;
|
|
117
|
+
iteration: number;
|
|
118
|
+
};
|
|
119
|
+
export type DeleveragePlan = {
|
|
120
|
+
steps: DeleverageStep[];
|
|
121
|
+
summary: {
|
|
122
|
+
tokensToSell: bigint;
|
|
123
|
+
totalRepayment: bigint;
|
|
124
|
+
tokensRemaining: bigint;
|
|
125
|
+
collateralRemaining: bigint;
|
|
126
|
+
iterations: number;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Result of an off-chain token buy, returned by the consumer's callback.
|
|
131
|
+
*/
|
|
132
|
+
export type BuyResult = {
|
|
133
|
+
/** Actual tokens received (may differ from `expectedTokens` due to slippage). */
|
|
134
|
+
actualTokens: bigint;
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Result of an off-chain token sell, returned by the consumer's callback.
|
|
138
|
+
*/
|
|
139
|
+
export type SellResult = {
|
|
140
|
+
/** Actual collateral received (may differ from `expectedCollateral` due to slippage). */
|
|
141
|
+
actualCollateral: bigint;
|
|
142
|
+
};
|
|
143
|
+
export type LeverageStepResult = {
|
|
144
|
+
step: LeverageStep;
|
|
145
|
+
hash?: Hash;
|
|
146
|
+
buyResult?: BuyResult;
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* Progress callback during leverage execution.
|
|
150
|
+
*/
|
|
151
|
+
export type OnLeverageProgress = (info: {
|
|
152
|
+
completed: number;
|
|
153
|
+
total: number;
|
|
154
|
+
step: LeverageStep;
|
|
155
|
+
result: LeverageStepResult;
|
|
156
|
+
}) => void;
|
|
157
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/leverage/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Note: explicit .js extension is required for Node ESM resolution.
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Constants
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
/** WAD precision (1e18). */
|
|
6
|
+
export const WAD = 1000000000000000000n;
|
|
7
|
+
/** Oracle price precision (1e8 = $1.00). */
|
|
8
|
+
export const PRICE_E8 = 100000000n;
|
|
9
|
+
/** Default maximum loop iterations (safety cap). */
|
|
10
|
+
export const DEFAULT_MAX_ITERATIONS = 10;
|
|
11
|
+
/**
|
|
12
|
+
* Default minimum step size, expressed in the collateral token's base units.
|
|
13
|
+
*
|
|
14
|
+
* NOTE:
|
|
15
|
+
* - This is intentionally conservative and primarily exists as a safety/DoS cap
|
|
16
|
+
* to prevent extremely long plans due to diminishing returns.
|
|
17
|
+
* - Consumers SHOULD override this using on-chain `core.MIN_BORROW()` and/or by
|
|
18
|
+
* computing a USD-denominated threshold using token decimals.
|
|
19
|
+
*/
|
|
20
|
+
export const DEFAULT_MIN_STEP_COLLATERAL = 1000000n;
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
// Amount / units helpers
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
/** Compute 10^n as bigint. */
|
|
25
|
+
export function pow10(n) {
|
|
26
|
+
if (!Number.isInteger(n) || n < 0)
|
|
27
|
+
throw new Error(`pow10: invalid n=${n}`);
|
|
28
|
+
let out = 1n;
|
|
29
|
+
for (let i = 0; i < n; i++)
|
|
30
|
+
out *= 10n;
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns a collateral base-unit amount corresponding to a whole-dollar amount.
|
|
35
|
+
*
|
|
36
|
+
* Example:
|
|
37
|
+
* - decimals=6, dollars=1 => 1_000_000
|
|
38
|
+
* - decimals=18, dollars=1 => 1_000_000_000_000_000_000
|
|
39
|
+
*/
|
|
40
|
+
export function collateralForDollars(params) {
|
|
41
|
+
return params.dollars * pow10(params.decimals);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/leverage/types.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAIpE,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,4BAA4B;AAC5B,MAAM,CAAC,MAAM,GAAG,GAAG,oBAA0B,CAAC;AAE9C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAY,CAAC;AAErC,oDAAoD;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAEzC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAU,CAAC;AAEtD,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E,8BAA8B;AAC9B,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,GAAG,IAAI,GAAG,CAAC;IACvC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA6C;IAChF,OAAO,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC"}
|
package/dist/meta.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Chain/platform metadata.
|
|
3
|
+
*
|
|
4
|
+
* The SDK intentionally treats the protocol as "collateral-token generic".
|
|
5
|
+
* However, many apps want to display chain-specific stablecoin symbols and
|
|
6
|
+
* choose sensible defaults without extra RPC calls.
|
|
7
|
+
*/
|
|
8
|
+
import type { Address } from "viem";
|
|
9
|
+
/** All chains the protocol is deployed on. */
|
|
10
|
+
export declare const SUPPORTED_CHAINS: readonly ["polygon", "bsc"];
|
|
11
|
+
export type VarlaChainKey = (typeof SUPPORTED_CHAINS)[number];
|
|
12
|
+
/** Type guard: returns `true` if `value` is a known chain key. */
|
|
13
|
+
export declare function isSupportedChain(value: string): value is VarlaChainKey;
|
|
14
|
+
/**
|
|
15
|
+
* Assert that `value` is a supported chain key, throwing a descriptive
|
|
16
|
+
* error otherwise. Useful at configuration/startup boundaries.
|
|
17
|
+
*/
|
|
18
|
+
export declare function assertSupportedChain(value: string): asserts value is VarlaChainKey;
|
|
19
|
+
export type StablecoinKind = "USDC" | "USDT";
|
|
20
|
+
export type CollateralMeta = {
|
|
21
|
+
kind: StablecoinKind;
|
|
22
|
+
symbol: string;
|
|
23
|
+
decimals: number;
|
|
24
|
+
/** Optional known address (may be omitted for future chains). */
|
|
25
|
+
address?: Address;
|
|
26
|
+
};
|
|
27
|
+
export type ChainMeta = {
|
|
28
|
+
chain: VarlaChainKey;
|
|
29
|
+
/** Platform/integration name shown to users. */
|
|
30
|
+
platform: "polymarket" | "opinion";
|
|
31
|
+
collateral: CollateralMeta;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Returns chain defaults for UI/backends.
|
|
35
|
+
*
|
|
36
|
+
* NOTE:
|
|
37
|
+
* - Addresses are best-effort and should not be treated as canonical.
|
|
38
|
+
* - For authoritative on-chain state, read `core.collateralToken()` and
|
|
39
|
+
* ERC20 metadata at runtime.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getChainMeta(chain: VarlaChainKey): ChainMeta;
|
|
42
|
+
//# sourceMappingURL=meta.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,6BAA8B,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAMlF;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7C,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,gDAAgD;IAChD,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,cAAc,CAAC;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,CAsB5D"}
|
package/dist/meta.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Note: explicit .js extension is required for Node ESM resolution.
|
|
2
|
+
/** All chains the protocol is deployed on. */
|
|
3
|
+
export const SUPPORTED_CHAINS = ["polygon", "bsc"];
|
|
4
|
+
/** Type guard: returns `true` if `value` is a known chain key. */
|
|
5
|
+
export function isSupportedChain(value) {
|
|
6
|
+
return SUPPORTED_CHAINS.includes(value);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Assert that `value` is a supported chain key, throwing a descriptive
|
|
10
|
+
* error otherwise. Useful at configuration/startup boundaries.
|
|
11
|
+
*/
|
|
12
|
+
export function assertSupportedChain(value) {
|
|
13
|
+
if (!isSupportedChain(value)) {
|
|
14
|
+
throw new Error(`Unsupported chain "${value}". Expected one of: ${SUPPORTED_CHAINS.join(", ")}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns chain defaults for UI/backends.
|
|
19
|
+
*
|
|
20
|
+
* NOTE:
|
|
21
|
+
* - Addresses are best-effort and should not be treated as canonical.
|
|
22
|
+
* - For authoritative on-chain state, read `core.collateralToken()` and
|
|
23
|
+
* ERC20 metadata at runtime.
|
|
24
|
+
*/
|
|
25
|
+
export function getChainMeta(chain) {
|
|
26
|
+
if (chain === "polygon") {
|
|
27
|
+
return {
|
|
28
|
+
chain,
|
|
29
|
+
platform: "polymarket",
|
|
30
|
+
collateral: {
|
|
31
|
+
kind: "USDC",
|
|
32
|
+
symbol: "USDC",
|
|
33
|
+
decimals: 6,
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
chain,
|
|
39
|
+
platform: "opinion",
|
|
40
|
+
collateral: {
|
|
41
|
+
kind: "USDT",
|
|
42
|
+
symbol: "USDT",
|
|
43
|
+
decimals: 18,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=meta.js.map
|
package/dist/meta.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta.js","sourceRoot":"","sources":["../src/meta.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAYpE,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,KAAK,CAAU,CAAC;AAI5D,kEAAkE;AAClE,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,sBAAsB,KAAK,uBAAuB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;AACH,CAAC;AAmBD;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAoB;IAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE;gBACV,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,CAAC;aACZ;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,SAAS;QACnB,UAAU,EAAE;YACV,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,EAAE;SACb;KACF,CAAC;AACJ,CAAC"}
|
package/dist/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accessManager.js","sourceRoot":"","sources":["../../src/views/accessManager.ts"],"names":[],"mappings":"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"}
|
package/dist/views/adapters.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/views/adapters.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAgBpE;;GAEG;AACH,+JAA+J;AAC/J,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAgC;IACpE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE;QAChC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;KAChC,CAAC,CAAC;IACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AACnC,CAAC"}
|