@gearbox-protocol/sdk 17.8.0 → 17.10.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 (105) hide show
  1. package/dist/cjs/dev/AccountOpener.js +3 -3
  2. package/dist/cjs/model/index.js +1 -0
  3. package/dist/cjs/onchain/accounts/index.js +1 -0
  4. package/dist/cjs/onchain/accounts/intents/realize.js +7 -2
  5. package/dist/cjs/onchain/accounts/intents/testing/market.js +5 -1
  6. package/dist/cjs/onchain/accounts/intents/testing/sdk-mock.js +1 -0
  7. package/dist/cjs/onchain/accounts/intents/utils/index.js +1 -0
  8. package/dist/cjs/onchain/accounts/intents/utils/quotas-for-update.js +30 -0
  9. package/dist/cjs/onchain/accounts/quota-utils.js +6 -0
  10. package/dist/cjs/onchain/chain/chains.js +12 -0
  11. package/dist/cjs/onchain/chain/index.js +1 -0
  12. package/dist/cjs/onchain/index.js +2 -0
  13. package/dist/cjs/sdk/GearboxSDK.js +8 -1
  14. package/dist/cjs/sdk/index.js +6 -0
  15. package/dist/cjs/sdk/liquidations/LiquidationsNamespace.js +10 -0
  16. package/dist/cjs/sdk/rewards/RewardsNamespace.js +51 -0
  17. package/dist/cjs/{rewards → sdk/rewards}/errors.js +1 -1
  18. package/dist/cjs/{rewards → sdk/rewards}/helpers.js +4 -4
  19. package/dist/cjs/sdk/rewards/index.js +6 -0
  20. package/dist/cjs/{rewards → sdk/rewards}/merkl-api.js +3 -3
  21. package/dist/cjs/{rewards → sdk/rewards}/toMerklRewards.js +6 -6
  22. package/dist/cjs/{rewards → sdk/rewards}/toTurtleRewards.js +7 -7
  23. package/dist/cjs/{rewards → sdk/rewards}/turtle-api.js +3 -3
  24. package/dist/cjs/sdk/rewards/types.js +1 -0
  25. package/dist/esm/dev/AccountOpener.js +2 -2
  26. package/dist/esm/dev/withdrawalUtils.js +1 -1
  27. package/dist/esm/history/trace/extractTransfers.js +1 -1
  28. package/dist/esm/model/index.js +1 -0
  29. package/dist/esm/onchain/accounts/CreditAccountsServiceV310.js +2 -2
  30. package/dist/esm/onchain/accounts/index.js +2 -2
  31. package/dist/esm/onchain/accounts/intents/realize.js +8 -3
  32. package/dist/esm/onchain/accounts/intents/testing/market.js +5 -1
  33. package/dist/esm/onchain/accounts/intents/testing/sdk-mock.js +1 -0
  34. package/dist/esm/onchain/accounts/intents/utils/index.js +2 -2
  35. package/dist/esm/onchain/accounts/intents/utils/quotas-for-update.js +31 -2
  36. package/dist/esm/onchain/accounts/liquidations/LiquidationsService.js +1 -1
  37. package/dist/esm/onchain/accounts/quota-utils.js +6 -1
  38. package/dist/esm/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  39. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  40. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  41. package/dist/esm/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  42. package/dist/esm/onchain/base/TokensMeta.js +3 -3
  43. package/dist/esm/onchain/chain/chains.js +12 -1
  44. package/dist/esm/onchain/chain/index.js +2 -2
  45. package/dist/esm/onchain/core/createAddressProvider.js +1 -1
  46. package/dist/esm/onchain/index.js +3 -3
  47. package/dist/esm/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
  48. package/dist/esm/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
  49. package/dist/esm/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
  50. package/dist/esm/onchain/market/pool/PoolV310Contract.js +1 -1
  51. package/dist/esm/onchain/market/rwa/createDegenNFT.js +1 -1
  52. package/dist/esm/onchain/market/zapper/IETHZapperContract.js +1 -1
  53. package/dist/esm/onchain/market/zapper/ZapperContract.js +1 -1
  54. package/dist/esm/onchain/preview/preview/previewPoolPositionOperation.js +2 -2
  55. package/dist/esm/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
  56. package/dist/esm/sdk/GearboxSDK.js +8 -1
  57. package/dist/esm/sdk/index.js +4 -1
  58. package/dist/esm/sdk/liquidations/LiquidationsNamespace.js +10 -0
  59. package/dist/esm/{rewards/RewardsService.js → sdk/rewards/RewardsNamespace.js} +15 -12
  60. package/dist/esm/{rewards → sdk/rewards}/errors.js +1 -1
  61. package/dist/esm/{rewards → sdk/rewards}/helpers.js +4 -4
  62. package/dist/esm/sdk/rewards/index.js +3 -0
  63. package/dist/esm/{rewards → sdk/rewards}/merkl-api.js +1 -1
  64. package/dist/esm/{rewards → sdk/rewards}/toMerklRewards.js +1 -1
  65. package/dist/esm/{rewards → sdk/rewards}/toTurtleRewards.js +1 -1
  66. package/dist/esm/{rewards → sdk/rewards}/turtle-api.js +1 -1
  67. package/dist/esm/sdk/rewards/types.js +1 -0
  68. package/dist/types/model/errors/liquidation-errors.d.ts +4 -0
  69. package/dist/types/model/errors/operation-errors.d.ts +10 -0
  70. package/dist/types/model/errors/oracle-errors.d.ts +2 -0
  71. package/dist/types/model/index.d.ts +2 -1
  72. package/dist/types/{rewards/types.d.ts → model/rewards.d.ts} +4 -9
  73. package/dist/types/onchain/accounts/index.d.ts +2 -2
  74. package/dist/types/onchain/accounts/intents/testing/market.d.ts +4 -0
  75. package/dist/types/onchain/accounts/intents/utils/index.d.ts +2 -2
  76. package/dist/types/onchain/accounts/intents/utils/quotas-for-update.d.ts +7 -1
  77. package/dist/types/onchain/accounts/quota-utils.d.ts +6 -1
  78. package/dist/types/onchain/chain/chains.d.ts +15 -1
  79. package/dist/types/onchain/chain/index.d.ts +2 -2
  80. package/dist/types/onchain/index.d.ts +3 -3
  81. package/dist/types/sdk/GearboxSDK.d.ts +6 -0
  82. package/dist/types/sdk/index.d.ts +8 -2
  83. package/dist/types/sdk/liquidations/LiquidationsNamespace.d.ts +5 -1
  84. package/dist/types/sdk/liquidations/index.d.ts +2 -2
  85. package/dist/types/sdk/liquidations/types.d.ts +12 -2
  86. package/dist/types/sdk/rewards/RewardsNamespace.d.ts +24 -0
  87. package/dist/types/{rewards → sdk/rewards}/errors.d.ts +3 -3
  88. package/dist/types/{rewards → sdk/rewards}/helpers.d.ts +5 -4
  89. package/dist/types/sdk/rewards/index.d.ts +6 -0
  90. package/dist/types/{rewards → sdk/rewards}/merkl-api.d.ts +3 -3
  91. package/dist/types/{rewards → sdk/rewards}/toMerklRewards.d.ts +4 -2
  92. package/dist/types/{rewards → sdk/rewards}/toTurtleRewards.d.ts +4 -2
  93. package/dist/types/{rewards → sdk/rewards}/turtle-api.d.ts +3 -3
  94. package/dist/types/sdk/rewards/types.d.ts +35 -0
  95. package/dist/types/sdk/types.d.ts +9 -0
  96. package/package.json +1 -6
  97. package/dist/cjs/rewards/RewardsService.js +0 -48
  98. package/dist/cjs/rewards/index.js +0 -6
  99. package/dist/cjs/rewards/package.json +0 -1
  100. package/dist/esm/rewards/index.js +0 -3
  101. package/dist/esm/rewards/package.json +0 -1
  102. package/dist/types/rewards/RewardsService.d.ts +0 -29
  103. package/dist/types/rewards/index.d.ts +0 -6
  104. /package/dist/cjs/{rewards/types.js → model/rewards.js} +0 -0
  105. /package/dist/esm/{rewards/types.js → model/rewards.js} +0 -0
@@ -0,0 +1,24 @@
1
+ import { ChainId } from "../../model/primitives.js";
2
+ import { DataResponse } from "../../model/response.js";
3
+ import { Reward } from "../../model/rewards.js";
4
+ import "../../model/index.js";
5
+ import { MultichainSDK } from "../../onchain/MultichainSDK.js";
6
+ import { MultichainConstruct } from "../../onchain/base/MultichainConstruct.js";
7
+ import "../../onchain/index.js";
8
+ import { IRewards, RewardsKeys } from "./types.js";
9
+ import { NamespaceOptions } from "../types.js";
10
+ import { Address } from "viem";
11
+ //#region src/sdk/rewards/RewardsNamespace.d.ts
12
+ /**
13
+ * {@inheritDoc IRewards}
14
+ **/
15
+ declare class RewardsNamespace extends MultichainConstruct implements IRewards {
16
+ #private;
17
+ constructor(onchain: MultichainSDK, keys: RewardsKeys | undefined, options: NamespaceOptions);
18
+ /**
19
+ * {@inheritDoc IRewards.list}
20
+ **/
21
+ list(wallet: Address, chainIds?: ChainId[]): Promise<DataResponse<Reward[]>>;
22
+ }
23
+ //#endregion
24
+ export { RewardsNamespace };
@@ -1,7 +1,7 @@
1
- import { ChainId } from "../model/primitives.js";
2
- import "../model/index.js";
1
+ import { ChainId } from "../../model/primitives.js";
2
+ import "../../model/index.js";
3
3
  import { BaseError } from "viem";
4
- //#region src/rewards/errors.d.ts
4
+ //#region src/sdk/rewards/errors.d.ts
5
5
  /**
6
6
  * Thrown when Merkl did not answer for a chain.
7
7
  *
@@ -1,8 +1,9 @@
1
- import { Token } from "../model/primitives.js";
2
- import "../model/index.js";
3
- import { MerklReward, RewardsSdk } from "./types.js";
1
+ import { Token } from "../../model/primitives.js";
2
+ import { MerklReward } from "../../model/rewards.js";
3
+ import "../../model/index.js";
4
+ import { RewardsSdk } from "./types.js";
4
5
  import { Address } from "viem";
5
- //#region src/rewards/helpers.d.ts
6
+ //#region src/sdk/rewards/helpers.d.ts
6
7
  /** A claimable amount of one token in one pool, before it is merged. */
7
8
  interface RewardPart {
8
9
  pool: Address;
@@ -0,0 +1,6 @@
1
+ import { IRewards, IRewardsByMode, RewardsKeys } from "./types.js";
2
+ import { MerklRequestFailedError, TurtleRequestFailedError } from "./errors.js";
3
+ import { MerkleXYZUserRewardsV4Response } from "./merkl-api.js";
4
+ import { RewardsNamespace } from "./RewardsNamespace.js";
5
+ import { TurtleWalletRewards } from "./turtle-api.js";
6
+ export { type IRewards, type IRewardsByMode, MerklRequestFailedError, type MerkleXYZUserRewardsV4Response, type RewardsKeys, RewardsNamespace, TurtleRequestFailedError, type TurtleWalletRewards };
@@ -1,7 +1,7 @@
1
- import { ChainId } from "../model/primitives.js";
2
- import "../model/index.js";
1
+ import { ChainId } from "../../model/primitives.js";
2
+ import "../../model/index.js";
3
3
  import { Address } from "viem";
4
- //#region src/rewards/merkl-api.d.ts
4
+ //#region src/sdk/rewards/merkl-api.d.ts
5
5
  interface MerkleXYZUserRewardsV4 {
6
6
  chain: MerkleXYZChain;
7
7
  rewards: Array<{
@@ -1,6 +1,8 @@
1
- import { MerklReward, RewardsSdk } from "./types.js";
1
+ import { MerklReward } from "../../model/rewards.js";
2
+ import "../../model/index.js";
3
+ import { RewardsSdk } from "./types.js";
2
4
  import { MerkleXYZUserRewardsV4Response } from "./merkl-api.js";
3
- //#region src/rewards/toMerklRewards.d.ts
5
+ //#region src/sdk/rewards/toMerklRewards.d.ts
4
6
  /**
5
7
  * Merkl's answer for one chain, one reward per pool and incentive token.
6
8
  * A breakdown Merkl cannot be read from is skipped rather than thrown on: it
@@ -1,6 +1,8 @@
1
- import { Reward, RewardsSdk } from "./types.js";
1
+ import { Reward } from "../../model/rewards.js";
2
+ import "../../model/index.js";
3
+ import { RewardsSdk } from "./types.js";
2
4
  import { TurtleWalletRewards } from "./turtle-api.js";
3
- //#region src/rewards/toTurtleRewards.d.ts
5
+ //#region src/sdk/rewards/toTurtleRewards.d.ts
4
6
  /**
5
7
  * The streams targeting a pool on the SDK's chain, merged per pool and
6
8
  * incentive. A token reward is what is committed and not yet claimed.
@@ -1,7 +1,7 @@
1
- import { OnchainSDK } from "../onchain/OnchainSDK.js";
2
- import "../onchain/index.js";
1
+ import { OnchainSDK } from "../../onchain/OnchainSDK.js";
2
+ import "../../onchain/index.js";
3
3
  import { Address } from "viem";
4
- //#region src/rewards/turtle-api.d.ts
4
+ //#region src/sdk/rewards/turtle-api.d.ts
5
5
  interface TurtleWalletStream {
6
6
  streamId: string;
7
7
  snapshots: Array<{
@@ -0,0 +1,35 @@
1
+ import { ChainId } from "../../model/primitives.js";
2
+ import { DataResponse } from "../../model/response.js";
3
+ import { Reward } from "../../model/rewards.js";
4
+ import "../../model/index.js";
5
+ import { OnchainSDK } from "../../onchain/OnchainSDK.js";
6
+ import "../../onchain/index.js";
7
+ import { Address } from "viem";
8
+ //#region src/sdk/rewards/types.d.ts
9
+ /**
10
+ * Claimable Merkl and Turtle rewards.
11
+ **/
12
+ interface IRewards {
13
+ /**
14
+ * Claimable rewards of `wallet`; a chain errors only when every source failed on it.
15
+ **/
16
+ list(wallet: Address, chainIds?: ChainId[]): Promise<DataResponse<Reward[]>>;
17
+ }
18
+ /**
19
+ * `sdk.rewards` per mode: absent when the SDK reads no chain.
20
+ **/
21
+ interface IRewardsByMode {
22
+ onchain: IRewards;
23
+ offchain: undefined;
24
+ both: IRewards;
25
+ }
26
+ interface RewardsKeys {
27
+ /** Raises Merkl's rate limit; the keyless path answers too. */
28
+ merklApiKey?: string;
29
+ /** Turtle is skipped without one: its API answers no keyless request. */
30
+ turtleApiKey?: string;
31
+ }
32
+ /** What the mapping needs off a chain's SDK, and nothing asynchronous. */
33
+ type RewardsSdk = Pick<OnchainSDK, "chainId" | "marketRegister" | "tokensMeta">;
34
+ //#endregion
35
+ export { IRewards, IRewardsByMode, RewardsKeys, RewardsSdk };
@@ -14,6 +14,7 @@ import { ILiquidationsByMode } from "./liquidations/types.js";
14
14
  import { IOpportunities } from "./opportunities/types.js";
15
15
  import { IPositions } from "./positions/types.js";
16
16
  import { IPreviewByMode } from "./preview/types.js";
17
+ import { IRewardsByMode, RewardsKeys } from "./rewards/types.js";
17
18
  //#region src/sdk/types.d.ts
18
19
  /**
19
20
  * Which sources a {@link GearboxSDK} reads from, and therefore which of its
@@ -74,6 +75,10 @@ interface GearboxSDKOptions<M extends Mode = Mode> {
74
75
  * builds the on-chain source itself.
75
76
  **/
76
77
  attach?: MultichainAttachOptions;
78
+ /**
79
+ * API keys for {@link IGearboxSDK.rewards}.
80
+ **/
81
+ rewards?: RewardsKeys;
77
82
  logger?: ILogger;
78
83
  }
79
84
  /**
@@ -170,6 +175,10 @@ interface IGearboxSDK<M extends Mode = Mode> {
170
175
  * `offchain` mode.
171
176
  **/
172
177
  readonly preview: IPreviewByMode[M];
178
+ /**
179
+ * Namespace for claimable rewards. Absent in `offchain` mode.
180
+ **/
181
+ readonly rewards: IRewardsByMode[M];
173
182
  /**
174
183
  * The banners the backend attaches to a pool opportunity or a strategy
175
184
  * position, see {@link Notice}. Absent in `onchain` mode.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "17.8.0",
3
+ "version": "17.10.0",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -58,11 +58,6 @@
58
58
  "types": "./dist/types/permissionless/index.d.ts",
59
59
  "import": "./dist/esm/permissionless/index.js",
60
60
  "default": "./dist/cjs/permissionless/index.js"
61
- },
62
- "./rewards": {
63
- "types": "./dist/types/rewards/index.d.ts",
64
- "import": "./dist/esm/rewards/index.js",
65
- "default": "./dist/cjs/rewards/index.js"
66
61
  }
67
62
  },
68
63
  "files": [
@@ -1,48 +0,0 @@
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_rewards_merkl_api = require("./merkl-api.js");
5
- const require_rewards_toMerklRewards = require("./toMerklRewards.js");
6
- const require_rewards_toTurtleRewards = require("./toTurtleRewards.js");
7
- const require_rewards_turtle_api = require("./turtle-api.js");
8
- let viem = require("viem");
9
- //#region src/rewards/RewardsService.ts
10
- var RewardsService = class extends require_onchain_base_MultichainConstruct.MultichainConstruct {
11
- #keys;
12
- constructor(sdk, keys = {}) {
13
- super(sdk);
14
- this.#keys = keys;
15
- }
16
- /**
17
- * Every claimable reward a wallet holds — Merkl campaigns and the Gearbox
18
- * organisation's Turtle streams — across the chains the handle carries.
19
- * A chain is `status: "error"` only when every source failed on it; a chain
20
- * with nothing to claim is a `"success"` with no rewards.
21
- **/
22
- async list(wallet, chainIds) {
23
- const { merklApiKey, turtleApiKey } = this.#keys;
24
- const user = (0, viem.getAddress)(wallet);
25
- const turtle = turtleApiKey ? require_rewards_turtle_api.fetchTurtleWalletRewards(user, turtleApiKey) : void 0;
26
- turtle?.catch(() => {});
27
- return this.queryChains({
28
- chainIds,
29
- label: "list rewards",
30
- block: "state",
31
- run: async (sdk) => {
32
- const sources = [require_rewards_merkl_api.fetchMerklUserRewards({
33
- chainId: sdk.chainId,
34
- user,
35
- apiKey: merklApiKey
36
- }).then((response) => require_rewards_toMerklRewards.toMerklRewards(sdk, response))];
37
- if (turtle) sources.push(turtle.then(async (rewards) => require_rewards_toTurtleRewards.toTurtleRewards(sdk, rewards, await require_rewards_turtle_api.readTurtleClaimed(sdk, user, rewards))));
38
- const settled = await Promise.allSettled(sources);
39
- const failed = settled.flatMap((r) => r.status === "rejected" ? [r.reason] : []);
40
- if (failed.length === settled.length) throw failed.length === 1 ? failed[0] : new AggregateError(failed, "no rewards source answered");
41
- for (const reason of failed) (sdk.logger ?? this.sdk.logger)?.warn(reason, `rewards source failed on chain ${sdk.chainId}`);
42
- return settled.flatMap((r) => r.status === "fulfilled" ? r.value : []);
43
- }
44
- });
45
- }
46
- };
47
- //#endregion
48
- exports.RewardsService = RewardsService;
@@ -1,6 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_rewards_errors = require("./errors.js");
3
- const require_rewards_RewardsService = require("./RewardsService.js");
4
- exports.MerklRequestFailedError = require_rewards_errors.MerklRequestFailedError;
5
- exports.RewardsService = require_rewards_RewardsService.RewardsService;
6
- exports.TurtleRequestFailedError = require_rewards_errors.TurtleRequestFailedError;
@@ -1 +0,0 @@
1
- {"type": "commonjs"}
@@ -1,3 +0,0 @@
1
- import { MerklRequestFailedError, TurtleRequestFailedError } from "./errors.js";
2
- import { RewardsService } from "./RewardsService.js";
3
- export { MerklRequestFailedError, RewardsService, TurtleRequestFailedError };
@@ -1 +0,0 @@
1
- {"type": "module","sideEffects":false}
@@ -1,29 +0,0 @@
1
- import { ChainId } from "../model/primitives.js";
2
- import { DataResponse } from "../model/response.js";
3
- import "../model/index.js";
4
- import { PluginsMap } from "../onchain/plugins/types.js";
5
- import { MultichainSDK } from "../onchain/MultichainSDK.js";
6
- import { MultichainConstruct } from "../onchain/base/MultichainConstruct.js";
7
- import "../onchain/index.js";
8
- import { Reward } from "./types.js";
9
- import { Address } from "viem";
10
- //#region src/rewards/RewardsService.d.ts
11
- interface RewardsServiceKeys {
12
- /** Raises Merkl's rate limit; the keyless path answers too. */
13
- merklApiKey?: string;
14
- /** Turtle is skipped without one: its API answers no keyless request. */
15
- turtleApiKey?: string;
16
- }
17
- declare class RewardsService<const Plugins extends PluginsMap = {}> extends MultichainConstruct<Plugins> {
18
- #private;
19
- constructor(sdk: MultichainSDK<Plugins>, keys?: RewardsServiceKeys);
20
- /**
21
- * Every claimable reward a wallet holds — Merkl campaigns and the Gearbox
22
- * organisation's Turtle streams — across the chains the handle carries.
23
- * A chain is `status: "error"` only when every source failed on it; a chain
24
- * with nothing to claim is a `"success"` with no rewards.
25
- **/
26
- list(wallet: Address, chainIds?: ChainId[]): Promise<DataResponse<Reward[]>>;
27
- }
28
- //#endregion
29
- export { RewardsService };
@@ -1,6 +0,0 @@
1
- import { MerklReward, PointsReward, Reward } from "./types.js";
2
- import { RewardsService } from "./RewardsService.js";
3
- import { MerklRequestFailedError, TurtleRequestFailedError } from "./errors.js";
4
- import { MerkleXYZUserRewardsV4Response } from "./merkl-api.js";
5
- import { TurtleWalletRewards } from "./turtle-api.js";
6
- export { MerklRequestFailedError, type MerklReward, type MerkleXYZUserRewardsV4Response, type PointsReward, type Reward, RewardsService, TurtleRequestFailedError, type TurtleWalletRewards };
File without changes
File without changes