@across-protocol/sdk 4.3.145-alpha.1 → 4.3.145-alpha.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.
@@ -1,6 +1,7 @@
1
1
  import Decimal from "decimal.js";
2
2
  import bs58 from "bs58";
3
3
  import { ethers } from "ethers";
4
+ import { Struct } from "superstruct";
4
5
  import { BigNumber, BigNumberish, BN } from "./BigNumberUtils";
5
6
  export type Decimalish = string | number | Decimal;
6
7
  export declare const AddressZero = "0x0000000000000000000000000000000000000000";
@@ -28,11 +29,21 @@ export type Result<T, E = Error> = {
28
29
  ok: false;
29
30
  error: E;
30
31
  };
32
+ export type AttemptOptions<T = unknown> = {
33
+ schema?: Struct<T>;
34
+ };
31
35
  export type RetryOptions = {
32
36
  retries?: number;
33
37
  delaySeconds?: number;
34
38
  isRetryable?: (err: unknown) => boolean;
35
39
  };
40
+ export declare function attempt<T>(call: () => Promise<unknown>, options: AttemptOptions<T> & {
41
+ schema: Struct<T>;
42
+ }): Promise<Result<T>>;
43
+ export declare function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
44
+ export declare function retry<T>(call: () => Promise<unknown>, options: RetryOptions & AttemptOptions<T> & {
45
+ schema: Struct<T>;
46
+ }): Promise<Result<T>>;
36
47
  export declare function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
37
48
  export type TransactionCostEstimate = {
38
49
  nativeGasCost: BigNumber;
@@ -7,6 +7,7 @@ exports.nativeToToken = nativeToToken;
7
7
  exports.calculateGasFees = calculateGasFees;
8
8
  exports.percent = percent;
9
9
  exports.delay = delay;
10
+ exports.attempt = attempt;
10
11
  exports.retry = retry;
11
12
  exports.randomAddress = randomAddress;
12
13
  const tslib_1 = require("tslib");
@@ -14,6 +15,7 @@ const decimal_js_1 = tslib_1.__importDefault(require("decimal.js"));
14
15
  const bs58_1 = tslib_1.__importDefault(require("bs58"));
15
16
  exports.bs58 = bs58_1.default;
16
17
  const ethers_1 = require("ethers");
18
+ const superstruct_1 = require("superstruct");
17
19
  const BigNumberUtils_1 = require("./BigNumberUtils");
18
20
  const FormattingUtils_1 = require("./FormattingUtils");
19
21
  exports.AddressZero = ethers_1.ethers.constants.AddressZero;
@@ -100,12 +102,24 @@ const DEFAULT_RETRY_OPTIONS = {
100
102
  delaySeconds: 1,
101
103
  isRetryable: () => true,
102
104
  };
105
+ async function attempt(call, options = {}) {
106
+ try {
107
+ const raw = await call();
108
+ const value = options.schema ? (0, superstruct_1.create)(raw, options.schema) : raw;
109
+ return { ok: true, value };
110
+ }
111
+ catch (err) {
112
+ return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
113
+ }
114
+ }
103
115
  async function retry(call, options = {}) {
104
116
  const resolved = { ...DEFAULT_RETRY_OPTIONS, ...options };
105
- const backoffSeconds = (attempt) => resolved.delaySeconds * 2 ** attempt + Math.random();
117
+ const backoffSeconds = (n) => resolved.delaySeconds * 2 ** n + Math.random();
106
118
  for (let nAttempts = 0;; ++nAttempts) {
107
119
  try {
108
- return { ok: true, value: await call() };
120
+ const raw = await call();
121
+ const value = options.schema ? (0, superstruct_1.create)(raw, options.schema) : raw;
122
+ return { ok: true, value };
109
123
  }
110
124
  catch (err) {
111
125
  if (nAttempts >= resolved.retries || !resolved.isRetryable(err)) {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":";;;AAgDA,kBAIC;AAQD,kBAIC;AAaD,sCASC;AAsBD,4CAQC;AASD,0BAEC;AA2FD,sBAEC;AAsCD,sBAcC;AASD,sCAEC;;AA3RD,oEAAiC;AACjC,wDAAwB;AAUf,eAVF,cAAI,CAUE;AATb,mCAAgC;AAChC,qDAA8F;AAC9F,uDAAoD;AAGvC,QAAA,WAAW,GAAG,eAAM,CAAC,SAAS,CAAC,WAAW,CAAC;AAC3C,QAAA,WAAW,GAAG,0BAAS,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;AAE/D,iBAAS,GAAK,eAAM,CAAC,KAAK,WAAC;AAUnC,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,QAAiB,EAAM,EAAE;IAClE,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IAG9B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,oBAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,IAAA,2BAAU,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,IAAA,2BAAU,EAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC;AAVW,QAAA,OAAO,WAUlB;AASK,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,QAAiB,EAAU,EAAE,CAAC,IAAA,4BAAW,EAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAC;AAAlG,QAAA,OAAO,WAA2F;AAS/G,SAAgB,GAAG,CAAC,CAAe,EAAE,CAAe;IAClD,MAAM,GAAG,GAAG,IAAA,qBAAI,EAAC,CAAC,CAAC,CAAC;IACpB,MAAM,GAAG,GAAG,IAAA,qBAAI,EAAC,CAAC,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAQD,SAAgB,GAAG,CAAC,CAAe,EAAE,CAAe;IAClD,MAAM,GAAG,GAAG,IAAA,qBAAI,EAAC,CAAC,CAAC,CAAC;IACpB,MAAM,GAAG,GAAG,IAAA,qBAAI,EAAC,CAAC,CAAC,CAAC;IACpB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAClC,CAAC;AAEY,QAAA,oBAAoB,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;AAWjD,SAAgB,aAAa,CAC3B,UAAwB,EACxB,QAAyB,CAAC,EAC1B,UAAU,GAAG,EAAE,EACf,cAAc,GAAG,EAAE;IAEnB,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,KAAK,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAA,eAAO,EAAC,UAAU,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,IAAA,iCAAe,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC1E,CAAC;AASM,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,QAAsB,EAAa,EAAE;IAC9E,OAAO,0BAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB;AAWF,SAAgB,gBAAgB,CAC9B,GAAW,EACX,QAAsB,EACtB,QAAyB,CAAC,EAC1B,QAAQ,GAAG,EAAE;IAEb,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC5C,OAAO,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC;AASD,SAAgB,OAAO,CAAC,SAAuB,EAAE,WAAyB;IACxE,OAAO,4BAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC9D,CAAC;AAWM,MAAM,8BAA8B,GAAG,CAC5C,WAAuB,EACvB,SAAqB,EACrB,cAA0B,EAC1B,cAA0B,EAClB,EAAE;IACV,MAAM,KAAK,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC9D,OAAO,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC5E,CAAC,CAAC;AARW,QAAA,8BAA8B,kCAQzC;AAUK,MAAM,4BAA4B,GAAG,CAC1C,WAAuB,EACvB,SAAqB,EACrB,cAA0B,EAC1B,cAA0B,EAClB,EAAE;IACV,MAAM,CAAC,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,IAAI,oBAAO,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC;SACL,GAAG,CACF,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;SACL,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACtB,GAAG,CAAC,GAAG,CAAC,CACZ;SACA,OAAO,CAAC,EAAE,CAAC,CAAC;AACjB,CAAC,CAAC;AAlBW,QAAA,4BAA4B,gCAkBvC;AAUK,MAAM,OAAO,GAAG,CACrB,WAAuB,EACvB,SAAqB,EACrB,cAA0B,EAC1B,cAA0B,EAClB,EAAE;IACV,OAAO,IAAI,oBAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AACtH,CAAC,CAAC;AAPW,QAAA,OAAO,WAOlB;AASK,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY,EAAE,EAAE;IAC1E,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,MAAM,SAAS,GAAG,EAAE,CAAC;IAErB,OAAO,WAAW,EAAE,CAAC;QACnB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1B,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QACb,IAAI,GAAG,IAAI,GAAG;YAAE,WAAW,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAZW,QAAA,iBAAiB,qBAY5B;AAMF,SAAgB,KAAK,CAAC,OAAe;IACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC;AAuBD,MAAM,qBAAqB,GAA2B;IACpD,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI;CACxB,CAAC;AAWK,KAAK,UAAU,KAAK,CAAI,IAAsB,EAAE,UAAwB,EAAE;IAC/E,MAAM,QAAQ,GAA2B,EAAE,GAAG,qBAAqB,EAAE,GAAG,OAAO,EAAE,CAAC;IAClF,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAEzG,KAAK,IAAI,SAAS,GAAG,CAAC,GAAI,EAAE,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,SAAS,IAAI,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnF,CAAC;YACD,MAAM,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC;AASD,SAAgB,aAAa;IAC3B,OAAO,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACrF,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import Decimal from "decimal.js";
2
2
  import bs58 from "bs58";
3
3
  import { ethers } from "ethers";
4
+ import { Struct } from "superstruct";
4
5
  import { BigNumber, BigNumberish, BN } from "./BigNumberUtils";
5
6
  export type Decimalish = string | number | Decimal;
6
7
  export declare const AddressZero = "0x0000000000000000000000000000000000000000";
@@ -132,7 +133,15 @@ export type Result<T, E = Error> = {
132
133
  error: E;
133
134
  };
134
135
  /**
135
- * Configures {@link retry}. Retries always use exponential backoff
136
+ * Configures a single {@link attempt}. `schema`, when supplied, runs the successful value
137
+ * through `create(value, schema)` before wrapping — validation failures surface as a
138
+ * `{ ok: false }` Result like any other throw.
139
+ */
140
+ export type AttemptOptions<T = unknown> = {
141
+ schema?: Struct<T>;
142
+ };
143
+ /**
144
+ * Configures the outer loop of {@link retry}. Backoff is always exponential
136
145
  * (`delaySeconds * 2 ** attempt + random()` seconds) to play nicely with upstream
137
146
  * rate-limits; callers that want tighter spacing should lower {@link delaySeconds}.
138
147
  */
@@ -145,14 +154,27 @@ export type RetryOptions = {
145
154
  isRetryable?: (err: unknown) => boolean;
146
155
  };
147
156
  /**
148
- * Attempt a function call with exponential backoff and a retryability predicate, returning a
149
- * {@link Result} that encodes success or the terminal failure. Exhausted retries and errors
150
- * rejected by `isRetryable` both surface as `{ ok: false, error }` the caller decides how
151
- * to react instead of catching a throw.
152
- * @param call The function to call.
153
- * @param options Retry configuration see {@link RetryOptions}. All fields are optional.
157
+ * Run a failable operation once, catching throws and returning a {@link Result}. When
158
+ * `schema` is supplied, the successful value is validated via `create(value, schema)`
159
+ * before being wrapped; a failed validation lands in `{ ok: false, error }` with the
160
+ * superstruct error preserved.
161
+ */
162
+ export declare function attempt<T>(call: () => Promise<unknown>, options: AttemptOptions<T> & {
163
+ schema: Struct<T>;
164
+ }): Promise<Result<T>>;
165
+ export declare function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
166
+ /**
167
+ * Loop {@link attempt} with exponential backoff until success or a terminal failure —
168
+ * exhausted retry budget or a failure rejected by `isRetryable`. The inner attempt's
169
+ * validation (via `schema`) participates in the retry budget; a malformed response is
170
+ * retried unless `isRetryable` opts out.
171
+ * @param call The function to call on each attempt.
172
+ * @param options Retry + attempt configuration (see {@link RetryOptions}, {@link AttemptOptions}).
154
173
  * @returns A `Result<T>` wrapping the terminal outcome.
155
174
  */
175
+ export declare function retry<T>(call: () => Promise<unknown>, options: RetryOptions & AttemptOptions<T> & {
176
+ schema: Struct<T>;
177
+ }): Promise<Result<T>>;
156
178
  export declare function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
157
179
  export type TransactionCostEstimate = {
158
180
  nativeGasCost: BigNumber;
@@ -1,6 +1,7 @@
1
1
  import Decimal from "decimal.js";
2
2
  import bs58 from "bs58";
3
3
  import { ethers } from "ethers";
4
+ import { create } from "superstruct";
4
5
  import { BigNumber, formatUnits, parseUnits, toBN } from "./BigNumberUtils";
5
6
  import { ConvertDecimals } from "./FormattingUtils";
6
7
  export const AddressZero = ethers.constants.AddressZero;
@@ -180,21 +181,24 @@ const DEFAULT_RETRY_OPTIONS = {
180
181
  delaySeconds: 1,
181
182
  isRetryable: () => true,
182
183
  };
183
- /**
184
- * Attempt a function call with exponential backoff and a retryability predicate, returning a
185
- * {@link Result} that encodes success or the terminal failure. Exhausted retries and errors
186
- * rejected by `isRetryable` both surface as `{ ok: false, error }` — the caller decides how
187
- * to react instead of catching a throw.
188
- * @param call The function to call.
189
- * @param options Retry configuration — see {@link RetryOptions}. All fields are optional.
190
- * @returns A `Result<T>` wrapping the terminal outcome.
191
- */
184
+ export async function attempt(call, options = {}) {
185
+ try {
186
+ const raw = await call();
187
+ const value = options.schema ? create(raw, options.schema) : raw;
188
+ return { ok: true, value };
189
+ }
190
+ catch (err) {
191
+ return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
192
+ }
193
+ }
192
194
  export async function retry(call, options = {}) {
193
195
  const resolved = { ...DEFAULT_RETRY_OPTIONS, ...options };
194
- const backoffSeconds = (attempt) => resolved.delaySeconds * 2 ** attempt + Math.random();
196
+ const backoffSeconds = (n) => resolved.delaySeconds * 2 ** n + Math.random();
195
197
  for (let nAttempts = 0;; ++nAttempts) {
196
198
  try {
197
- return { ok: true, value: await call() };
199
+ const raw = await call();
200
+ const value = options.schema ? create(raw, options.schema) : raw;
201
+ return { ok: true, value };
198
202
  }
199
203
  catch (err) {
200
204
  if (nAttempts >= resolved.retries || !resolved.isRetryable(err)) {
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import Decimal from "decimal.js";
2
2
  import bs58 from "bs58";
3
3
  import { ethers } from "ethers";
4
+ import { Struct } from "superstruct";
4
5
  import { BigNumber, BigNumberish, BN } from "./BigNumberUtils";
5
6
  export type Decimalish = string | number | Decimal;
6
7
  export declare const AddressZero = "0x0000000000000000000000000000000000000000";
@@ -132,7 +133,15 @@ export type Result<T, E = Error> = {
132
133
  error: E;
133
134
  };
134
135
  /**
135
- * Configures {@link retry}. Retries always use exponential backoff
136
+ * Configures a single {@link attempt}. `schema`, when supplied, runs the successful value
137
+ * through `create(value, schema)` before wrapping — validation failures surface as a
138
+ * `{ ok: false }` Result like any other throw.
139
+ */
140
+ export type AttemptOptions<T = unknown> = {
141
+ schema?: Struct<T>;
142
+ };
143
+ /**
144
+ * Configures the outer loop of {@link retry}. Backoff is always exponential
136
145
  * (`delaySeconds * 2 ** attempt + random()` seconds) to play nicely with upstream
137
146
  * rate-limits; callers that want tighter spacing should lower {@link delaySeconds}.
138
147
  */
@@ -145,14 +154,27 @@ export type RetryOptions = {
145
154
  isRetryable?: (err: unknown) => boolean;
146
155
  };
147
156
  /**
148
- * Attempt a function call with exponential backoff and a retryability predicate, returning a
149
- * {@link Result} that encodes success or the terminal failure. Exhausted retries and errors
150
- * rejected by `isRetryable` both surface as `{ ok: false, error }` the caller decides how
151
- * to react instead of catching a throw.
152
- * @param call The function to call.
153
- * @param options Retry configuration see {@link RetryOptions}. All fields are optional.
157
+ * Run a failable operation once, catching throws and returning a {@link Result}. When
158
+ * `schema` is supplied, the successful value is validated via `create(value, schema)`
159
+ * before being wrapped; a failed validation lands in `{ ok: false, error }` with the
160
+ * superstruct error preserved.
161
+ */
162
+ export declare function attempt<T>(call: () => Promise<unknown>, options: AttemptOptions<T> & {
163
+ schema: Struct<T>;
164
+ }): Promise<Result<T>>;
165
+ export declare function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
166
+ /**
167
+ * Loop {@link attempt} with exponential backoff until success or a terminal failure —
168
+ * exhausted retry budget or a failure rejected by `isRetryable`. The inner attempt's
169
+ * validation (via `schema`) participates in the retry budget; a malformed response is
170
+ * retried unless `isRetryable` opts out.
171
+ * @param call The function to call on each attempt.
172
+ * @param options Retry + attempt configuration (see {@link RetryOptions}, {@link AttemptOptions}).
154
173
  * @returns A `Result<T>` wrapping the terminal outcome.
155
174
  */
175
+ export declare function retry<T>(call: () => Promise<unknown>, options: RetryOptions & AttemptOptions<T> & {
176
+ schema: Struct<T>;
177
+ }): Promise<Result<T>>;
156
178
  export declare function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
157
179
  export type TransactionCostEstimate = {
158
180
  nativeGasCost: BigNumber;
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAU,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAiC,MAAM,kBAAkB,CAAC;AAG9F,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACnD,eAAO,MAAM,WAAW,+CAA+B,CAAC;AACxD,eAAO,MAAM,WAAW,kBAAqD,CAAC;AAE9E,eAAO,MAAQ,SAAS,+BAAiB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,CAAC;AAEhB;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,YAAY,EAAE,WAAW,MAAM,KAAG,EAU9D,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,YAAY,EAAE,WAAW,MAAM,KAAG,MAA+C,CAAC;AAE/G;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AACD;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAIxD;AAED,eAAO,MAAM,oBAAoB,kBAAe,CAAC;AAEjD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,YAAY,EACxB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,UAAU,SAAK,EACf,cAAc,SAAK,GAClB,MAAM,CAIR;AAED;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,YAAY,EAAE,UAAU,YAAY,KAAG,SAEnE,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,KAAK,GAAE,MAAM,GAAG,MAAU,EAC1B,QAAQ,SAAK,GACZ,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,EAAE,CAE9E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,8BAA8B,GACzC,aAAa,UAAU,EACvB,WAAW,UAAU,EACrB,gBAAgB,UAAU,EAC1B,gBAAgB,UAAU,KACzB,MAGF,CAAC;AACF;;;;;;;;GAQG;AACH,eAAO,MAAM,4BAA4B,GACvC,aAAa,UAAU,EACvB,WAAW,UAAU,EACrB,gBAAgB,UAAU,EAC1B,gBAAgB,UAAU,KACzB,MAaF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAClB,aAAa,UAAU,EACvB,WAAW,UAAU,EACrB,gBAAgB,UAAU,EAC1B,gBAAgB,UAAU,KACzB,MAEF,CAAC;AACF;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM,eAYvE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,oBAEpC;AAED;;;;GAIG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAEpF;;;;GAIG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,6HAA6H;IAC7H,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iHAAiH;IACjH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;CACzC,CAAC;AAQF;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,EACvB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC5B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;CAAE,GACjD,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAcjG;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,CAAC,EACrB,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC5B,OAAO,EAAE,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;CAAE,GAChE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,wBAAgB,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAsB7F,MAAM,MAAM,uBAAuB,GAAG;IACpC,aAAa,EAAE,SAAS,CAAC;IACzB,YAAY,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,wBAAgB,aAAa,WAE5B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@across-protocol/sdk",
3
3
  "author": "UMA Team",
4
- "version": "4.3.145-alpha.1",
4
+ "version": "4.3.145-alpha.2",
5
5
  "license": "AGPL-3.0",
6
6
  "homepage": "https://docs.across.to/reference/sdk",
7
7
  "repository": {
@@ -1,6 +1,7 @@
1
1
  import Decimal from "decimal.js";
2
2
  import bs58 from "bs58";
3
3
  import { ethers } from "ethers";
4
+ import { create, Struct } from "superstruct";
4
5
  import { BigNumber, BigNumberish, BN, formatUnits, parseUnits, toBN } from "./BigNumberUtils";
5
6
  import { ConvertDecimals } from "./FormattingUtils";
6
7
 
@@ -228,7 +229,16 @@ export function delay(seconds: number) {
228
229
  export type Result<T, E = Error> = { ok: true; value: T } | { ok: false; error: E };
229
230
 
230
231
  /**
231
- * Configures {@link retry}. Retries always use exponential backoff
232
+ * Configures a single {@link attempt}. `schema`, when supplied, runs the successful value
233
+ * through `create(value, schema)` before wrapping — validation failures surface as a
234
+ * `{ ok: false }` Result like any other throw.
235
+ */
236
+ export type AttemptOptions<T = unknown> = {
237
+ schema?: Struct<T>;
238
+ };
239
+
240
+ /**
241
+ * Configures the outer loop of {@link retry}. Backoff is always exponential
232
242
  * (`delaySeconds * 2 ** attempt + random()` seconds) to play nicely with upstream
233
243
  * rate-limits; callers that want tighter spacing should lower {@link delaySeconds}.
234
244
  */
@@ -248,21 +258,55 @@ const DEFAULT_RETRY_OPTIONS: Required<RetryOptions> = {
248
258
  };
249
259
 
250
260
  /**
251
- * Attempt a function call with exponential backoff and a retryability predicate, returning a
252
- * {@link Result} that encodes success or the terminal failure. Exhausted retries and errors
253
- * rejected by `isRetryable` both surface as `{ ok: false, error }` the caller decides how
254
- * to react instead of catching a throw.
255
- * @param call The function to call.
256
- * @param options Retry configuration — see {@link RetryOptions}. All fields are optional.
261
+ * Run a failable operation once, catching throws and returning a {@link Result}. When
262
+ * `schema` is supplied, the successful value is validated via `create(value, schema)`
263
+ * before being wrapped; a failed validation lands in `{ ok: false, error }` with the
264
+ * superstruct error preserved.
265
+ */
266
+ export function attempt<T>(
267
+ call: () => Promise<unknown>,
268
+ options: AttemptOptions<T> & { schema: Struct<T> }
269
+ ): Promise<Result<T>>;
270
+ export function attempt<T>(call: () => Promise<T>, options?: AttemptOptions): Promise<Result<T>>;
271
+ export async function attempt<T>(
272
+ call: () => Promise<unknown>,
273
+ options: AttemptOptions<T> = {}
274
+ ): Promise<Result<T>> {
275
+ try {
276
+ const raw = await call();
277
+ const value = options.schema ? create(raw, options.schema) : (raw as T);
278
+ return { ok: true, value };
279
+ } catch (err) {
280
+ return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };
281
+ }
282
+ }
283
+
284
+ /**
285
+ * Loop {@link attempt} with exponential backoff until success or a terminal failure —
286
+ * exhausted retry budget or a failure rejected by `isRetryable`. The inner attempt's
287
+ * validation (via `schema`) participates in the retry budget; a malformed response is
288
+ * retried unless `isRetryable` opts out.
289
+ * @param call The function to call on each attempt.
290
+ * @param options Retry + attempt configuration (see {@link RetryOptions}, {@link AttemptOptions}).
257
291
  * @returns A `Result<T>` wrapping the terminal outcome.
258
292
  */
259
- export async function retry<T>(call: () => Promise<T>, options: RetryOptions = {}): Promise<Result<T>> {
293
+ export function retry<T>(
294
+ call: () => Promise<unknown>,
295
+ options: RetryOptions & AttemptOptions<T> & { schema: Struct<T> }
296
+ ): Promise<Result<T>>;
297
+ export function retry<T>(call: () => Promise<T>, options?: RetryOptions): Promise<Result<T>>;
298
+ export async function retry<T>(
299
+ call: () => Promise<unknown>,
300
+ options: RetryOptions & AttemptOptions<T> = {}
301
+ ): Promise<Result<T>> {
260
302
  const resolved: Required<RetryOptions> = { ...DEFAULT_RETRY_OPTIONS, ...options };
261
- const backoffSeconds = (attempt: number): number => resolved.delaySeconds * 2 ** attempt + Math.random();
303
+ const backoffSeconds = (n: number): number => resolved.delaySeconds * 2 ** n + Math.random();
262
304
 
263
305
  for (let nAttempts = 0; ; ++nAttempts) {
264
306
  try {
265
- return { ok: true, value: await call() };
307
+ const raw = await call();
308
+ const value = options.schema ? create(raw, options.schema) : (raw as T);
309
+ return { ok: true, value };
266
310
  } catch (err) {
267
311
  if (nAttempts >= resolved.retries || !resolved.isRetryable(err)) {
268
312
  return { ok: false, error: err instanceof Error ? err : new Error(String(err)) };