@gearbox-protocol/sdk 17.8.0 → 17.9.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.
Files changed (73) hide show
  1. package/dist/cjs/model/index.js +1 -0
  2. package/dist/cjs/sdk/GearboxSDK.js +8 -1
  3. package/dist/cjs/sdk/index.js +6 -0
  4. package/dist/cjs/sdk/liquidations/LiquidationsNamespace.js +10 -0
  5. package/dist/cjs/sdk/rewards/RewardsNamespace.js +51 -0
  6. package/dist/cjs/{rewards → sdk/rewards}/errors.js +1 -1
  7. package/dist/cjs/{rewards → sdk/rewards}/helpers.js +4 -4
  8. package/dist/cjs/sdk/rewards/index.js +6 -0
  9. package/dist/cjs/{rewards → sdk/rewards}/merkl-api.js +3 -3
  10. package/dist/cjs/{rewards → sdk/rewards}/toMerklRewards.js +6 -6
  11. package/dist/cjs/{rewards → sdk/rewards}/toTurtleRewards.js +7 -7
  12. package/dist/cjs/{rewards → sdk/rewards}/turtle-api.js +3 -3
  13. package/dist/cjs/sdk/rewards/types.js +1 -0
  14. package/dist/esm/dev/AccountOpener.js +1 -1
  15. package/dist/esm/dev/withdrawalUtils.js +1 -1
  16. package/dist/esm/history/trace/extractTransfers.js +1 -1
  17. package/dist/esm/model/index.js +1 -0
  18. package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
  19. package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +1 -1
  20. package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  21. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  22. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  23. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  24. package/dist/esm/onchain/base/TokensMeta.js +3 -3
  25. package/dist/esm/onchain/core/createAddressProvider.js +1 -1
  26. package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
  27. package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
  28. package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
  29. package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
  30. package/dist/esm/onchain/market/rwa/createDegenNFT.js +1 -1
  31. package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
  32. package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
  33. package/dist/esm/onchain/preview/preview/previewPoolPositionOperation.js +2 -2
  34. package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
  35. package/dist/esm/sdk/GearboxSDK.js +8 -1
  36. package/dist/esm/sdk/index.js +4 -1
  37. package/dist/esm/sdk/liquidations/LiquidationsNamespace.js +10 -0
  38. package/dist/esm/{rewards/RewardsService.js → sdk/rewards/RewardsNamespace.js} +15 -12
  39. package/dist/esm/{rewards → sdk/rewards}/errors.js +1 -1
  40. package/dist/esm/{rewards → sdk/rewards}/helpers.js +4 -4
  41. package/dist/esm/sdk/rewards/index.js +3 -0
  42. package/dist/esm/{rewards → sdk/rewards}/merkl-api.js +1 -1
  43. package/dist/esm/{rewards → sdk/rewards}/toMerklRewards.js +1 -1
  44. package/dist/esm/{rewards → sdk/rewards}/toTurtleRewards.js +1 -1
  45. package/dist/esm/{rewards → sdk/rewards}/turtle-api.js +1 -1
  46. package/dist/esm/sdk/rewards/types.js +1 -0
  47. package/dist/types/model/index.d.ts +2 -1
  48. package/dist/types/{rewards/types.d.ts → model/rewards.d.ts} +4 -9
  49. package/dist/types/sdk/GearboxSDK.d.ts +6 -0
  50. package/dist/types/sdk/index.d.ts +8 -2
  51. package/dist/types/sdk/liquidations/LiquidationsNamespace.d.ts +5 -1
  52. package/dist/types/sdk/liquidations/index.d.ts +2 -2
  53. package/dist/types/sdk/liquidations/types.d.ts +12 -2
  54. package/dist/types/sdk/rewards/RewardsNamespace.d.ts +24 -0
  55. package/dist/types/{rewards → sdk/rewards}/errors.d.ts +3 -3
  56. package/dist/types/{rewards → sdk/rewards}/helpers.d.ts +5 -4
  57. package/dist/types/sdk/rewards/index.d.ts +6 -0
  58. package/dist/types/{rewards → sdk/rewards}/merkl-api.d.ts +3 -3
  59. package/dist/types/{rewards → sdk/rewards}/toMerklRewards.d.ts +4 -2
  60. package/dist/types/{rewards → sdk/rewards}/toTurtleRewards.d.ts +4 -2
  61. package/dist/types/{rewards → sdk/rewards}/turtle-api.d.ts +3 -3
  62. package/dist/types/sdk/rewards/types.d.ts +35 -0
  63. package/dist/types/sdk/types.d.ts +9 -0
  64. package/package.json +1 -6
  65. package/dist/cjs/rewards/RewardsService.js +0 -48
  66. package/dist/cjs/rewards/index.js +0 -6
  67. package/dist/cjs/rewards/package.json +0 -1
  68. package/dist/esm/rewards/index.js +0 -3
  69. package/dist/esm/rewards/package.json +0 -1
  70. package/dist/types/rewards/RewardsService.d.ts +0 -29
  71. package/dist/types/rewards/index.d.ts +0 -6
  72. /package/dist/cjs/{rewards/types.js → model/rewards.js} +0 -0
  73. /package/dist/esm/{rewards/types.js → model/rewards.js} +0 -0
@@ -31,6 +31,7 @@ require("./primitives.js");
31
31
  require("./response.js");
32
32
  const require_model_response_schema = require("./response.schema.js");
33
33
  const require_model_result = require("./result.js");
34
+ require("./rewards.js");
34
35
  require("./withdrawals.js");
35
36
  const require_model_withdrawals_schema = require("./withdrawals.schema.js");
36
37
  exports.ANALYTICS_POSITIONS_DEFAULT_LIMIT = require_model_analytics_schema.ANALYTICS_POSITIONS_DEFAULT_LIMIT;
@@ -19,6 +19,8 @@ const require_sdk_positions_PositionsNamespace = require("./positions/PositionsN
19
19
  require("./positions/index.js");
20
20
  const require_sdk_preview_PreviewNamespace = require("./preview/PreviewNamespace.js");
21
21
  require("./preview/index.js");
22
+ const require_sdk_rewards_RewardsNamespace = require("./rewards/RewardsNamespace.js");
23
+ require("./rewards/index.js");
22
24
  //#region src/sdk/GearboxSDK.ts
23
25
  /**
24
26
  * Default {@link GearboxSDKOptions.maxStateAgeSeconds}: the fastest poll an
@@ -76,6 +78,10 @@ var GearboxSDK = class {
76
78
  **/
77
79
  preview;
78
80
  /**
81
+ * Namespace for claimable rewards. Absent in `offchain` mode.
82
+ **/
83
+ rewards;
84
+ /**
79
85
  * The banners the backend attaches to a pool opportunity or a strategy
80
86
  * position, see {@link Notice}. Top-level because the subject is either
81
87
  * kind of entity, so neither namespace owns it. Backend-only, hence gated
@@ -94,7 +100,7 @@ var GearboxSDK = class {
94
100
  /** One sync in flight per chain: concurrent stale reads join it. */
95
101
  #syncing = /* @__PURE__ */ new Map();
96
102
  constructor(options) {
97
- const { mode, networks, onchain, offchain, attach, logger, maxOffchainLagSeconds = 120, maxStateAgeSeconds = 30 } = options;
103
+ const { mode, networks, onchain, offchain, attach, rewards, logger, maxOffchainLagSeconds = 120, maxStateAgeSeconds = 30 } = options;
98
104
  this.mode = mode;
99
105
  this.networks = [...networks];
100
106
  this.#attachOptions = attach;
@@ -140,6 +146,7 @@ var GearboxSDK = class {
140
146
  this.positions = new require_sdk_positions_PositionsNamespace.PositionsNamespace(this.#onchain, this.#offchain, namespaceOptions);
141
147
  this.liquidations = this.#onchain ? new require_sdk_liquidations_LiquidationsNamespace.LiquidationsNamespace(this.#onchain, namespaceOptions) : void 0;
142
148
  this.preview = this.#onchain ? new require_sdk_preview_PreviewNamespace.PreviewNamespace(this.#onchain, namespaceOptions) : void 0;
149
+ this.rewards = this.#onchain ? new require_sdk_rewards_RewardsNamespace.RewardsNamespace(this.#onchain, rewards, namespaceOptions) : void 0;
143
150
  const backend = this.#offchain;
144
151
  this.notices = backend ? (subject) => backend.notices.list(subject) : void 0;
145
152
  }
@@ -26,6 +26,9 @@ const require_sdk_positions_PositionsNamespace = require("./positions/PositionsN
26
26
  require("./positions/index.js");
27
27
  const require_sdk_preview_PreviewNamespace = require("./preview/PreviewNamespace.js");
28
28
  require("./preview/index.js");
29
+ const require_sdk_rewards_errors = require("./rewards/errors.js");
30
+ const require_sdk_rewards_RewardsNamespace = require("./rewards/RewardsNamespace.js");
31
+ require("./rewards/index.js");
29
32
  const require_sdk_GearboxSDK = require("./GearboxSDK.js");
30
33
  require("./types.js");
31
34
  exports.AbstractNamespace = require_sdk_AbstractNamespace.AbstractNamespace;
@@ -36,14 +39,17 @@ exports.DEFAULT_MAX_STATE_AGE = require_sdk_GearboxSDK.DEFAULT_MAX_STATE_AGE;
36
39
  exports.ExecuteApi = require_sdk_execute_ExecuteApi.ExecuteApi;
37
40
  exports.GearboxSDK = require_sdk_GearboxSDK.GearboxSDK;
38
41
  exports.LiquidationsNamespace = require_sdk_liquidations_LiquidationsNamespace.LiquidationsNamespace;
42
+ exports.MerklRequestFailedError = require_sdk_rewards_errors.MerklRequestFailedError;
39
43
  exports.MissingSourceError = require_sdk_errors_MissingSourceError.MissingSourceError;
40
44
  exports.NoSourceServedError = require_sdk_errors_NoSourceServedError.NoSourceServedError;
41
45
  exports.OpportunitiesNamespace = require_sdk_opportunities_OpportunitiesNamespace.OpportunitiesNamespace;
42
46
  exports.PositionsNamespace = require_sdk_positions_PositionsNamespace.PositionsNamespace;
43
47
  exports.PrepareApi = require_sdk_prepare_PrepareApi.PrepareApi;
44
48
  exports.PreviewNamespace = require_sdk_preview_PreviewNamespace.PreviewNamespace;
49
+ exports.RewardsNamespace = require_sdk_rewards_RewardsNamespace.RewardsNamespace;
45
50
  exports.SourceChainMismatchError = require_sdk_errors_SourceChainMismatchError.SourceChainMismatchError;
46
51
  exports.SourceUnavailableError = require_sdk_errors_SourceUnavailableError.SourceUnavailableError;
52
+ exports.TurtleRequestFailedError = require_sdk_rewards_errors.TurtleRequestFailedError;
47
53
  exports.assertSameChains = require_sdk_errors_assertSameChains.assertSameChains;
48
54
  exports.creditAccountNotEmpty = require_model_errors_prepare_errors.creditAccountNotEmpty;
49
55
  exports.creditAccountNotFound = require_model_errors_prepare_errors.creditAccountNotFound;
@@ -49,6 +49,16 @@ var LiquidationsNamespace = class {
49
49
  const sdk = this.#onchain.chain(props.details.chainId);
50
50
  return require_onchain_validation_checkLiquidation.checkLiquidation(sdk, props, options);
51
51
  }
52
+ /**
53
+ * {@inheritDoc ILiquidations.isEmergencyLiquidator}
54
+ **/
55
+ isEmergencyLiquidator(props) {
56
+ try {
57
+ return this.#onchain.chain(props.chainId).marketRegister.findByCreditManager(props.creditManager).isEmergencyLiquidator(props.liquidator);
58
+ } catch {
59
+ return false;
60
+ }
61
+ }
52
62
  };
53
63
  //#endregion
54
64
  exports.LiquidationsNamespace = LiquidationsNamespace;
@@ -0,0 +1,51 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_onchain_base_MultichainConstruct = require("../../onchain/base/MultichainConstruct.js");
3
+ require("../../onchain/index.js");
4
+ const require_sdk_rewards_merkl_api = require("./merkl-api.js");
5
+ const require_sdk_rewards_toMerklRewards = require("./toMerklRewards.js");
6
+ const require_sdk_rewards_toTurtleRewards = require("./toTurtleRewards.js");
7
+ const require_sdk_rewards_turtle_api = require("./turtle-api.js");
8
+ let viem = require("viem");
9
+ //#region src/sdk/rewards/RewardsNamespace.ts
10
+ /**
11
+ * {@inheritDoc IRewards}
12
+ **/
13
+ var RewardsNamespace = class extends require_onchain_base_MultichainConstruct.MultichainConstruct {
14
+ #keys;
15
+ #ensureFresh;
16
+ constructor(onchain, keys, options) {
17
+ super(onchain);
18
+ this.#keys = keys ?? {};
19
+ this.#ensureFresh = options.ensureFresh;
20
+ }
21
+ /**
22
+ * {@inheritDoc IRewards.list}
23
+ **/
24
+ async list(wallet, chainIds) {
25
+ await this.#ensureFresh?.(chainIds);
26
+ const { merklApiKey, turtleApiKey } = this.#keys;
27
+ const user = (0, viem.getAddress)(wallet);
28
+ const turtle = turtleApiKey ? require_sdk_rewards_turtle_api.fetchTurtleWalletRewards(user, turtleApiKey) : void 0;
29
+ turtle?.catch(() => {});
30
+ return this.queryChains({
31
+ chainIds,
32
+ label: "list rewards",
33
+ block: "state",
34
+ run: async (sdk) => {
35
+ const sources = [require_sdk_rewards_merkl_api.fetchMerklUserRewards({
36
+ chainId: sdk.chainId,
37
+ user,
38
+ apiKey: merklApiKey
39
+ }).then((response) => require_sdk_rewards_toMerklRewards.toMerklRewards(sdk, response))];
40
+ if (turtle) sources.push(turtle.then(async (rewards) => require_sdk_rewards_toTurtleRewards.toTurtleRewards(sdk, rewards, await require_sdk_rewards_turtle_api.readTurtleClaimed(sdk, user, rewards))));
41
+ const settled = await Promise.allSettled(sources);
42
+ const failed = settled.flatMap((r) => r.status === "rejected" ? [r.reason] : []);
43
+ if (failed.length === settled.length) throw failed.length === 1 ? failed[0] : new AggregateError(failed, "no rewards source answered");
44
+ for (const reason of failed) (sdk.logger ?? this.sdk.logger)?.warn(reason, `rewards source failed on chain ${sdk.chainId}`);
45
+ return settled.flatMap((r) => r.status === "fulfilled" ? r.value : []);
46
+ }
47
+ });
48
+ }
49
+ };
50
+ //#endregion
51
+ exports.RewardsNamespace = RewardsNamespace;
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  let viem = require("viem");
3
- //#region src/rewards/errors.ts
3
+ //#region src/sdk/rewards/errors.ts
4
4
  /**
5
5
  * Thrown when Merkl did not answer for a chain.
6
6
  *
@@ -1,9 +1,9 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_onchain_utils_AddressMap = require("../onchain/utils/AddressMap.js");
3
- const require_onchain_utils_formatter = require("../onchain/utils/formatter.js");
4
- require("../onchain/index.js");
2
+ const require_onchain_utils_AddressMap = require("../../onchain/utils/AddressMap.js");
3
+ const require_onchain_utils_formatter = require("../../onchain/utils/formatter.js");
4
+ require("../../onchain/index.js");
5
5
  let viem = require("viem");
6
- //#region src/rewards/helpers.ts
6
+ //#region src/sdk/rewards/helpers.ts
7
7
  /**
8
8
  * The pool a source names, and its share token. A v3.1 pool is its own
9
9
  * ERC-4626 share token, so its address is the only token a campaign can name;
@@ -0,0 +1,6 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_rewards_errors = require("./errors.js");
3
+ const require_sdk_rewards_RewardsNamespace = require("./RewardsNamespace.js");
4
+ exports.MerklRequestFailedError = require_sdk_rewards_errors.MerklRequestFailedError;
5
+ exports.RewardsNamespace = require_sdk_rewards_RewardsNamespace.RewardsNamespace;
6
+ exports.TurtleRequestFailedError = require_sdk_rewards_errors.TurtleRequestFailedError;
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rewards_errors = require("./errors.js");
3
- //#region src/rewards/merkl-api.ts
2
+ const require_sdk_rewards_errors = require("./errors.js");
3
+ //#region src/sdk/rewards/merkl-api.ts
4
4
  const MERKL_API_URL = "https://api.merkl.xyz";
5
5
  const MERKL_API_KEY_HEADER = "X-API-Key";
6
6
  /**
@@ -26,7 +26,7 @@ async function fetchMerklUserRewards({ chainId, user, apiKey }) {
26
26
  if (!response.ok) throw new Error(`answered ${response.status}`);
27
27
  return await response.json();
28
28
  } catch (error) {
29
- throw new require_rewards_errors.MerklRequestFailedError(chainId, path, error);
29
+ throw new require_sdk_rewards_errors.MerklRequestFailedError(chainId, path, error);
30
30
  }
31
31
  }
32
32
  //#endregion
@@ -1,20 +1,20 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rewards_helpers = require("./helpers.js");
2
+ const require_sdk_rewards_helpers = require("./helpers.js");
3
3
  let viem = require("viem");
4
- //#region src/rewards/toMerklRewards.ts
4
+ //#region src/sdk/rewards/toMerklRewards.ts
5
5
  /**
6
6
  * Merkl's answer for one chain, one reward per pool and incentive token.
7
7
  * A breakdown Merkl cannot be read from is skipped rather than thrown on: it
8
8
  * must not sink the chain, which the caller would then be told is unreachable.
9
9
  */
10
10
  function toMerklRewards(sdk, response) {
11
- const poolOf = require_rewards_helpers.resolvePool(sdk);
11
+ const poolOf = require_sdk_rewards_helpers.resolvePool(sdk);
12
12
  const parts = response.flatMap(({ rewards }) => rewards).flatMap(({ token, breakdowns }) => {
13
13
  if (!(0, viem.isAddress)(token.address, { strict: false })) return [];
14
- const rewardToken = require_rewards_helpers.toRewardToken(sdk, (0, viem.getAddress)(token.address), token);
14
+ const rewardToken = require_sdk_rewards_helpers.toRewardToken(sdk, (0, viem.getAddress)(token.address), token);
15
15
  return breakdowns.flatMap(({ reason, amount, claimed }) => {
16
16
  const pool = poolOf(reason?.split("_").find((p) => p.startsWith("0x")));
17
- const value = require_rewards_helpers.remaining(require_rewards_helpers.parseAmount(amount), require_rewards_helpers.parseAmount(claimed));
17
+ const value = require_sdk_rewards_helpers.remaining(require_sdk_rewards_helpers.parseAmount(amount), require_sdk_rewards_helpers.parseAmount(claimed));
18
18
  if (!pool || !value) return [];
19
19
  return [{
20
20
  ...pool,
@@ -24,7 +24,7 @@ function toMerklRewards(sdk, response) {
24
24
  }];
25
25
  });
26
26
  });
27
- return require_rewards_helpers.mergeRewards(sdk, "merkl", parts);
27
+ return require_sdk_rewards_helpers.mergeRewards(sdk, "merkl", parts);
28
28
  }
29
29
  //#endregion
30
30
  exports.toMerklRewards = toMerklRewards;
@@ -1,13 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rewards_helpers = require("./helpers.js");
2
+ const require_sdk_rewards_helpers = require("./helpers.js");
3
3
  let viem = require("viem");
4
- //#region src/rewards/toTurtleRewards.ts
4
+ //#region src/sdk/rewards/toTurtleRewards.ts
5
5
  /**
6
6
  * The streams targeting a pool on the SDK's chain, merged per pool and
7
7
  * incentive. A token reward is what is committed and not yet claimed.
8
8
  */
9
9
  function toTurtleRewards(sdk, { streams, proofs }, claimed) {
10
- const poolOf = require_rewards_helpers.resolvePool(sdk);
10
+ const poolOf = require_sdk_rewards_helpers.resolvePool(sdk);
11
11
  const committed = new Map(proofs.map((p) => [p.streamId, p.amount]));
12
12
  const targeted = streams.flatMap((stream) => {
13
13
  const target = stream.stream.customArgs.targetToken;
@@ -21,24 +21,24 @@ function toTurtleRewards(sdk, { streams, proofs }, claimed) {
21
21
  const tokens = targeted.flatMap(({ stream, pool, poolToken }) => {
22
22
  const { point, rewardToken, lastSnapshot } = stream.stream;
23
23
  if (point || !rewardToken || !(0, viem.isAddress)(rewardToken.address, { strict: false })) return [];
24
- const value = require_rewards_helpers.remaining(require_rewards_helpers.parseAmount(committed.get(stream.streamId)), claimed.get(stream.streamId));
24
+ const value = require_sdk_rewards_helpers.remaining(require_sdk_rewards_helpers.parseAmount(committed.get(stream.streamId)), claimed.get(stream.streamId));
25
25
  if (!value) return [];
26
26
  return [{
27
27
  pool,
28
28
  poolToken,
29
- token: require_rewards_helpers.toRewardToken(sdk, (0, viem.getAddress)(rewardToken.address), rewardToken),
29
+ token: require_sdk_rewards_helpers.toRewardToken(sdk, (0, viem.getAddress)(rewardToken.address), rewardToken),
30
30
  value,
31
31
  price: lastSnapshot?.rewardTokenPrice
32
32
  }];
33
33
  });
34
- return [...require_rewards_helpers.mergeRewards(sdk, "turtle", tokens), ...toPoints(sdk, targeted)];
34
+ return [...require_sdk_rewards_helpers.mergeRewards(sdk, "turtle", tokens), ...toPoints(sdk, targeted)];
35
35
  }
36
36
  /** Points accrue per snapshot; the last one holds the running total. */
37
37
  function toPoints(sdk, targeted) {
38
38
  const merged = /* @__PURE__ */ new Map();
39
39
  for (const { stream, pool, poolToken } of targeted) {
40
40
  const { point } = stream.stream;
41
- const raw = require_rewards_helpers.parseAmount(stream.snapshots.at(-1)?.rewardsAccumulated);
41
+ const raw = require_sdk_rewards_helpers.parseAmount(stream.snapshots.at(-1)?.rewardsAccumulated);
42
42
  if (!point || !raw) continue;
43
43
  const key = `${pool}_${point.id}`;
44
44
  const value = (merged.get(key)?.points.value ?? 0) + Number((0, viem.formatUnits)(raw, point.decimals));
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rewards_errors = require("./errors.js");
3
- //#region src/rewards/turtle-api.ts
2
+ const require_sdk_rewards_errors = require("./errors.js");
3
+ //#region src/sdk/rewards/turtle-api.ts
4
4
  const TURTLE_API_URL = "https://earn.turtle.xyz";
5
5
  const GEARBOX_ORG_ID = "d171ba3d-ff89-4e6c-8f13-d94840b06edd";
6
6
  const TIMEOUT = 1e4;
@@ -42,7 +42,7 @@ async function get(path, apiKey) {
42
42
  if (!response.ok) throw new Error(`answered ${response.status}`);
43
43
  return await response.json();
44
44
  } catch (error) {
45
- throw new require_rewards_errors.TurtleRequestFailedError(path, error);
45
+ throw new require_sdk_rewards_errors.TurtleRequestFailedError(path, error);
46
46
  }
47
47
  }
48
48
  /** What each of the wallet's streams on the chain has paid out, at the latest block. */
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
@@ -1,5 +1,5 @@
1
- import { ierc20Abi } from "../abi/iERC20.js";
2
1
  import { iCreditFacadeV310Abi } from "../abi/310/generated.js";
2
+ import { ierc20Abi } from "../abi/iERC20.js";
3
3
  import { AddressMap } from "../onchain/utils/AddressMap.js";
4
4
  import { AddressSet } from "../onchain/utils/AddressSet.js";
5
5
  import { AssetsMap } from "../onchain/utils/AssetsMap.js";
@@ -1,6 +1,6 @@
1
- import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
2
1
  import { getNetworkType } from "../onchain/chain/chains.js";
3
2
  import { getWithdrawalCompressorAddress } from "../onchain/accounts/withdrawal-compressor/addresses.js";
3
+ import { iWithdrawalCompressorV313Abi } from "../abi/IWithdrawalCompressorV313.js";
4
4
  import "../onchain/index.js";
5
5
  import { iMidasDataFeedAbi, iMidasRedemptionVaultAbi, midasGatewayAbi, midasRedeemerAbi, midasRedemptionVaultPhantomTokenAbi, securitizeRedeemerAbi, securitizeRedemptionGatewayAbi, securitizeRedemptionPhantomTokenAbi } from "./withdrawalAbi.js";
6
6
  import { erc20Abi, hexToString, parseAbi, parseEther } from "viem";
@@ -1,5 +1,5 @@
1
- import { ierc20Abi } from "../../abi/iERC20.js";
2
1
  import { iCreditFacadeV310Abi } from "../../abi/310/generated.js";
2
+ import { ierc20Abi } from "../../abi/iERC20.js";
3
3
  import { AddressMap } from "../../onchain/utils/AddressMap.js";
4
4
  import "../../onchain/index.js";
5
5
  import { UnexpectedFacadeEventOrderError } from "./errors.js";
@@ -30,6 +30,7 @@ import "./primitives.js";
30
30
  import "./response.js";
31
31
  import { chainFailedSchema, chainMetadataSchema, chainSucceededSchema, dataSourceSchema, responseMetadataSchema, responseSchema } from "./response.schema.js";
32
32
  import { safeValue, sdkErr, sdkOk } from "./result.js";
33
+ import "./rewards.js";
33
34
  import "./withdrawals.js";
34
35
  import { positionClaimableWithdrawalSchema, positionPendingWithdrawalSchema, positionWithdrawalsSchema, withdrawalOutputAmountSchema } from "./withdrawals.schema.js";
35
36
  export { ANALYTICS_POSITIONS_DEFAULT_LIMIT, ANALYTICS_POSITIONS_MAX_LIMIT, CHART_METRIC_UNITS, CHART_RANGES, CHART_UNAVAILABLE_CODES, FILTER_ALL, KYC_REGISTRATION_LINKS, POOL_OPPORTUNITY_CHART_METRICS, POOL_POSITION_CHART_METRICS, PROTOCOL_CHART_METRICS, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_PROTOCOLS, SECURITIZE_REGISTER_VAULT_TYPES, STRATEGY_OPPORTUNITY_CHART_METRICS, STRATEGY_POSITION_CHART_METRICS, STRATEGY_POSITION_COLLATERAL_ERROR, accountNotMidasGreenlisted, amountSchema, analyticsChartQueryOptionsSchema, analyticsChartQueryParamsSchema, analyticsChartQuerySchema, analyticsPositionListOptionsSchema, analyticsPositionListQueryParamsSchema, analyticsPositionListQuerySchema, analyticsPositionPageSchema, analyticsPositionSchema, analyticsPositionSortFieldSchema, analyticsSortDirectionSchema, apyBreakdownSchema, asEstimated, assetTypeSchema, backendPreferred, booleanParamSchema, borrowRateBreakdownSchema, bpsSchema, chainFailedSchema, chainIdSchema, chainMetadataSchema, chainSucceededSchema, chartBundleSchemaFor, chartDenominationSchema, chartMetricSchema, chartQueryCodec, chartQueryParamsSchema, chartQuerySchema, chartRangeSchema, chartSeriesSchema, chartValueSchema, chartWindowSchema, compareTagOf, creditAccountFrozen, creditAccountNotEmpty, creditAccountNotFound, creditManagerPaused, curatorNameSchema, curatorSchema, dataSourceSchema, debtOutOfRange, delayedReceivedAssetSchema, encodeFlag, filterAllSchema, filterable, forbiddenToken, instantReceivedAssetSchema, insufficientAllowance, insufficientBalance, insufficientCollateral, insufficientPoolLiquidity, isFilterSet, kycRequirementSchema, leverageOutOfRange, leverageSchema, liquidatableAccountFilterSchema, liquidatableAccountSchema, liquidationApprovalSchema, liquidationDetailsSchema, liquidationPositionId, liquidationPositionSchema, liquidatorNotEligible, malformedTransaction, marketExpired, matchesLiquidatableAccountFilter, matchesOpportunityFilter, matchesPositionFilter, multipleDelayedWithdrawals, noDelayedRoute, noRecordedIntent, noStrategyTargetCollateral, notEmergencyLiquidator, noticeKindSchema, noticeSchema, offchainOnly, onchainOnly, opportunityBaseSchema, opportunityDetailSchema, opportunityFilterQueryParamsSchema, opportunityFilterQuerySchema, opportunityFilterSchema, opportunityId, opportunityKeySchema, opportunityKindSchema, opportunitySchema, opportunityTotalsSchema, pnlBreakdownSchema, pointRewardsSchema, pointsProgramPnLSchema, pointsProgramSchema, pointsRewardsPnLSchema, poolOpportunityChartMetricSchema, poolOpportunityDetailSchema, poolOpportunityId, poolOpportunityKeySchema, poolOpportunitySchema, poolPaused, poolPositionChartMetricSchema, poolPositionId, poolPositionKeySchema, poolPositionSchema, poolSunset, positionClaimableWithdrawalSchema, positionCollateralSchema, positionFilterQueryParamsSchema, positionFilterQuerySchema, positionFilterSchema, positionId, positionKeySchema, positionKindSchema, positionPendingWithdrawalSchema, positionSchema, positionTransactionKindSchema, positionTransactionSchema, positionWithdrawalsSchema, positionsTotalsSchema, priceFeedDataSchema, priceFeedSummarySchema, protocolChartMetricSchema, quotaAssetSchema, quotaCountExceeded, quotaLimitReached, rateCurvePointSchema, rateCurveSchema, receivedAssetSchema, reservePriceLimited, responseMetadataSchema, responseSchema, rewardsPnLSchema, rewardsSchema, rwaOpenRequirementsNotMet, rwaProtocolSchema, safeValue, sdkErr, sdkOk, strategyOpportunityChartMetricSchema, strategyOpportunityDetailSchema, strategyOpportunityId, strategyOpportunityKeySchema, strategyOpportunitySchema, strategyPositionChartMetricSchema, strategyPositionId, strategyPositionKeySchema, strategyPositionSchema, timestampSchema, tokenAmountSchema, tokenQuotaRateSchema, tokenRewardsPnLSchema, tokenRewardsSchema, tokenSchema, tolerance, txCallSchema, underlyingTokenSchema, unexpectedFailure, unpriceableTokenError, unsupportedCollateralToken, unsupportedTokenPair, withdrawalInProgress, withdrawalOutputAmountSchema };
@@ -1,5 +1,3 @@
1
- import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
2
- import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
3
1
  import { AP_REWARDS_COMPRESSOR } from "../constants/address-provider.js";
4
2
  import { ADDRESS_0X0 } from "../constants/addresses.js";
5
3
  import { MAX_UINT256 } from "../constants/math.js";
@@ -10,6 +8,8 @@ import "../base/index.js";
10
8
  import { AccountBotsService } from "./bots/AccountBotsService.js";
11
9
  import "./bots/index.js";
12
10
  import { rewardsCompressorAbi } from "../../abi/compressors/rewardsCompressor.js";
11
+ import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
12
+ import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
13
13
  import { expectedBalanceDeltas } from "../market/credit/expectedBalanceDeltas.js";
14
14
  import "../market/index.js";
15
15
  import { CreditAccountCompressor } from "./credit-account-compressor/CreditAccountCompressor.js";
@@ -1,4 +1,3 @@
1
- import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
2
1
  import { AddressSet } from "../../utils/AddressSet.js";
3
2
  import { bytes32ToString } from "../../utils/bytes32ToString.js";
4
3
  import { ADDRESS_0X0 } from "../../constants/addresses.js";
@@ -20,6 +19,7 @@ import { SecuritizeLiquidatorContract } from "../../market/rwa/securitize/Securi
20
19
  import "../../market/rwa/securitize/index.js";
21
20
  import "../../market/index.js";
22
21
  import { LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./constants.js";
22
+ import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
23
23
  import { skipLiquidatableAccount } from "./skipLiquidatableAccount.js";
24
24
  //#region src/onchain/accounts/liquidations/LiquidationsService.ts
25
25
  /**
@@ -1,9 +1,9 @@
1
- import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
2
1
  import { BaseContract } from "../../base/BaseContract.js";
3
2
  import "../../base/index.js";
4
3
  import { sdkErr, sdkOk } from "../../../model/result.js";
5
4
  import "../../../model/index.js";
6
5
  import { decodeDelayedIntent } from "./intent-codec.js";
6
+ import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
7
7
  //#region src/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.ts
8
8
  const abi = iRedemptionLoggerV310Abi;
9
9
  /**
@@ -1,5 +1,5 @@
1
- import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
2
1
  import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
+ import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
3
3
  //#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.ts
4
4
  const abi = iWithdrawalCompressorV310Abi;
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
2
1
  import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
+ import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
3
3
  //#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.ts
4
4
  const abi = iWithdrawalCompressorV311Abi;
5
5
  /**
@@ -1,6 +1,6 @@
1
- import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
2
1
  import { encodeDelayedIntent } from "./intent-codec.js";
3
2
  import { AbstractWithdrawalCompressorContract, iCreditAccountAbi, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal } from "./AbstractWithdrawalCompressorContract.js";
3
+ import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
4
4
  import { toWithdrawalStatus } from "./types.js";
5
5
  //#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.ts
6
6
  const abi = iWithdrawalCompressorV313Abi;
@@ -1,12 +1,12 @@
1
- import { iExpirableAbi } from "../../abi/iExpirable.js";
2
- import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
3
- import { iVersionAbi } from "../../abi/iVersion.js";
4
1
  import { AddressMap } from "../utils/AddressMap.js";
5
2
  import { AddressSet } from "../utils/AddressSet.js";
6
3
  import { bytes32ToString } from "../utils/bytes32ToString.js";
7
4
  import { getAssetType } from "../chain/chains.js";
8
5
  import { formatBN } from "../utils/formatter.js";
9
6
  import "../utils/index.js";
7
+ import { iExpirableAbi } from "../../abi/iExpirable.js";
8
+ import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
9
+ import { iVersionAbi } from "../../abi/iVersion.js";
10
10
  import { SdkRWADataNotLoadedError } from "../core/errors.js";
11
11
  import { executeMulticallBatches } from "../utils/viem/executeMulticallBatches.js";
12
12
  //#region src/onchain/base/TokensMeta.ts
@@ -1,8 +1,8 @@
1
- import { iVersionAbi } from "../../abi/iVersion.js";
2
1
  import "../constants/address-provider.js";
3
2
  import { isV310 } from "../constants/versions.js";
4
3
  import "../constants/index.js";
5
4
  import { hexEq } from "../utils/hex.js";
5
+ import { iVersionAbi } from "../../abi/iVersion.js";
6
6
  import { AddressProviderV310Contract } from "./AddressProviderV310Contract.js";
7
7
  //#region src/onchain/core/createAddressProvider.ts
8
8
  const OVERRIDE_ADDRESSES = {};
@@ -1,5 +1,5 @@
1
- import { accountMigratorAbi } from "../../../../abi/AccountMigrator.js";
2
1
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
2
+ import { accountMigratorAbi } from "../../../../abi/AccountMigrator.js";
3
3
  //#region src/onchain/market/adapters/contracts/AccountMigratorAdapterContract.ts
4
4
  const abi = accountMigratorAbi;
5
5
  const protocolAbi = accountMigratorAbi;
@@ -1,6 +1,6 @@
1
- import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
2
1
  import { MissingSerializedParamsError } from "../../../base/errors.js";
3
2
  import "../../../base/index.js";
3
+ import { ierc4626AdapterAbi } from "../../../../abi/ierc4626Adapter.js";
4
4
  import { iERC4626Abi } from "../abi/targetContractAbi.js";
5
5
  import { fnSigToName, swapFromTransfers } from "../transferHelpers.js";
6
6
  import { AbstractAdapterContract } from "./AbstractAdapter.js";
@@ -1,7 +1,7 @@
1
- import { iPausableAbi } from "../../../abi/iPausable.js";
2
1
  import { iCreditFacadeMulticallV310Abi, iCreditFacadeV310Abi } from "../../../abi/310/generated.js";
3
2
  import { BaseContract } from "../../base/BaseContract.js";
4
3
  import "../../base/index.js";
4
+ import { iPausableAbi } from "../../../abi/iPausable.js";
5
5
  //#region src/onchain/market/credit/CreditFacadeV310BaseContract.ts
6
6
  const abi = [
7
7
  ...iCreditFacadeV310Abi,
@@ -1,4 +1,3 @@
1
- import { iPausableAbi } from "../../../abi/iPausable.js";
2
1
  import { iPoolV310Abi } from "../../../abi/310/generated.js";
3
2
  import { AddressMap } from "../../utils/AddressMap.js";
4
3
  import { RAY } from "../../constants/math.js";
@@ -8,6 +7,7 @@ import "../../utils/index.js";
8
7
  import { SdkRWADataNotLoadedError } from "../../core/errors.js";
9
8
  import { BaseContract } from "../../base/BaseContract.js";
10
9
  import "../../base/index.js";
10
+ import { iPausableAbi } from "../../../abi/iPausable.js";
11
11
  //#region src/onchain/market/pool/PoolV310Contract.ts
12
12
  const abi = [...iPoolV310Abi, ...iPausableAbi];
13
13
  var PoolV310Contract = class extends BaseContract {
@@ -1,6 +1,6 @@
1
- import { iVersionAbi } from "../../../abi/iVersion.js";
2
1
  import { bytes32ToString } from "../../utils/bytes32ToString.js";
3
2
  import "../../utils/index.js";
3
+ import { iVersionAbi } from "../../../abi/iVersion.js";
4
4
  import { iMidasDegenNFTAbi } from "../../../abi/rwa/iMidasDegenNFT.js";
5
5
  import { DEGEN_NFT_MIDAS } from "./midas/constants.js";
6
6
  import { MidasDegenNFT } from "./midas/MidasDegenNFT.js";
@@ -1,5 +1,5 @@
1
- import { iethZapperAbi } from "../../../abi/iETHZapper.js";
2
1
  import { ZapperContract } from "./ZapperContract.js";
2
+ import { iethZapperAbi } from "../../../abi/iETHZapper.js";
3
3
  //#region src/onchain/market/zapper/IETHZapperContract.ts
4
4
  const abi = iethZapperAbi;
5
5
  var IETHZapperContract = class extends ZapperContract {
@@ -1,8 +1,8 @@
1
- import { iZapperAbi } from "../../../abi/iZapper.js";
2
1
  import { BaseContract } from "../../base/BaseContract.js";
3
2
  import "../../base/index.js";
4
3
  import { sdkErr, sdkOk } from "../../../model/result.js";
5
4
  import "../../../model/index.js";
5
+ import { iZapperAbi } from "../../../abi/iZapper.js";
6
6
  //#region src/onchain/market/zapper/ZapperContract.ts
7
7
  /**
8
8
  * Base contract for every Gearbox zapper. Specialized zappers (e.g.
@@ -1,8 +1,8 @@
1
- import { ierc20Abi } from "../../../abi/iERC20.js";
2
- import { iZapperAbi } from "../../../abi/iZapper.js";
3
1
  import { iPoolV310Abi } from "../../../abi/310/generated.js";
2
+ import { ierc20Abi } from "../../../abi/iERC20.js";
4
3
  import { sdkErr, sdkOk } from "../../../model/result.js";
5
4
  import "../../../model/index.js";
5
+ import { iZapperAbi } from "../../../abi/iZapper.js";
6
6
  //#region src/onchain/preview/preview/previewPoolPositionOperation.ts
7
7
  function previewRead(operation) {
8
8
  switch (operation.operation) {
@@ -1,6 +1,6 @@
1
1
  import { errorAbis } from "../../../abi/errors.js";
2
- import { iUpdatablePriceFeedAbi } from "../../../abi/iUpdatablePriceFeed.js";
3
2
  import { generateCastTraceCall } from "./cast.js";
3
+ import { iUpdatablePriceFeedAbi } from "../../../abi/iUpdatablePriceFeed.js";
4
4
  import { simulateMulticall } from "./simulateMulticall.js";
5
5
  import { BaseError, CallExecutionError, ContractFunctionRevertedError, decodeFunctionData, decodeFunctionResult, encodeFunctionData, parseAbi } from "viem";
6
6
  import { getAction, parseAccount } from "viem/utils";
@@ -18,6 +18,8 @@ import { PositionsNamespace } from "./positions/PositionsNamespace.js";
18
18
  import "./positions/index.js";
19
19
  import { PreviewNamespace } from "./preview/PreviewNamespace.js";
20
20
  import "./preview/index.js";
21
+ import { RewardsNamespace } from "./rewards/RewardsNamespace.js";
22
+ import "./rewards/index.js";
21
23
  //#region src/sdk/GearboxSDK.ts
22
24
  /**
23
25
  * Default {@link GearboxSDKOptions.maxStateAgeSeconds}: the fastest poll an
@@ -75,6 +77,10 @@ var GearboxSDK = class {
75
77
  **/
76
78
  preview;
77
79
  /**
80
+ * Namespace for claimable rewards. Absent in `offchain` mode.
81
+ **/
82
+ rewards;
83
+ /**
78
84
  * The banners the backend attaches to a pool opportunity or a strategy
79
85
  * position, see {@link Notice}. Top-level because the subject is either
80
86
  * kind of entity, so neither namespace owns it. Backend-only, hence gated
@@ -93,7 +99,7 @@ var GearboxSDK = class {
93
99
  /** One sync in flight per chain: concurrent stale reads join it. */
94
100
  #syncing = /* @__PURE__ */ new Map();
95
101
  constructor(options) {
96
- const { mode, networks, onchain, offchain, attach, logger, maxOffchainLagSeconds = 120, maxStateAgeSeconds = 30 } = options;
102
+ const { mode, networks, onchain, offchain, attach, rewards, logger, maxOffchainLagSeconds = 120, maxStateAgeSeconds = 30 } = options;
97
103
  this.mode = mode;
98
104
  this.networks = [...networks];
99
105
  this.#attachOptions = attach;
@@ -139,6 +145,7 @@ var GearboxSDK = class {
139
145
  this.positions = new PositionsNamespace(this.#onchain, this.#offchain, namespaceOptions);
140
146
  this.liquidations = this.#onchain ? new LiquidationsNamespace(this.#onchain, namespaceOptions) : void 0;
141
147
  this.preview = this.#onchain ? new PreviewNamespace(this.#onchain, namespaceOptions) : void 0;
148
+ this.rewards = this.#onchain ? new RewardsNamespace(this.#onchain, rewards, namespaceOptions) : void 0;
142
149
  const backend = this.#offchain;
143
150
  this.notices = backend ? (subject) => backend.notices.list(subject) : void 0;
144
151
  }
@@ -25,6 +25,9 @@ import { PositionsNamespace } from "./positions/PositionsNamespace.js";
25
25
  import "./positions/index.js";
26
26
  import { PreviewNamespace } from "./preview/PreviewNamespace.js";
27
27
  import "./preview/index.js";
28
+ import { MerklRequestFailedError, TurtleRequestFailedError } from "./rewards/errors.js";
29
+ import { RewardsNamespace } from "./rewards/RewardsNamespace.js";
30
+ import "./rewards/index.js";
28
31
  import { DEFAULT_MAX_STATE_AGE, GearboxSDK } from "./GearboxSDK.js";
29
32
  import "./types.js";
30
- export { AbstractNamespace, AllSourcesFailedError, AnalyticsNamespace, DEFAULT_MAX_OFFCHAIN_LAG, DEFAULT_MAX_STATE_AGE, ExecuteApi, GearboxSDK, LiquidationsNamespace, MissingSourceError, NoSourceServedError, OpportunitiesNamespace, PositionsNamespace, PrepareApi, PreviewNamespace, SourceChainMismatchError, SourceUnavailableError, assertSameChains, creditAccountNotEmpty, creditAccountNotFound, everyChainFailed, filterResponse, mergeChainList, mergeChainOne, noStrategyTargetCollateral, unexpectedFailure };
33
+ export { AbstractNamespace, AllSourcesFailedError, AnalyticsNamespace, DEFAULT_MAX_OFFCHAIN_LAG, DEFAULT_MAX_STATE_AGE, ExecuteApi, GearboxSDK, LiquidationsNamespace, MerklRequestFailedError, MissingSourceError, NoSourceServedError, OpportunitiesNamespace, PositionsNamespace, PrepareApi, PreviewNamespace, RewardsNamespace, SourceChainMismatchError, SourceUnavailableError, TurtleRequestFailedError, assertSameChains, creditAccountNotEmpty, creditAccountNotFound, everyChainFailed, filterResponse, mergeChainList, mergeChainOne, noStrategyTargetCollateral, unexpectedFailure };
@@ -48,6 +48,16 @@ var LiquidationsNamespace = class {
48
48
  const sdk = this.#onchain.chain(props.details.chainId);
49
49
  return checkLiquidation(sdk, props, options);
50
50
  }
51
+ /**
52
+ * {@inheritDoc ILiquidations.isEmergencyLiquidator}
53
+ **/
54
+ isEmergencyLiquidator(props) {
55
+ try {
56
+ return this.#onchain.chain(props.chainId).marketRegister.findByCreditManager(props.creditManager).isEmergencyLiquidator(props.liquidator);
57
+ } catch {
58
+ return false;
59
+ }
60
+ }
51
61
  };
52
62
  //#endregion
53
63
  export { LiquidationsNamespace };