@varla/sdk 2.15.0 → 2.16.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.
@@ -1 +1 @@
1
- {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/leverage/math.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/leverage/math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Robust transaction receipt waiting with exponential backoff.
3
+ *
4
+ * Polygon (and other L2s) occasionally drop RPC connections or return
5
+ * "receipt not found" transiently — even for successfully broadcast txs.
6
+ * This helper retries `waitForTransactionReceipt` so a single flaky RPC
7
+ * call doesn't abort a multi-step leverage/deleverage loop.
8
+ */
9
+ import type { Hash, PublicClient, TransactionReceipt } from "viem";
10
+ export type ReceiptRetryOptions = {
11
+ /** Maximum number of retry attempts (default: 5). */
12
+ maxRetries?: number;
13
+ /** Base delay in ms for first retry (default: 2_000). */
14
+ baseDelayMs?: number;
15
+ /** Maximum delay cap in ms (default: 32_000). */
16
+ maxDelayMs?: number;
17
+ /** Multiplier applied each retry (default: 2). */
18
+ backoffMultiplier?: number;
19
+ };
20
+ export declare const DEFAULT_RECEIPT_RETRY: Required<ReceiptRetryOptions>;
21
+ /**
22
+ * Wait for a transaction receipt with automatic retry and exponential backoff.
23
+ *
24
+ * This wraps `publicClient.waitForTransactionReceipt` and handles the common
25
+ * failure modes seen on Polygon:
26
+ * - "Transaction receipt not found" (RPC hasn't indexed the block yet)
27
+ * - Timeouts and connection drops
28
+ * - 502/503/504 gateway errors
29
+ *
30
+ * @throws The original error after all retries are exhausted.
31
+ */
32
+ export declare function waitForReceiptWithRetry(params: {
33
+ publicClient: Pick<PublicClient, "waitForTransactionReceipt">;
34
+ hash: Hash;
35
+ confirmations?: number;
36
+ retry?: ReceiptRetryOptions;
37
+ }): Promise<TransactionReceipt>;
38
+ //# sourceMappingURL=receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../src/leverage/receipt.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAMnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,qDAAqD;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,mBAAmB,CAK/D,CAAC;AA+CF;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,2BAA2B,CAAC,CAAC;IAC9D,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,mBAAmB,CAAC;CAC7B,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8C9B"}
@@ -0,0 +1,95 @@
1
+ // Note: explicit .js extension is required for Node ESM resolution.
2
+ export const DEFAULT_RECEIPT_RETRY = {
3
+ maxRetries: 5,
4
+ baseDelayMs: 2_000,
5
+ maxDelayMs: 32_000,
6
+ backoffMultiplier: 2,
7
+ };
8
+ // ---------------------------------------------------------------------------
9
+ // Helper
10
+ // ---------------------------------------------------------------------------
11
+ function sleep(ms) {
12
+ return new Promise((resolve) => setTimeout(resolve, ms));
13
+ }
14
+ /**
15
+ * Classify whether an error from `waitForTransactionReceipt` is transient
16
+ * (worth retrying) vs permanent (should be thrown immediately).
17
+ */
18
+ function isTransientReceiptError(error) {
19
+ if (!(error instanceof Error))
20
+ return true; // unknown shape → retry
21
+ const msg = error.message.toLowerCase();
22
+ // Permanent: tx reverted on-chain → retrying won't help.
23
+ if (msg.includes("reverted") || msg.includes("execution reverted"))
24
+ return false;
25
+ // Transient: receipt not found, timeout, network issues.
26
+ if (msg.includes("not found") ||
27
+ msg.includes("could not be found") ||
28
+ msg.includes("timeout") ||
29
+ msg.includes("timed out") ||
30
+ msg.includes("econnrefused") ||
31
+ msg.includes("econnreset") ||
32
+ msg.includes("network") ||
33
+ msg.includes("fetch") ||
34
+ msg.includes("502") ||
35
+ msg.includes("503") ||
36
+ msg.includes("504") ||
37
+ msg.includes("rate limit")) {
38
+ return true;
39
+ }
40
+ // Default: retry (better to retry once too many than abort a valid tx).
41
+ return true;
42
+ }
43
+ // ---------------------------------------------------------------------------
44
+ // Main export
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Wait for a transaction receipt with automatic retry and exponential backoff.
48
+ *
49
+ * This wraps `publicClient.waitForTransactionReceipt` and handles the common
50
+ * failure modes seen on Polygon:
51
+ * - "Transaction receipt not found" (RPC hasn't indexed the block yet)
52
+ * - Timeouts and connection drops
53
+ * - 502/503/504 gateway errors
54
+ *
55
+ * @throws The original error after all retries are exhausted.
56
+ */
57
+ export async function waitForReceiptWithRetry(params) {
58
+ const { publicClient, hash, confirmations = 1 } = params;
59
+ const opts = { ...DEFAULT_RECEIPT_RETRY, ...params.retry };
60
+ let lastError;
61
+ for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {
62
+ try {
63
+ const receipt = await publicClient.waitForTransactionReceipt({
64
+ hash,
65
+ confirmations,
66
+ });
67
+ return receipt;
68
+ }
69
+ catch (error) {
70
+ lastError = error;
71
+ // Don't retry permanent errors (e.g. on-chain revert).
72
+ if (!isTransientReceiptError(error)) {
73
+ throw error;
74
+ }
75
+ // Don't retry if we've exhausted attempts.
76
+ if (attempt >= opts.maxRetries) {
77
+ break;
78
+ }
79
+ // Exponential backoff with cap.
80
+ const delay = Math.min(opts.baseDelayMs * opts.backoffMultiplier ** attempt, opts.maxDelayMs);
81
+ // No-op in production; useful for debugging.
82
+ // console.debug(`[receipt-retry] attempt ${attempt + 1}/${opts.maxRetries} for ${hash}, waiting ${delay}ms`);
83
+ await sleep(delay);
84
+ }
85
+ }
86
+ // Wrap with a descriptive message so the caller knows retries were exhausted.
87
+ const cause = lastError instanceof Error ? lastError : new Error(String(lastError));
88
+ const wrapped = new Error(`Transaction receipt not found for ${hash} after ${opts.maxRetries + 1} attempts (${opts.maxRetries} retries). ` +
89
+ `The transaction was broadcast successfully — it may still confirm. ` +
90
+ `Original error: ${cause.message}`);
91
+ wrapped.cause = cause;
92
+ wrapped.hash = hash;
93
+ throw wrapped;
94
+ }
95
+ //# sourceMappingURL=receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/leverage/receipt.ts"],"names":[],"mappings":"AAAA,oEAAoE;AA4BpE,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,UAAU,EAAE,CAAC;IACb,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,MAAM;IAClB,iBAAiB,EAAE,CAAC;CACrB,CAAC;AAEF,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,wBAAwB;IACpE,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAExC,yDAAyD;IACzD,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjF,yDAAyD;IACzD,IACE,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QAClC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACvB,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC5B,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC1B,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;QACvB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QACnB,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAK7C;IACC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC;IACzD,MAAM,IAAI,GAAG,EAAE,GAAG,qBAAqB,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IAE3D,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAO,YAAoB,CAAC,yBAAyB,CAAC;gBACpE,IAAI;gBACJ,aAAa;aACd,CAAC,CAAC;YACH,OAAO,OAA6B,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,CAAC;YAElB,uDAAuD;YACvD,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,2CAA2C;YAC3C,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/B,MAAM;YACR,CAAC;YAED,gCAAgC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,IAAI,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE9F,6CAA6C;YAC7C,8GAA8G;YAE9G,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,KAAK,GAAG,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,IAAI,KAAK,CACvB,qCAAqC,IAAI,UAAU,IAAI,CAAC,UAAU,GAAG,CAAC,cAAc,IAAI,CAAC,UAAU,aAAa;QAC9G,qEAAqE;QACrE,mBAAmB,KAAK,CAAC,OAAO,EAAE,CACrC,CAAC;IACD,OAAe,CAAC,KAAK,GAAG,KAAK,CAAC;IAC9B,OAAe,CAAC,IAAI,GAAG,IAAI,CAAC;IAC7B,MAAM,OAAO,CAAC;AAChB,CAAC"}
@@ -79,6 +79,10 @@ export type LeverageSummary = {
79
79
  iterations: number;
80
80
  /** Maximum theoretical leverage = 1 / (1 - LTV) as WAD. */
81
81
  maxLeverageWad: bigint;
82
+ /** Assumed slippage/spread used in planning (bps). 0 if not specified. */
83
+ assumedSlippageBps: bigint;
84
+ /** Total collateral lost to slippage across all buy steps (base units). */
85
+ totalSlippageCost: bigint;
82
86
  };
83
87
  /**
84
88
  * Complete leverage plan returned by the planner.
@@ -124,6 +128,10 @@ export type DeleveragePlan = {
124
128
  tokensRemaining: bigint;
125
129
  collateralRemaining: bigint;
126
130
  iterations: number;
131
+ /** Assumed slippage/spread used in planning (bps). 0 if not specified. */
132
+ assumedSlippageBps: bigint;
133
+ /** Total collateral lost to slippage across all sell steps (base units). */
134
+ totalSlippageCost: bigint;
127
135
  };
128
136
  };
129
137
  /**
@@ -154,4 +162,19 @@ export type OnLeverageProgress = (info: {
154
162
  step: LeverageStep;
155
163
  result: LeverageStepResult;
156
164
  }) => void;
165
+ /**
166
+ * Thrown by executors when actual fill deviates beyond `maxSlippageBps`.
167
+ */
168
+ export declare class SlippageExceededError extends Error {
169
+ readonly expected: bigint;
170
+ readonly actual: bigint;
171
+ readonly maxSlippageBps: bigint;
172
+ readonly side: "buy" | "sell";
173
+ constructor(params: {
174
+ expected: bigint;
175
+ actual: bigint;
176
+ maxSlippageBps: bigint;
177
+ side: "buy" | "sell";
178
+ });
179
+ }
157
180
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/leverage/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/leverage/types.ts"],"names":[],"mappings":"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"}
@@ -40,4 +40,25 @@ export function pow10(n) {
40
40
  export function collateralForDollars(params) {
41
41
  return params.dollars * pow10(params.decimals);
42
42
  }
43
+ // ---------------------------------------------------------------------------
44
+ // Slippage error
45
+ // ---------------------------------------------------------------------------
46
+ /**
47
+ * Thrown by executors when actual fill deviates beyond `maxSlippageBps`.
48
+ */
49
+ export class SlippageExceededError extends Error {
50
+ expected;
51
+ actual;
52
+ maxSlippageBps;
53
+ side;
54
+ constructor(params) {
55
+ const pct = (Number(params.maxSlippageBps) / 100).toFixed(2);
56
+ super(`Slippage exceeded on ${params.side}: expected ${params.expected}, got ${params.actual} (max ${pct}%)`);
57
+ this.name = "SlippageExceededError";
58
+ this.expected = params.expected;
59
+ this.actual = params.actual;
60
+ this.maxSlippageBps = params.maxSlippageBps;
61
+ this.side = params.side;
62
+ }
63
+ }
43
64
  //# sourceMappingURL=types.js.map
@@ -1 +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"}
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;AAoKD,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,cAAc,CAAS;IACvB,IAAI,CAAiB;IAE9B,YAAY,MAKX;QACC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,CACH,wBAAwB,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,QAAQ,SAAS,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CACvG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@varla/sdk",
3
- "version": "2.15.0",
3
+ "version": "2.16.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -7,18 +7,21 @@
7
7
  * to SDK action helpers and off-chain operations (sell) to a consumer callback.
8
8
  */
9
9
 
10
- import type { Address, PublicClient, WalletClient } from "viem";
10
+ import type { Address, Hash, PublicClient, WalletClient } from "viem";
11
11
 
12
12
  import { prepareCoreRepay, prepareCoreWithdraw } from "../actions/core.js";
13
13
  import { sendTx } from "../actions/tx.js";
14
+ import type { ReceiptRetryOptions } from "./receipt.js";
15
+ import { waitForReceiptWithRetry } from "./receipt.js";
14
16
  import type { DeleveragePlan, DeleverageStep, SellResult } from "./types.js";
17
+ import { SlippageExceededError } from "./types.js";
15
18
 
16
19
  export type OnDeleverageProgress = (info: {
17
20
  completed: number;
18
21
  total: number;
19
22
  step: DeleverageStep;
20
23
  // keep symmetry with leverage executor
21
- hash?: `0x${string}`;
24
+ hash?: Hash;
22
25
  sellResult?: SellResult;
23
26
  }) => void;
24
27
 
@@ -33,14 +36,87 @@ export type RunDeleverageLoopParams = {
33
36
  onSellStep: (step: Extract<DeleverageStep, { kind: "sell" }>) => Promise<SellResult>;
34
37
  onProgress?: OnDeleverageProgress;
35
38
  confirmations?: number;
39
+ /**
40
+ * Maximum acceptable slippage for sell fills (bps).
41
+ * If `actualCollateral < expectedCollateral * (10_000 - maxSlippageBps) / 10_000`,
42
+ * the loop aborts with a `SlippageExceededError`.
43
+ */
44
+ maxSlippageBps?: bigint;
45
+
46
+ // --- NEW: reliability & hooks ------------------------------------------------
47
+
48
+ /**
49
+ * Receipt retry options for `waitForTransactionReceipt`.
50
+ *
51
+ * By default the executor retries up to 5 times with exponential backoff
52
+ * (2s → 4s → 8s → 16s → 32s). Set `{ maxRetries: 0 }` to disable retries.
53
+ */
54
+ receiptRetry?: ReceiptRetryOptions;
55
+
56
+ /**
57
+ * Hook called after each successful withdraw step (receipt confirmed),
58
+ * before the next sell step. Use this to refresh CLOB position caches, etc.
59
+ *
60
+ * @param info Withdraw step details and tx hash.
61
+ */
62
+ onPostWithdraw?: (info: {
63
+ step: Extract<DeleverageStep, { kind: "withdraw" }>;
64
+ hash: Hash;
65
+ }) => Promise<void>;
66
+
67
+ /**
68
+ * Milliseconds to sleep after each withdraw confirmation before proceeding
69
+ * to the next sell step. Gives the CLOB server time to re-index on-chain
70
+ * token balance changes.
71
+ *
72
+ * Applied AFTER `onPostWithdraw` (if provided). Default: 0 (no delay).
73
+ */
74
+ postWithdrawDelayMs?: number;
75
+
76
+ /**
77
+ * Resume a previously failed execution by skipping steps before this index.
78
+ *
79
+ * When a previous call returned `{ failedAtStep: N }`, pass `startFromStep: N`
80
+ * to resume from exactly where it left off.
81
+ *
82
+ * Default: 0 (run all steps from the beginning).
83
+ */
84
+ startFromStep?: number;
36
85
  };
37
86
 
38
87
  export type RunDeleverageLoopResult = {
39
88
  completed: boolean;
89
+ /** If execution stopped early, the index of the failed step (absolute). */
40
90
  failedAtStep?: number;
41
91
  error?: unknown;
42
92
  };
43
93
 
94
+ // ---------------------------------------------------------------------------
95
+ // Helpers
96
+ // ---------------------------------------------------------------------------
97
+
98
+ function sleep(ms: number): Promise<void> {
99
+ return new Promise((resolve) => setTimeout(resolve, ms));
100
+ }
101
+
102
+ // ---------------------------------------------------------------------------
103
+ // Executor
104
+ // ---------------------------------------------------------------------------
105
+
106
+ /**
107
+ * Execute a deleverage (unwind) loop plan step-by-step.
108
+ *
109
+ * For each step:
110
+ * - "withdraw": prepares + sends `VarlaCore.withdraw()` tx
111
+ * - "sell": delegates to `onSellStep` callback (off-chain CLOB trade)
112
+ * - "repay": prepares + sends `VarlaCore.repay()` tx
113
+ *
114
+ * **Reliability features (v2):**
115
+ * - `receiptRetry`: configurable exponential backoff for receipt polling
116
+ * - `onPostWithdraw`: hook for CLOB cache refresh after each withdraw
117
+ * - `postWithdrawDelayMs`: sleep after withdraw for CLOB indexer sync
118
+ * - `startFromStep`: resume from a previously failed step index
119
+ */
44
120
  export async function runDeleverageLoop(
45
121
  params: RunDeleverageLoopParams,
46
122
  ): Promise<RunDeleverageLoopResult> {
@@ -54,6 +130,11 @@ export async function runDeleverageLoop(
54
130
  onSellStep,
55
131
  onProgress,
56
132
  confirmations = 1,
133
+ maxSlippageBps,
134
+ receiptRetry,
135
+ onPostWithdraw,
136
+ postWithdrawDelayMs = 0,
137
+ startFromStep = 0,
57
138
  } = params;
58
139
 
59
140
  const total = plan.steps.length;
@@ -61,7 +142,7 @@ export async function runDeleverageLoop(
61
142
  // Track actual collateral proceeds from the most recent sell step.
62
143
  let lastSellActualCollateral: bigint | undefined;
63
144
 
64
- for (let i = 0; i < total; i++) {
145
+ for (let i = startFromStep; i < total; i++) {
65
146
  const step = plan.steps[i]!;
66
147
  try {
67
148
  if (step.kind === "withdraw") {
@@ -73,13 +154,39 @@ export async function runDeleverageLoop(
73
154
  amounts: [step.amount],
74
155
  });
75
156
  const hash = await sendTx({ walletClient: walletClient as any, request: sim.request });
76
- await (publicClient as any).waitForTransactionReceipt({ hash, confirmations });
157
+ await waitForReceiptWithRetry({ publicClient, hash, confirmations, retry: receiptRetry });
158
+
77
159
  onProgress?.({ completed: i + 1, total, step, hash });
160
+
161
+ // Post-withdraw hook — let consumer refresh CLOB token balance cache, etc.
162
+ if (onPostWithdraw) {
163
+ await onPostWithdraw({ step, hash });
164
+ }
165
+
166
+ // Post-withdraw delay — give CLOB server time to re-index.
167
+ if (postWithdrawDelayMs > 0) {
168
+ await sleep(postWithdrawDelayMs);
169
+ }
170
+
78
171
  continue;
79
172
  }
80
173
 
81
174
  if (step.kind === "sell") {
82
175
  const res = await onSellStep(step);
176
+
177
+ // Slippage guard: reject fills that deviate too far from expected.
178
+ if (maxSlippageBps !== undefined && step.expectedCollateral > 0n) {
179
+ const minAcceptable = (step.expectedCollateral * (10_000n - maxSlippageBps)) / 10_000n;
180
+ if (res.actualCollateral < minAcceptable) {
181
+ throw new SlippageExceededError({
182
+ expected: step.expectedCollateral,
183
+ actual: res.actualCollateral,
184
+ maxSlippageBps,
185
+ side: "sell",
186
+ });
187
+ }
188
+ }
189
+
83
190
  lastSellActualCollateral = res.actualCollateral;
84
191
  onProgress?.({ completed: i + 1, total, step, sellResult: res });
85
192
  continue;
@@ -96,7 +203,8 @@ export async function runDeleverageLoop(
96
203
  amount: repayAmount,
97
204
  });
98
205
  const hash = await sendTx({ walletClient: walletClient as any, request: sim.request });
99
- await (publicClient as any).waitForTransactionReceipt({ hash, confirmations });
206
+ await waitForReceiptWithRetry({ publicClient, hash, confirmations, retry: receiptRetry });
207
+
100
208
  onProgress?.({ completed: i + 1, total, step, hash });
101
209
  continue;
102
210
  }
@@ -8,10 +8,12 @@
8
8
  * callback.
9
9
  */
10
10
 
11
- import type { Address, PublicClient, WalletClient } from "viem";
11
+ import type { Address, Hash, PublicClient, WalletClient } from "viem";
12
12
 
13
13
  import { prepareCoreBorrow, prepareCoreDeposit } from "../actions/core.js";
14
14
  import { sendTx } from "../actions/tx.js";
15
+ import type { ReceiptRetryOptions } from "./receipt.js";
16
+ import { waitForReceiptWithRetry } from "./receipt.js";
15
17
  import type {
16
18
  BuyResult,
17
19
  LeveragePlan,
@@ -19,6 +21,7 @@ import type {
19
21
  LeverageStepResult,
20
22
  OnLeverageProgress,
21
23
  } from "./types.js";
24
+ import { SlippageExceededError } from "./types.js";
22
25
 
23
26
  // ---------------------------------------------------------------------------
24
27
  // Types
@@ -48,19 +51,75 @@ export type RunLeverageLoopParams = {
48
51
  onProgress?: OnLeverageProgress;
49
52
  /** Number of block confirmations to wait per tx (default: 1). */
50
53
  confirmations?: number;
54
+ /**
55
+ * Maximum acceptable slippage for buy fills (bps).
56
+ * If `actualTokens < expectedTokens * (10_000 - maxSlippageBps) / 10_000`,
57
+ * the loop aborts with a `SlippageExceededError`.
58
+ */
59
+ maxSlippageBps?: bigint;
60
+
61
+ // --- NEW: reliability & hooks ------------------------------------------------
62
+
63
+ /**
64
+ * Receipt retry options for `waitForTransactionReceipt`.
65
+ *
66
+ * By default the executor retries up to 5 times with exponential backoff
67
+ * (2s → 4s → 8s → 16s → 32s). Set `{ maxRetries: 0 }` to disable retries.
68
+ */
69
+ receiptRetry?: ReceiptRetryOptions;
70
+
71
+ /**
72
+ * Hook called after each successful borrow step (receipt confirmed),
73
+ * before the next buy step. Use this to refresh CLOB balance caches,
74
+ * wait for off-chain indexers, etc.
75
+ *
76
+ * @param info Borrow step details and tx hash.
77
+ */
78
+ onPostBorrow?: (info: {
79
+ step: Extract<LeverageStep, { kind: "borrow" }>;
80
+ hash: Hash;
81
+ }) => Promise<void>;
82
+
83
+ /**
84
+ * Milliseconds to sleep after each borrow confirmation before proceeding
85
+ * to the next buy step. Gives the CLOB server time to re-index on-chain
86
+ * balance changes.
87
+ *
88
+ * Applied AFTER `onPostBorrow` (if provided). Default: 0 (no delay).
89
+ */
90
+ postBorrowDelayMs?: number;
91
+
92
+ /**
93
+ * Resume a previously failed execution by skipping steps before this index.
94
+ *
95
+ * When a previous call returned `{ failedAtStep: N }`, pass `startFromStep: N`
96
+ * to resume from exactly where it left off. Steps before `startFromStep` are
97
+ * skipped (their results are NOT included in the returned array).
98
+ *
99
+ * Default: 0 (run all steps from the beginning).
100
+ */
101
+ startFromStep?: number;
51
102
  };
52
103
 
53
104
  export type RunLeverageLoopResult = {
54
- /** Results for each step, aligned to `plan.steps`. */
105
+ /** Results for each step executed (starting from `startFromStep`). */
55
106
  results: LeverageStepResult[];
56
107
  /** Whether all steps completed successfully. */
57
108
  completed: boolean;
58
- /** If execution stopped early, the index of the failed step. */
109
+ /** If execution stopped early, the index of the failed step (absolute, relative to plan). */
59
110
  failedAtStep?: number;
60
111
  /** If execution stopped early, the error. */
61
112
  error?: unknown;
62
113
  };
63
114
 
115
+ // ---------------------------------------------------------------------------
116
+ // Helpers
117
+ // ---------------------------------------------------------------------------
118
+
119
+ function sleep(ms: number): Promise<void> {
120
+ return new Promise((resolve) => setTimeout(resolve, ms));
121
+ }
122
+
64
123
  // ---------------------------------------------------------------------------
65
124
  // Executor
66
125
  // ---------------------------------------------------------------------------
@@ -78,6 +137,12 @@ export type RunLeverageLoopResult = {
78
137
  * for slippage.
79
138
  *
80
139
  * If any step fails, execution stops and returns partial results.
140
+ *
141
+ * **Reliability features (v2):**
142
+ * - `receiptRetry`: configurable exponential backoff for receipt polling
143
+ * - `onPostBorrow`: hook for CLOB balance cache refresh after each borrow
144
+ * - `postBorrowDelayMs`: sleep after borrow for CLOB indexer sync
145
+ * - `startFromStep`: resume from a previously failed step index
81
146
  */
82
147
  export async function runLeverageLoop(
83
148
  params: RunLeverageLoopParams,
@@ -92,6 +157,11 @@ export async function runLeverageLoop(
92
157
  onBuyStep,
93
158
  onProgress,
94
159
  confirmations = 1,
160
+ maxSlippageBps,
161
+ receiptRetry,
162
+ onPostBorrow,
163
+ postBorrowDelayMs = 0,
164
+ startFromStep = 0,
95
165
  } = params;
96
166
 
97
167
  const results: LeverageStepResult[] = [];
@@ -100,12 +170,26 @@ export async function runLeverageLoop(
100
170
  // Track actual tokens from the most recent buy (for slippage-aware deposits).
101
171
  let lastBuyActualTokens: bigint | undefined;
102
172
 
103
- for (let i = 0; i < totalSteps; i++) {
173
+ for (let i = startFromStep; i < totalSteps; i++) {
104
174
  const step = plan.steps[i]!;
105
175
 
106
176
  try {
107
177
  if (step.kind === "buy") {
108
178
  const buyResult = await onBuyStep(step);
179
+
180
+ // Slippage guard: reject fills that deviate too far from expected.
181
+ if (maxSlippageBps !== undefined && step.expectedTokens > 0n) {
182
+ const minAcceptable = (step.expectedTokens * (10_000n - maxSlippageBps)) / 10_000n;
183
+ if (buyResult.actualTokens < minAcceptable) {
184
+ throw new SlippageExceededError({
185
+ expected: step.expectedTokens,
186
+ actual: buyResult.actualTokens,
187
+ maxSlippageBps,
188
+ side: "buy",
189
+ });
190
+ }
191
+ }
192
+
109
193
  lastBuyActualTokens = buyResult.actualTokens;
110
194
 
111
195
  const result: LeverageStepResult = { step, buyResult };
@@ -129,7 +213,7 @@ export async function runLeverageLoop(
129
213
  });
130
214
 
131
215
  const hash = await sendTx({ walletClient: walletClient as any, request: sim.request });
132
- await (publicClient as any).waitForTransactionReceipt({ hash, confirmations });
216
+ await waitForReceiptWithRetry({ publicClient, hash, confirmations, retry: receiptRetry });
133
217
 
134
218
  const result: LeverageStepResult = { step, hash };
135
219
  results.push(result);
@@ -147,12 +231,23 @@ export async function runLeverageLoop(
147
231
  });
148
232
 
149
233
  const hash = await sendTx({ walletClient: walletClient as any, request: sim.request });
150
- await (publicClient as any).waitForTransactionReceipt({ hash, confirmations });
234
+ await waitForReceiptWithRetry({ publicClient, hash, confirmations, retry: receiptRetry });
151
235
 
152
236
  const result: LeverageStepResult = { step, hash };
153
237
  results.push(result);
154
238
 
155
239
  onProgress?.({ completed: i + 1, total: totalSteps, step, result });
240
+
241
+ // Post-borrow hook — let consumer refresh CLOB balance cache, etc.
242
+ if (onPostBorrow) {
243
+ await onPostBorrow({ step, hash });
244
+ }
245
+
246
+ // Post-borrow delay — give CLOB server time to re-index.
247
+ if (postBorrowDelayMs > 0) {
248
+ await sleep(postBorrowDelayMs);
249
+ }
250
+
156
251
  continue;
157
252
  }
158
253