@varla/sdk 1.10.5 → 1.10.7

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 CHANGED
@@ -209,6 +209,107 @@ import { formatUnitsSafe } from "@varla/sdk/format";
209
209
  const ids = await views.readOracleRegistry({ oracle: c.oracle, client });
210
210
  ```
211
211
 
212
+ ### Write actions (simulate-first)
213
+
214
+ The SDK intentionally uses a **simulate-first** pattern:
215
+
216
+ 1. build a transaction request via `publicClient.simulateContract`
217
+ 2. submit it via `walletClient.writeContract`
218
+
219
+ ```ts
220
+ import * as actions from "@varla/sdk/actions";
221
+
222
+ const sim = await actions.prepareCoreBorrow({
223
+ publicClient,
224
+ coreAddress: c.core.address,
225
+ account: wallet.account.address,
226
+ amount: 1_000_000n,
227
+ });
228
+
229
+ const hash = await actions.sendTx({ walletClient, request: sim.request });
230
+ ```
231
+
232
+ ### Oracle seeding (plan → prepare → execute)
233
+
234
+ The SDK provides **idempotent seeding planners** for VarlaOracle configuration.
235
+ This is useful for both backends and UIs:
236
+
237
+ - `planOracleSeed(...)` produces a “diff plan” (what still needs to be configured)
238
+ - `prepareOracleSeedPlan(...)` converts the plan into `simulateContract` requests
239
+ - `executeOracleSeedPlan(...)` submits the prepared requests sequentially (no retries/polling)
240
+
241
+ #### Node convenience: seed from JSON files
242
+
243
+ The JSON shapes mirror `scripts/examples/*.json`:
244
+
245
+ ```ts
246
+ import * as actions from "@varla/sdk/actions";
247
+
248
+ const seeded = await actions.seedOracleFromJsonFiles({
249
+ oracle: c.oracle,
250
+ marketsPath: "./markets.polygon.json",
251
+ oppositesPath: "./opposites.polygon.json",
252
+ negRiskPath: "./negrisk.polygon.json",
253
+ prepare: {
254
+ publicClient,
255
+ oracleAddress: c.oracle.address,
256
+ account: wallet.account.address,
257
+ },
258
+ });
259
+
260
+ // Inspect the plan before sending txs.
261
+ console.log(seeded.plan);
262
+
263
+ if ("prepared" in seeded) {
264
+ const hashes = await actions.executeOracleSeedPlan({
265
+ walletClient,
266
+ prepared: seeded.prepared,
267
+ });
268
+ console.log(hashes);
269
+ }
270
+ ```
271
+
272
+ #### Browser/backend: seed from already-parsed JSON
273
+
274
+ ```ts
275
+ const seeded = await actions.seedOracleFromJson({
276
+ oracle: c.oracle,
277
+ marketsJson,
278
+ oppositesJson,
279
+ negRiskJson,
280
+ });
281
+ ```
282
+
283
+ ### RBAC preflight (AccessManager)
284
+
285
+ The protocol uses an `AccessManager` for RBAC.
286
+
287
+ ```ts
288
+ import * as actions from "@varla/sdk/actions";
289
+
290
+ const selector = actions.selectorFromSignature(actions.ORACLE_SIGS.configurePositionsBatch);
291
+ await actions.assertCanCallImmediate({
292
+ accessManager: c.accessManager,
293
+ caller: wallet.account.address,
294
+ target: c.oracle.address,
295
+ selector,
296
+ });
297
+ ```
298
+
299
+ ### Local write integration tests (anvil)
300
+
301
+ The SDK ships **unit tests** for write helpers (mocked `simulateContract` + `writeContract`).
302
+
303
+ If you want a true end-to-end write test (deploy → simulate → send tx → assert state),
304
+ there is an **opt-in** local anvil suite:
305
+
306
+ ```bash
307
+ # from packages/sdk
308
+ SDK_LOCAL_WRITE_TESTS=1 bun run test:quick
309
+ ```
310
+
311
+ This spawns `anvil` locally and runs `packages/sdk/test/write.local.anvil.test.ts`.
312
+
212
313
  #### Optional deployments
213
314
 
214
315
  Some deployments are chain-specific (e.g. adapters). These are exposed as optional properties:
@@ -0,0 +1,78 @@
1
+ import type { Address, PublicClient } from "viem";
2
+ import type { SimulatedTx } from "./oracle.js";
3
+ export declare function prepareCoreSetDefaultLtvConfig(params: {
4
+ publicClient: Pick<PublicClient, "simulateContract">;
5
+ coreAddress: Address;
6
+ account: Address;
7
+ conservative: bigint;
8
+ moderate: bigint;
9
+ risk: bigint;
10
+ }): Promise<SimulatedTx>;
11
+ export declare function prepareCoreSetLiquidationConfig(params: {
12
+ publicClient: Pick<PublicClient, "simulateContract">;
13
+ coreAddress: Address;
14
+ account: Address;
15
+ targetHealthFactor: bigint;
16
+ healthFactorForMaxBonus: bigint;
17
+ liquidationBonusFactorBps: bigint;
18
+ dustThreshold: bigint;
19
+ collateralDustThreshold: bigint;
20
+ }): Promise<SimulatedTx>;
21
+ export declare function prepareCoreSetTierLiquidationConfig(params: {
22
+ publicClient: Pick<PublicClient, "simulateContract">;
23
+ coreAddress: Address;
24
+ account: Address;
25
+ tier: number;
26
+ maxLiquidationBonusBps: bigint;
27
+ liquidationFeeBps: bigint;
28
+ }): Promise<SimulatedTx>;
29
+ export declare function prepareCoreSetMaxPositions(params: {
30
+ publicClient: Pick<PublicClient, "simulateContract">;
31
+ coreAddress: Address;
32
+ account: Address;
33
+ maxPositions: bigint;
34
+ }): Promise<SimulatedTx>;
35
+ export declare function preparePoolSetDepositCap(params: {
36
+ publicClient: Pick<PublicClient, "simulateContract">;
37
+ poolAddress: Address;
38
+ account: Address;
39
+ cap: bigint;
40
+ }): Promise<SimulatedTx>;
41
+ export declare function preparePoolSetBorrowCap(params: {
42
+ publicClient: Pick<PublicClient, "simulateContract">;
43
+ poolAddress: Address;
44
+ account: Address;
45
+ cap: bigint;
46
+ }): Promise<SimulatedTx>;
47
+ export declare function preparePoolWithdrawReserve(params: {
48
+ publicClient: Pick<PublicClient, "simulateContract">;
49
+ poolAddress: Address;
50
+ account: Address;
51
+ to: Address;
52
+ amount: bigint;
53
+ }): Promise<SimulatedTx>;
54
+ export declare function preparePoolSetInterestRateStrategy(params: {
55
+ publicClient: Pick<PublicClient, "simulateContract">;
56
+ poolAddress: Address;
57
+ account: Address;
58
+ strategy: Address;
59
+ }): Promise<SimulatedTx>;
60
+ export declare function prepareOracleSetMaxStaleness(params: {
61
+ publicClient: Pick<PublicClient, "simulateContract">;
62
+ oracleAddress: Address;
63
+ account: Address;
64
+ maxStaleness: bigint;
65
+ }): Promise<SimulatedTx>;
66
+ export declare function prepareOracleSetLiquidationGracePeriod(params: {
67
+ publicClient: Pick<PublicClient, "simulateContract">;
68
+ oracleAddress: Address;
69
+ account: Address;
70
+ gracePeriod: bigint;
71
+ }): Promise<SimulatedTx>;
72
+ export declare function prepareOracleSetDefaultEarlyClosureWindow(params: {
73
+ publicClient: Pick<PublicClient, "simulateContract">;
74
+ oracleAddress: Address;
75
+ account: Address;
76
+ window: bigint;
77
+ }): Promise<SimulatedTx>;
78
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/actions/admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ // Note: explicit .js extension is required for Node ESM resolution.
2
+ import { abis } from "../generated.js";
3
+ // ---------------------------------------------------------------------------
4
+ // Admin / governance write helpers
5
+ // ---------------------------------------------------------------------------
6
+ // -----------------
7
+ // Core admin
8
+ // -----------------
9
+ export async function prepareCoreSetDefaultLtvConfig(params) {
10
+ return (await params.publicClient.simulateContract({
11
+ address: params.coreAddress,
12
+ abi: abis.VARLACORE_ABI,
13
+ functionName: "setDefaultLtvConfig",
14
+ args: [params.conservative, params.moderate, params.risk],
15
+ account: params.account,
16
+ }));
17
+ }
18
+ export async function prepareCoreSetLiquidationConfig(params) {
19
+ return (await params.publicClient.simulateContract({
20
+ address: params.coreAddress,
21
+ abi: abis.VARLACORE_ABI,
22
+ functionName: "setLiquidationConfig",
23
+ args: [
24
+ params.targetHealthFactor,
25
+ params.healthFactorForMaxBonus,
26
+ params.liquidationBonusFactorBps,
27
+ params.dustThreshold,
28
+ params.collateralDustThreshold,
29
+ ],
30
+ account: params.account,
31
+ }));
32
+ }
33
+ export async function prepareCoreSetTierLiquidationConfig(params) {
34
+ return (await params.publicClient.simulateContract({
35
+ address: params.coreAddress,
36
+ abi: abis.VARLACORE_ABI,
37
+ functionName: "setTierLiquidationConfig",
38
+ args: [params.tier, params.maxLiquidationBonusBps, params.liquidationFeeBps],
39
+ account: params.account,
40
+ }));
41
+ }
42
+ export async function prepareCoreSetMaxPositions(params) {
43
+ return (await params.publicClient.simulateContract({
44
+ address: params.coreAddress,
45
+ abi: abis.VARLACORE_ABI,
46
+ functionName: "setMaxPositions",
47
+ args: [params.maxPositions],
48
+ account: params.account,
49
+ }));
50
+ }
51
+ // -----------------
52
+ // Pool admin
53
+ // -----------------
54
+ export async function preparePoolSetDepositCap(params) {
55
+ return (await params.publicClient.simulateContract({
56
+ address: params.poolAddress,
57
+ abi: abis.VARLAPOOL_ABI,
58
+ functionName: "setDepositCap",
59
+ args: [params.cap],
60
+ account: params.account,
61
+ }));
62
+ }
63
+ export async function preparePoolSetBorrowCap(params) {
64
+ return (await params.publicClient.simulateContract({
65
+ address: params.poolAddress,
66
+ abi: abis.VARLAPOOL_ABI,
67
+ functionName: "setBorrowCap",
68
+ args: [params.cap],
69
+ account: params.account,
70
+ }));
71
+ }
72
+ export async function preparePoolWithdrawReserve(params) {
73
+ return (await params.publicClient.simulateContract({
74
+ address: params.poolAddress,
75
+ abi: abis.VARLAPOOL_ABI,
76
+ functionName: "withdrawReserve",
77
+ args: [params.to, params.amount],
78
+ account: params.account,
79
+ }));
80
+ }
81
+ export async function preparePoolSetInterestRateStrategy(params) {
82
+ return (await params.publicClient.simulateContract({
83
+ address: params.poolAddress,
84
+ abi: abis.VARLAPOOL_ABI,
85
+ functionName: "setInterestRateStrategy",
86
+ args: [params.strategy],
87
+ account: params.account,
88
+ }));
89
+ }
90
+ // -----------------
91
+ // Oracle admin
92
+ // -----------------
93
+ export async function prepareOracleSetMaxStaleness(params) {
94
+ return (await params.publicClient.simulateContract({
95
+ address: params.oracleAddress,
96
+ abi: abis.VARLAORACLE_ABI,
97
+ functionName: "setMaxStaleness",
98
+ args: [params.maxStaleness],
99
+ account: params.account,
100
+ }));
101
+ }
102
+ export async function prepareOracleSetLiquidationGracePeriod(params) {
103
+ return (await params.publicClient.simulateContract({
104
+ address: params.oracleAddress,
105
+ abi: abis.VARLAORACLE_ABI,
106
+ functionName: "setLiquidationGracePeriod",
107
+ args: [params.gracePeriod],
108
+ account: params.account,
109
+ }));
110
+ }
111
+ export async function prepareOracleSetDefaultEarlyClosureWindow(params) {
112
+ return (await params.publicClient.simulateContract({
113
+ address: params.oracleAddress,
114
+ abi: abis.VARLAORACLE_ABI,
115
+ functionName: "setDefaultEarlyClosureWindow",
116
+ args: [params.window],
117
+ account: params.account,
118
+ }));
119
+ }
@@ -2,6 +2,9 @@ export * from "./tx.js";
2
2
  export * from "./utils.js";
3
3
  export * from "./oracle.js";
4
4
  export * from "./core.js";
5
+ export * from "./pool.js";
6
+ export * from "./liquidator.js";
7
+ export * from "./admin.js";
5
8
  export * from "./erc20.js";
6
9
  export * from "./erc1155.js";
7
10
  export * from "./rbac.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/actions/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC"}
@@ -3,6 +3,9 @@ export * from "./tx.js";
3
3
  export * from "./utils.js";
4
4
  export * from "./oracle.js";
5
5
  export * from "./core.js";
6
+ export * from "./pool.js";
7
+ export * from "./liquidator.js";
8
+ export * from "./admin.js";
6
9
  export * from "./erc20.js";
7
10
  export * from "./erc1155.js";
8
11
  export * from "./rbac.js";
@@ -0,0 +1,33 @@
1
+ import type { Address, PublicClient } from "viem";
2
+ import type { SimulatedTx } from "./oracle.js";
3
+ export declare function prepareLiquidatorLiquidate(params: {
4
+ publicClient: Pick<PublicClient, "simulateContract">;
5
+ liquidatorAddress: Address;
6
+ account: Address;
7
+ user: Address;
8
+ positionId: bigint;
9
+ debtToCover: bigint;
10
+ }): Promise<SimulatedTx>;
11
+ export declare function prepareLiquidatorLiquidateMulti(params: {
12
+ publicClient: Pick<PublicClient, "simulateContract">;
13
+ liquidatorAddress: Address;
14
+ account: Address;
15
+ user: Address;
16
+ positionIds: readonly bigint[];
17
+ debtToCover: bigint;
18
+ }): Promise<SimulatedTx>;
19
+ export declare function prepareLiquidatorLiquidateBadDebt(params: {
20
+ publicClient: Pick<PublicClient, "simulateContract">;
21
+ liquidatorAddress: Address;
22
+ account: Address;
23
+ user: Address;
24
+ maxRepayAmount: bigint;
25
+ }): Promise<SimulatedTx>;
26
+ export declare function prepareLiquidatorResolveBadDebtWithReserve(params: {
27
+ publicClient: Pick<PublicClient, "simulateContract">;
28
+ liquidatorAddress: Address;
29
+ account: Address;
30
+ user: Address;
31
+ expectedScaledDebt: bigint;
32
+ }): Promise<SimulatedTx>;
33
+ //# sourceMappingURL=liquidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidator.d.ts","sourceRoot":"","sources":["../../src/actions/liquidator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,wBAAsB,0BAA0B,CAAC,MAAM,EAAE;IACvD,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB;AAED,wBAAsB,+BAA+B,CAAC,MAAM,EAAE;IAC5D,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB;AAED,wBAAsB,iCAAiC,CAAC,MAAM,EAAE;IAC9D,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB;AAED,wBAAsB,0CAA0C,CAAC,MAAM,EAAE;IACvE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC;CAC5B,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB"}
@@ -0,0 +1,41 @@
1
+ // Note: explicit .js extension is required for Node ESM resolution.
2
+ import { abis } from "../generated.js";
3
+ // ---------------------------------------------------------------------------
4
+ // Liquidator (bot flows) write helpers
5
+ // ---------------------------------------------------------------------------
6
+ export async function prepareLiquidatorLiquidate(params) {
7
+ return (await params.publicClient.simulateContract({
8
+ address: params.liquidatorAddress,
9
+ abi: abis.VARLALIQUIDATOR_ABI,
10
+ functionName: "liquidate",
11
+ args: [params.user, params.positionId, params.debtToCover],
12
+ account: params.account,
13
+ }));
14
+ }
15
+ export async function prepareLiquidatorLiquidateMulti(params) {
16
+ return (await params.publicClient.simulateContract({
17
+ address: params.liquidatorAddress,
18
+ abi: abis.VARLALIQUIDATOR_ABI,
19
+ functionName: "liquidateMulti",
20
+ args: [params.user, params.positionIds, params.debtToCover],
21
+ account: params.account,
22
+ }));
23
+ }
24
+ export async function prepareLiquidatorLiquidateBadDebt(params) {
25
+ return (await params.publicClient.simulateContract({
26
+ address: params.liquidatorAddress,
27
+ abi: abis.VARLALIQUIDATOR_ABI,
28
+ functionName: "liquidateBadDebt",
29
+ args: [params.user, params.maxRepayAmount],
30
+ account: params.account,
31
+ }));
32
+ }
33
+ export async function prepareLiquidatorResolveBadDebtWithReserve(params) {
34
+ return (await params.publicClient.simulateContract({
35
+ address: params.liquidatorAddress,
36
+ abi: abis.VARLALIQUIDATOR_ABI,
37
+ functionName: "resolveBadDebtWithReserve",
38
+ args: [params.user, params.expectedScaledDebt],
39
+ account: params.account,
40
+ }));
41
+ }
@@ -1,4 +1,5 @@
1
1
  import type { Address, PublicClient } from "viem";
2
+ import type { Hash, WalletClient } from "viem";
2
3
  export type SimulatedTx = Awaited<ReturnType<PublicClient["simulateContract"]>>;
3
4
  export type MarketConfigItem = {
4
5
  positionId: bigint;
@@ -148,4 +149,20 @@ export declare function prepareOracleSeedPlan(params: {
148
149
  account: Address;
149
150
  plan: OracleSeedPlan;
150
151
  }): Promise<OracleSeedExecResult>;
152
+ /**
153
+ * Execute a prepared oracle seed plan by sending the simulated requests in a safe order.
154
+ *
155
+ * This is intentionally minimal:
156
+ * - sequential
157
+ * - no retries
158
+ * - no receipt waiting/polling
159
+ */
160
+ export declare function executeOracleSeedPlan(params: {
161
+ walletClient: Pick<WalletClient, "writeContract">;
162
+ prepared: OracleSeedExecResult;
163
+ }): Promise<{
164
+ configurePositions?: Hash;
165
+ configureOpposites: Hash[];
166
+ configureNegRisk: Hash[];
167
+ }>;
151
168
  //# sourceMappingURL=oracle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/actions/oracle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oracle.d.ts","sourceRoot":"","sources":["../../src/actions/oracle.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  // Note: explicit .js extension is required for Node ESM resolution.
2
2
  import { abis } from "../generated.js";
3
+ import { sendTx } from "./tx.js";
3
4
  export async function prepareOracleConfigurePositionsBatch(params) {
4
5
  const positionIds = params.items.map((x) => x.positionId);
5
6
  const riskTiers = params.items.map((x) => x.riskTier);
@@ -223,3 +224,37 @@ export async function prepareOracleSeedPlan(params) {
223
224
  },
224
225
  };
225
226
  }
227
+ /**
228
+ * Execute a prepared oracle seed plan by sending the simulated requests in a safe order.
229
+ *
230
+ * This is intentionally minimal:
231
+ * - sequential
232
+ * - no retries
233
+ * - no receipt waiting/polling
234
+ */
235
+ export async function executeOracleSeedPlan(params) {
236
+ const out = {
237
+ configureOpposites: [],
238
+ configureNegRisk: [],
239
+ };
240
+ const sims = params.prepared.simulations;
241
+ if (sims.configurePositions) {
242
+ out.configurePositions = await sendTx({
243
+ walletClient: params.walletClient,
244
+ request: sims.configurePositions.request,
245
+ });
246
+ }
247
+ for (const sim of sims.configureOpposites) {
248
+ out.configureOpposites.push(await sendTx({
249
+ walletClient: params.walletClient,
250
+ request: sim.request,
251
+ }));
252
+ }
253
+ for (const sim of sims.configureNegRisk) {
254
+ out.configureNegRisk.push(await sendTx({
255
+ walletClient: params.walletClient,
256
+ request: sim.request,
257
+ }));
258
+ }
259
+ return out;
260
+ }
@@ -0,0 +1,33 @@
1
+ import type { Address, PublicClient } from "viem";
2
+ import type { SimulatedTx } from "./oracle.js";
3
+ export declare function preparePoolDeposit(params: {
4
+ publicClient: Pick<PublicClient, "simulateContract">;
5
+ poolAddress: Address;
6
+ account: Address;
7
+ assets: bigint;
8
+ receiver: Address;
9
+ }): Promise<SimulatedTx>;
10
+ export declare function preparePoolMint(params: {
11
+ publicClient: Pick<PublicClient, "simulateContract">;
12
+ poolAddress: Address;
13
+ account: Address;
14
+ shares: bigint;
15
+ receiver: Address;
16
+ }): Promise<SimulatedTx>;
17
+ export declare function preparePoolWithdraw(params: {
18
+ publicClient: Pick<PublicClient, "simulateContract">;
19
+ poolAddress: Address;
20
+ account: Address;
21
+ assets: bigint;
22
+ receiver: Address;
23
+ owner: Address;
24
+ }): Promise<SimulatedTx>;
25
+ export declare function preparePoolRedeem(params: {
26
+ publicClient: Pick<PublicClient, "simulateContract">;
27
+ poolAddress: Address;
28
+ account: Address;
29
+ shares: bigint;
30
+ receiver: Address;
31
+ owner: Address;
32
+ }): Promise<SimulatedTx>;
33
+ //# sourceMappingURL=pool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../src/actions/pool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM/C,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE;IAC9C,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IACrD,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,WAAW,CAAC,CAQvB"}
@@ -0,0 +1,41 @@
1
+ // Note: explicit .js extension is required for Node ESM resolution.
2
+ import { abis } from "../generated.js";
3
+ // ---------------------------------------------------------------------------
4
+ // ERC4626 (VarlaPool) write helpers
5
+ // ---------------------------------------------------------------------------
6
+ export async function preparePoolDeposit(params) {
7
+ return (await params.publicClient.simulateContract({
8
+ address: params.poolAddress,
9
+ abi: abis.VARLAPOOL_ABI,
10
+ functionName: "deposit",
11
+ args: [params.assets, params.receiver],
12
+ account: params.account,
13
+ }));
14
+ }
15
+ export async function preparePoolMint(params) {
16
+ return (await params.publicClient.simulateContract({
17
+ address: params.poolAddress,
18
+ abi: abis.VARLAPOOL_ABI,
19
+ functionName: "mint",
20
+ args: [params.shares, params.receiver],
21
+ account: params.account,
22
+ }));
23
+ }
24
+ export async function preparePoolWithdraw(params) {
25
+ return (await params.publicClient.simulateContract({
26
+ address: params.poolAddress,
27
+ abi: abis.VARLAPOOL_ABI,
28
+ functionName: "withdraw",
29
+ args: [params.assets, params.receiver, params.owner],
30
+ account: params.account,
31
+ }));
32
+ }
33
+ export async function preparePoolRedeem(params) {
34
+ return (await params.publicClient.simulateContract({
35
+ address: params.poolAddress,
36
+ abi: abis.VARLAPOOL_ABI,
37
+ functionName: "redeem",
38
+ args: [params.shares, params.receiver, params.owner],
39
+ account: params.account,
40
+ }));
41
+ }
@@ -1,4 +1,15 @@
1
1
  import type { Address, Hex } from "viem";
2
+ /**
3
+ * ABI signatures for commonly preflighted RBAC targets.
4
+ *
5
+ * Use with `selectorFromSignature(sig)`.
6
+ */
7
+ export declare const ORACLE_SIGS: {
8
+ readonly configurePositionsBatch: "configurePositionsBatch(uint256[],uint8[],bytes32[],uint256[])";
9
+ readonly configureOppositePositions: "configureOppositePositions(uint256,uint256)";
10
+ readonly configureNegRiskPositionsBatch: "configureNegRiskPositionsBatch(uint256[],bytes32)";
11
+ readonly updatePrices: "updatePrices(uint256[],uint256[],uint256[],uint256[])";
12
+ };
2
13
  /**
3
14
  * Minimal AccessManager interface needed for RBAC preflight.
4
15
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../src/actions/rbac.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACvE,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,aAAa,EAAE,wBAAwB,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;CACf,GAAG,OAAO,CAAC,aAAa,CAAC,CAezB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,aAAa,EAAE,wBAAwB,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB"}
1
+ {"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../src/actions/rbac.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAMzC;;;;GAIG;AACH,eAAO,MAAM,WAAW;;;;;CAMd,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KACvE,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,wBAAsB,WAAW,CAAC,MAAM,EAAE;IACxC,aAAa,EAAE,wBAAwB,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;CACf,GAAG,OAAO,CAAC,aAAa,CAAC,CAezB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,aAAa,EAAE,wBAAwB,CAAC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAKhB"}
@@ -1,4 +1,18 @@
1
1
  // Note: explicit .js extension is required for Node ESM resolution.
2
+ // ---------------------------------------------------------------------------
3
+ // Common signatures (DevEx)
4
+ // ---------------------------------------------------------------------------
5
+ /**
6
+ * ABI signatures for commonly preflighted RBAC targets.
7
+ *
8
+ * Use with `selectorFromSignature(sig)`.
9
+ */
10
+ export const ORACLE_SIGS = {
11
+ configurePositionsBatch: "configurePositionsBatch(uint256[],uint8[],bytes32[],uint256[])",
12
+ configureOppositePositions: "configureOppositePositions(uint256,uint256)",
13
+ configureNegRiskPositionsBatch: "configureNegRiskPositionsBatch(uint256[],bytes32)",
14
+ updatePrices: "updatePrices(uint256[],uint256[],uint256[],uint256[])",
15
+ };
2
16
  // wraps: AccessManager.canCall
3
17
  export async function readCanCall(params) {
4
18
  const raw = await params.accessManager.read.canCall([
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varla/sdk",
3
- "version": "1.10.5",
3
+ "version": "1.10.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,