@gearbox-protocol/sdk 17.1.0-next.2 → 17.1.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 (79) hide show
  1. package/dist/cjs/onchain/MultichainSDK.js +2 -27
  2. package/dist/cjs/onchain/OnchainSDK.js +5 -6
  3. package/dist/cjs/onchain/accounts/intents/borrow.js +47 -20
  4. package/dist/cjs/onchain/accounts/intents/guards.js +6 -4
  5. package/dist/cjs/onchain/accounts/intents/index.js +40 -9
  6. package/dist/cjs/onchain/accounts/intents/open-strategy.js +49 -17
  7. package/dist/cjs/onchain/accounts/intents/realize.js +55 -24
  8. package/dist/cjs/onchain/index.js +0 -5
  9. package/dist/cjs/onchain/market/credit/CreditSuite.js +6 -5
  10. package/dist/cjs/onchain/market/index.js +0 -5
  11. package/dist/cjs/onchain/market/pricefeeds/feeds/RedstonePriceFeed.js +1 -7
  12. package/dist/cjs/onchain/market/pricefeeds/index.js +0 -5
  13. package/dist/cjs/onchain/market/pricefeeds/updates/UpdatablePriceFeedRegistry.js +5 -5
  14. package/dist/cjs/onchain/market/pricefeeds/updates/index.js +0 -5
  15. package/dist/cjs/onchain/options.js +1 -7
  16. package/dist/cjs/permissionless/index.js +1 -5
  17. package/dist/cjs/permissionless/utils/index.js +1 -5
  18. package/dist/cjs/permissionless/utils/price-update/get-price-update-tx.js +5 -0
  19. package/dist/cjs/permissionless/utils/price-update/get-updatable-feeds.js +6 -4
  20. package/dist/cjs/permissionless/utils/price-update/index.js +1 -5
  21. package/dist/cjs/sdk/prepare/PrepareApi.js +83 -32
  22. package/dist/esm/onchain/MultichainSDK.js +2 -27
  23. package/dist/esm/onchain/OnchainSDK.js +5 -6
  24. package/dist/esm/onchain/accounts/intents/borrow.js +47 -20
  25. package/dist/esm/onchain/accounts/intents/guards.js +6 -4
  26. package/dist/esm/onchain/accounts/intents/index.js +40 -9
  27. package/dist/esm/onchain/accounts/intents/open-strategy.js +49 -17
  28. package/dist/esm/onchain/accounts/intents/realize.js +55 -24
  29. package/dist/esm/onchain/index.js +1 -3
  30. package/dist/esm/onchain/market/credit/CreditSuite.js +6 -5
  31. package/dist/esm/onchain/market/index.js +1 -3
  32. package/dist/esm/onchain/market/pricefeeds/feeds/RedstonePriceFeed.js +1 -7
  33. package/dist/esm/onchain/market/pricefeeds/index.js +1 -3
  34. package/dist/esm/onchain/market/pricefeeds/updates/UpdatablePriceFeedRegistry.js +5 -5
  35. package/dist/esm/onchain/market/pricefeeds/updates/index.js +1 -3
  36. package/dist/esm/onchain/options.js +1 -7
  37. package/dist/esm/permissionless/index.js +2 -3
  38. package/dist/esm/permissionless/utils/index.js +2 -3
  39. package/dist/esm/permissionless/utils/price-update/get-price-update-tx.js +5 -0
  40. package/dist/esm/permissionless/utils/price-update/get-updatable-feeds.js +6 -4
  41. package/dist/esm/permissionless/utils/price-update/index.js +2 -3
  42. package/dist/esm/sdk/prepare/PrepareApi.js +83 -32
  43. package/dist/types/onchain/MultichainSDK.d.ts +0 -10
  44. package/dist/types/onchain/OnchainSDK.d.ts +0 -10
  45. package/dist/types/onchain/accounts/index.d.ts +2 -2
  46. package/dist/types/onchain/accounts/intents/borrow.d.ts +5 -0
  47. package/dist/types/onchain/accounts/intents/guards.d.ts +6 -4
  48. package/dist/types/onchain/accounts/intents/index.d.ts +4 -4
  49. package/dist/types/onchain/accounts/intents/open-strategy.d.ts +5 -0
  50. package/dist/types/onchain/accounts/intents/realize.d.ts +5 -0
  51. package/dist/types/onchain/accounts/intents/types.d.ts +49 -6
  52. package/dist/types/onchain/index.d.ts +4 -6
  53. package/dist/types/onchain/market/credit/CreditSuite.d.ts +10 -0
  54. package/dist/types/onchain/market/index.d.ts +3 -5
  55. package/dist/types/onchain/market/pricefeeds/feeds/RedstonePriceFeed.d.ts +1 -4
  56. package/dist/types/onchain/market/pricefeeds/index.d.ts +3 -5
  57. package/dist/types/onchain/market/pricefeeds/updates/UpdatablePriceFeedRegistry.d.ts +4 -4
  58. package/dist/types/onchain/market/pricefeeds/updates/index.d.ts +3 -5
  59. package/dist/types/onchain/market/pricefeeds/updates/types.d.ts +2 -16
  60. package/dist/types/onchain/options.d.ts +0 -7
  61. package/dist/types/permissionless/index.d.ts +2 -3
  62. package/dist/types/permissionless/utils/index.d.ts +2 -3
  63. package/dist/types/permissionless/utils/price-update/get-price-update-tx.d.ts +5 -0
  64. package/dist/types/permissionless/utils/price-update/get-updatable-feeds.d.ts +9 -3
  65. package/dist/types/permissionless/utils/price-update/index.d.ts +2 -3
  66. package/dist/types/sdk/index.d.ts +2 -2
  67. package/dist/types/sdk/prepare/PrepareApi.d.ts +16 -14
  68. package/dist/types/sdk/prepare/index.d.ts +2 -2
  69. package/dist/types/sdk/prepare/types.d.ts +21 -14
  70. package/package.json +1 -5
  71. package/dist/cjs/onchain/market/pricefeeds/updates/RedstoneUpdater.js +0 -193
  72. package/dist/cjs/onchain/market/pricefeeds/updates/fetchRedstonePayloads.js +0 -95
  73. package/dist/cjs/permissionless/utils/price-update/get-price-feeds.js +0 -60
  74. package/dist/esm/onchain/market/pricefeeds/updates/RedstoneUpdater.js +0 -191
  75. package/dist/esm/onchain/market/pricefeeds/updates/fetchRedstonePayloads.js +0 -94
  76. package/dist/esm/permissionless/utils/price-update/get-price-feeds.js +0 -57
  77. package/dist/types/onchain/market/pricefeeds/updates/RedstoneUpdater.d.ts +0 -37
  78. package/dist/types/onchain/market/pricefeeds/updates/fetchRedstonePayloads.d.ts +0 -62
  79. package/dist/types/permissionless/utils/price-update/get-price-feeds.d.ts +0 -22
@@ -17,6 +17,7 @@ var RedstonePriceFeedContract = class extends require_onchain_market_pricefeeds_
17
17
  constructor(options, args) {
18
18
  super(options, {
19
19
  ...args,
20
+ updatable: false,
20
21
  name: "RedstonePriceFeed",
21
22
  abi: require_onchain_abi_oracles.redstonePriceFeedAbi
22
23
  });
@@ -70,13 +71,6 @@ var RedstonePriceFeedContract = class extends require_onchain_market_pricefeeds_
70
71
  lastPayloadTimestamp: this.lastPayloadTimestamp.toString()
71
72
  };
72
73
  }
73
- createPriceUpdateTx(data) {
74
- return this.createRawTx({
75
- functionName: "updatePrice",
76
- args: [data],
77
- description: `updating redstone price for ${this.dataId} [${this.labelAddress(this.address)}]`
78
- });
79
- }
80
74
  };
81
75
  //#endregion
82
76
  exports.RedstonePriceFeedContract = RedstonePriceFeedContract;
@@ -22,11 +22,9 @@ const require_onchain_market_pricefeeds_feeds_ZeroPriceFeed = require("./feeds/Z
22
22
  require("./feeds/index.js");
23
23
  const require_onchain_market_pricefeeds_PriceFeedRegistry = require("./PriceFeedRegistry.js");
24
24
  require("./types.js");
25
- const require_onchain_market_pricefeeds_updates_fetchRedstonePayloads = require("./updates/fetchRedstonePayloads.js");
26
25
  const require_onchain_market_pricefeeds_updates_getRawPriceUpdates = require("./updates/getRawPriceUpdates.js");
27
26
  const require_onchain_market_pricefeeds_updates_isUpdatablePriceFeed = require("./updates/isUpdatablePriceFeed.js");
28
27
  const require_onchain_market_pricefeeds_updates_PriceUpdatesCache = require("./updates/PriceUpdatesCache.js");
29
- const require_onchain_market_pricefeeds_updates_RedstoneUpdater = require("./updates/RedstoneUpdater.js");
30
28
  const require_onchain_market_pricefeeds_updates_updatableDependencies = require("./updates/updatableDependencies.js");
31
29
  const require_onchain_market_pricefeeds_updates_UpdatablePriceFeedRegistry = require("./updates/UpdatablePriceFeedRegistry.js");
32
30
  require("./updates/index.js");
@@ -49,14 +47,11 @@ exports.PriceFeedRef = require_onchain_market_pricefeeds_PriceFeedRef.PriceFeedR
49
47
  exports.PriceFeedRegistry = require_onchain_market_pricefeeds_PriceFeedRegistry.PriceFeedRegistry;
50
48
  exports.PriceUpdatesCache = require_onchain_market_pricefeeds_updates_PriceUpdatesCache.PriceUpdatesCache;
51
49
  exports.PythPriceFeed = require_onchain_market_pricefeeds_feeds_PythPriceFeed.PythPriceFeed;
52
- exports.RedstoneOptions = require_onchain_market_pricefeeds_updates_RedstoneUpdater.RedstoneOptions;
53
50
  exports.RedstonePriceFeedContract = require_onchain_market_pricefeeds_feeds_RedstonePriceFeed.RedstonePriceFeedContract;
54
- exports.RedstoneUpdater = require_onchain_market_pricefeeds_updates_RedstoneUpdater.RedstoneUpdater;
55
51
  exports.UpdatablePriceFeedRegistry = require_onchain_market_pricefeeds_updates_UpdatablePriceFeedRegistry.UpdatablePriceFeedRegistry;
56
52
  exports.WstETHPriceFeedContract = require_onchain_market_pricefeeds_feeds_WstETHPriceFeed.WstETHPriceFeedContract;
57
53
  exports.YearnPriceFeedContract = require_onchain_market_pricefeeds_feeds_YearnPriceFeed.YearnPriceFeedContract;
58
54
  exports.ZeroPriceFeedContract = require_onchain_market_pricefeeds_feeds_ZeroPriceFeed.ZeroPriceFeedContract;
59
- exports.fetchRedstonePayloads = require_onchain_market_pricefeeds_updates_fetchRedstonePayloads.fetchRedstonePayloads;
60
55
  exports.getRawPriceUpdates = require_onchain_market_pricefeeds_updates_getRawPriceUpdates.getRawPriceUpdates;
61
56
  exports.isLPPriceFeed = require_onchain_market_pricefeeds_AbstractLPPriceFeed.isLPPriceFeed;
62
57
  exports.isUpdatablePriceFeed = require_onchain_market_pricefeeds_updates_isUpdatablePriceFeed.isUpdatablePriceFeed;
@@ -9,23 +9,22 @@ const require_abi_compressors_priceFeedCompressor = require("../../../../abi/com
9
9
  const require_onchain_market_pricefeeds_PriceFeedRegistry = require("../PriceFeedRegistry.js");
10
10
  const require_onchain_market_pricefeeds_updates_getRawPriceUpdates = require("./getRawPriceUpdates.js");
11
11
  const require_onchain_market_pricefeeds_updates_isUpdatablePriceFeed = require("./isUpdatablePriceFeed.js");
12
- const require_onchain_market_pricefeeds_updates_RedstoneUpdater = require("./RedstoneUpdater.js");
13
12
  const require_onchain_utils_internal_Hooks = require("../../../utils/internal/Hooks.js");
14
13
  require("../../../utils/internal/index.js");
15
14
  const require_onchain_market_pricefeeds_updates_updatableDependencies = require("./updatableDependencies.js");
16
15
  let viem = require("viem");
17
16
  //#region src/onchain/market/pricefeeds/updates/UpdatablePriceFeedRegistry.ts
18
17
  /**
19
- * {@link PriceFeedRegistry} that also orchestrates off-chain price updates
20
- * (Redstone, etc.).
18
+ * @deprecated Support for updatable price feeds is deprecated.
19
+ * {@link PriceFeedRegistry} that also orchestrates off-chain price updates.
21
20
  **/
22
21
  var UpdatablePriceFeedRegistry = class extends require_onchain_market_pricefeeds_PriceFeedRegistry.PriceFeedRegistry {
23
22
  #hooks = new require_onchain_utils_internal_Hooks.Hooks();
24
23
  #updaters;
25
24
  #latestUpdate;
26
- constructor(sdk, opts = {}) {
25
+ constructor(sdk) {
27
26
  super(sdk);
28
- this.#updaters = [new require_onchain_market_pricefeeds_updates_RedstoneUpdater.RedstoneUpdater(sdk, opts.redstone)];
27
+ this.#updaters = [];
29
28
  }
30
29
  /**
31
30
  * @internal
@@ -122,6 +121,7 @@ var UpdatablePriceFeedRegistry = class extends require_onchain_market_pricefeeds
122
121
  * Discovered price feeds are not saved anywhere in PriceFeedRegistry, and can later be used to load price feed updates
123
122
  */
124
123
  async getPartialUpdatablePriceFeeds(configurators) {
124
+ if (this.#updaters.length === 0) return [];
125
125
  const [priceFeedCompressorAddress] = this.sdk.addressProvider.mustGetLatest(require_onchain_constants_address_provider.AP_PRICE_FEED_COMPRESSOR, require_onchain_constants_versions.VERSION_RANGE_310);
126
126
  this.logger?.debug({ configurators }, `calling getUpdatablePriceFeeds in block ${this.sdk.currentBlock}`);
127
127
  const result = await this.client.readContract({
@@ -1,16 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_onchain_market_pricefeeds_updates_fetchRedstonePayloads = require("./fetchRedstonePayloads.js");
3
2
  const require_onchain_market_pricefeeds_updates_getRawPriceUpdates = require("./getRawPriceUpdates.js");
4
3
  const require_onchain_market_pricefeeds_updates_isUpdatablePriceFeed = require("./isUpdatablePriceFeed.js");
5
4
  const require_onchain_market_pricefeeds_updates_PriceUpdatesCache = require("./PriceUpdatesCache.js");
6
- const require_onchain_market_pricefeeds_updates_RedstoneUpdater = require("./RedstoneUpdater.js");
7
5
  const require_onchain_market_pricefeeds_updates_updatableDependencies = require("./updatableDependencies.js");
8
6
  const require_onchain_market_pricefeeds_updates_UpdatablePriceFeedRegistry = require("./UpdatablePriceFeedRegistry.js");
9
7
  exports.PriceUpdatesCache = require_onchain_market_pricefeeds_updates_PriceUpdatesCache.PriceUpdatesCache;
10
- exports.RedstoneOptions = require_onchain_market_pricefeeds_updates_RedstoneUpdater.RedstoneOptions;
11
- exports.RedstoneUpdater = require_onchain_market_pricefeeds_updates_RedstoneUpdater.RedstoneUpdater;
12
8
  exports.UpdatablePriceFeedRegistry = require_onchain_market_pricefeeds_updates_UpdatablePriceFeedRegistry.UpdatablePriceFeedRegistry;
13
- exports.fetchRedstonePayloads = require_onchain_market_pricefeeds_updates_fetchRedstonePayloads.fetchRedstonePayloads;
14
9
  exports.getRawPriceUpdates = require_onchain_market_pricefeeds_updates_getRawPriceUpdates.getRawPriceUpdates;
15
10
  exports.isUpdatablePriceFeed = require_onchain_market_pricefeeds_updates_isUpdatablePriceFeed.isUpdatablePriceFeed;
16
11
  exports.updatableDependencies = require_onchain_market_pricefeeds_updates_updatableDependencies.updatableDependencies;
@@ -1,8 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_onchain_utils_zod = require("./utils/zod.js");
3
3
  require("./utils/index.js");
4
- const require_onchain_market_pricefeeds_updates_RedstoneUpdater = require("./market/pricefeeds/updates/RedstoneUpdater.js");
5
- require("./market/pricefeeds/updates/index.js");
6
4
  let zod_v4 = require("zod/v4");
7
5
  //#region src/onchain/options.ts
8
6
  /**
@@ -57,11 +55,7 @@ const attachOptionsSchema = zod_v4.z.object({
57
55
  /**
58
56
  * Pool addresses whose markets should be skipped.
59
57
  **/
60
- ignoreMarkets: zod_v4.z.array(require_onchain_utils_zod.ZodAddress()).optional(),
61
- /**
62
- * Options for Redstone price-feed updates.
63
- **/
64
- redstone: require_onchain_market_pricefeeds_updates_RedstoneUpdater.RedstoneOptions.optional()
58
+ ignoreMarkets: zod_v4.z.array(require_onchain_utils_zod.ZodAddress()).optional()
65
59
  });
66
60
  //#endregion
67
61
  exports.attachOptionsSchema = attachOptionsSchema;
@@ -29,10 +29,9 @@ const require_permissionless_utils_abi_encoder = require("./utils/abi-encoder.js
29
29
  const require_permissionless_utils_block_utils = require("./utils/block-utils.js");
30
30
  const require_permissionless_utils_governance_batch = require("./utils/governance/batch.js");
31
31
  const require_permissionless_utils_governance_timelock_txs = require("./utils/governance/timelock-txs.js");
32
- const require_permissionless_utils_price_update_get_updatable_feeds = require("./utils/price-update/get-updatable-feeds.js");
33
- const require_permissionless_utils_price_update_get_price_feeds = require("./utils/price-update/get-price-feeds.js");
34
32
  const require_permissionless_utils_price_update_get_price_update_tx = require("./utils/price-update/get-price-update-tx.js");
35
33
  const require_permissionless_utils_price_update_get_prices = require("./utils/price-update/get-prices.js");
34
+ const require_permissionless_utils_price_update_get_updatable_feeds = require("./utils/price-update/get-updatable-feeds.js");
36
35
  require("./utils/index.js");
37
36
  exports.AccessMode = require_permissionless_bindings_types.AccessMode;
38
37
  exports.AddressProviderContract = require_permissionless_bindings_address_provider.AddressProviderContract;
@@ -77,9 +76,6 @@ exports.encodeFunctionParams = require_permissionless_utils_abi_encoder.encodeFu
77
76
  exports.formatBytecodeSize = require_permissionless_utils_format.formatBytecodeSize;
78
77
  exports.formatBytecodeVersion = require_permissionless_utils_format.formatBytecodeVersion;
79
78
  exports.getBlockNumberByTimestamp = require_permissionless_utils_block_utils.getBlockNumberByTimestamp;
80
- exports.getCallTouchedPriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallTouchedPriceFeeds;
81
- exports.getCallsTouchedPriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallsTouchedPriceFeeds;
82
- exports.getCallsTouchedUpdatablePriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallsTouchedUpdatablePriceFeeds;
83
79
  exports.getCreate2AddressPublicFactory = require_permissionless_utils_create2.getCreate2AddressPublicFactory;
84
80
  exports.getCreate2DeploymentAddress = require_permissionless_utils_create2.getCreate2DeploymentAddress;
85
81
  exports.getPriceUpdateTx = require_permissionless_utils_price_update_get_price_update_tx.getPriceUpdateTx;
@@ -8,10 +8,9 @@ const require_permissionless_utils_block_utils = require("./block-utils.js");
8
8
  const require_permissionless_utils_governance_batch = require("./governance/batch.js");
9
9
  const require_permissionless_utils_governance_timelock_txs = require("./governance/timelock-txs.js");
10
10
  require("./governance/index.js");
11
- const require_permissionless_utils_price_update_get_updatable_feeds = require("./price-update/get-updatable-feeds.js");
12
- const require_permissionless_utils_price_update_get_price_feeds = require("./price-update/get-price-feeds.js");
13
11
  const require_permissionless_utils_price_update_get_price_update_tx = require("./price-update/get-price-update-tx.js");
14
12
  const require_permissionless_utils_price_update_get_prices = require("./price-update/get-prices.js");
13
+ const require_permissionless_utils_price_update_get_updatable_feeds = require("./price-update/get-updatable-feeds.js");
15
14
  require("./price-update/index.js");
16
15
  exports.BYTECODE_REPOSITORY = require_permissionless_utils_literals.BYTECODE_REPOSITORY;
17
16
  exports.CROSS_CHAIN_GOVERNANCE = require_permissionless_utils_literals.CROSS_CHAIN_GOVERNANCE;
@@ -34,9 +33,6 @@ exports.encodeFunctionParams = require_permissionless_utils_abi_encoder.encodeFu
34
33
  exports.formatBytecodeSize = require_permissionless_utils_format.formatBytecodeSize;
35
34
  exports.formatBytecodeVersion = require_permissionless_utils_format.formatBytecodeVersion;
36
35
  exports.getBlockNumberByTimestamp = require_permissionless_utils_block_utils.getBlockNumberByTimestamp;
37
- exports.getCallTouchedPriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallTouchedPriceFeeds;
38
- exports.getCallsTouchedPriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallsTouchedPriceFeeds;
39
- exports.getCallsTouchedUpdatablePriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallsTouchedUpdatablePriceFeeds;
40
36
  exports.getCreate2AddressPublicFactory = require_permissionless_utils_create2.getCreate2AddressPublicFactory;
41
37
  exports.getCreate2DeploymentAddress = require_permissionless_utils_create2.getCreate2DeploymentAddress;
42
38
  exports.getPriceUpdateTx = require_permissionless_utils_price_update_get_price_update_tx.getPriceUpdateTx;
@@ -8,6 +8,11 @@ const require_permissionless_bindings_price_feed_store = require("../../bindings
8
8
  require("../../bindings/index.js");
9
9
  let viem = require("viem");
10
10
  //#region src/permissionless/utils/price-update/get-price-update-tx.ts
11
+ /**
12
+ * @deprecated Support for updatable price feeds is deprecated.
13
+ * @param param0
14
+ * @returns
15
+ */
11
16
  async function getPriceUpdateTx({ client, priceFeeds, useMulticall3 = false, gasLimit }) {
12
17
  const pfStore = new require_permissionless_bindings_price_feed_store.PriceFeedStoreContract("0x74A868AC479EE145029bB80827BB77F7B7c441cB", client);
13
18
  const gearboxClient = client;
@@ -1,17 +1,19 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_onchain_utils_bytes32ToString = require("../../../onchain/utils/bytes32ToString.js");
3
2
  const require_abi_compressors_priceFeedCompressor = require("../../../abi/compressors/priceFeedCompressor.js");
4
- const require_onchain_market_pricefeeds_feeds_RedstonePriceFeed = require("../../../onchain/market/pricefeeds/feeds/RedstonePriceFeed.js");
5
- require("../../../onchain/index.js");
6
3
  let viem = require("viem");
7
4
  //#region src/permissionless/utils/price-update/get-updatable-feeds.ts
5
+ /**
6
+ * @deprecated Support for updatable price feeds is deprecated.
7
+ * @param args
8
+ * @returns
9
+ */
8
10
  async function getUpdatablePriceFeeds(args) {
9
11
  const { sdk, client, pfCompressor, priceFeeds } = args;
10
12
  return (await (0, viem.getContract)({
11
13
  address: pfCompressor,
12
14
  abi: require_abi_compressors_priceFeedCompressor.priceFeedCompressorAbi,
13
15
  client
14
- }).read.loadPriceFeedTree([priceFeeds])).filter((data) => require_onchain_utils_bytes32ToString.bytes32ToString(data.baseParams.contractType) === "PRICE_FEED::REDSTONE").map((data) => new require_onchain_market_pricefeeds_feeds_RedstonePriceFeed.RedstonePriceFeedContract(sdk, data));
16
+ }).read.loadPriceFeedTree([priceFeeds])).filter((data) => data.updatable).map((data) => sdk.priceFeeds.create(data));
15
17
  }
16
18
  //#endregion
17
19
  exports.getUpdatablePriceFeeds = getUpdatablePriceFeeds;
@@ -1,11 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_permissionless_utils_price_update_get_updatable_feeds = require("./get-updatable-feeds.js");
3
- const require_permissionless_utils_price_update_get_price_feeds = require("./get-price-feeds.js");
4
2
  const require_permissionless_utils_price_update_get_price_update_tx = require("./get-price-update-tx.js");
5
3
  const require_permissionless_utils_price_update_get_prices = require("./get-prices.js");
6
- exports.getCallTouchedPriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallTouchedPriceFeeds;
7
- exports.getCallsTouchedPriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallsTouchedPriceFeeds;
8
- exports.getCallsTouchedUpdatablePriceFeeds = require_permissionless_utils_price_update_get_price_feeds.getCallsTouchedUpdatablePriceFeeds;
4
+ const require_permissionless_utils_price_update_get_updatable_feeds = require("./get-updatable-feeds.js");
9
5
  exports.getPriceUpdateTx = require_permissionless_utils_price_update_get_price_update_tx.getPriceUpdateTx;
10
6
  exports.getPrices = require_permissionless_utils_price_update_get_prices.getPrices;
11
7
  exports.getUpdatablePriceFeeds = require_permissionless_utils_price_update_get_updatable_feeds.getUpdatablePriceFeeds;
@@ -51,48 +51,53 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
51
51
  * {@inheritDoc IOpportunitiesPrepare.finalize}
52
52
  **/
53
53
  async finalize(position, params) {
54
+ const state = {};
54
55
  try {
55
56
  const sdk = await this.#chain(position.chainId);
56
57
  const at = stateBlock(sdk);
57
58
  const intent = resumable(params.intent ?? params.claimable.intent);
58
- if (!intent) return require_model_result.sdkErr(require_model_errors_prepare_errors.noRecordedIntent());
59
+ if (!intent) return refused(require_model_errors_prepare_errors.noRecordedIntent(), state);
59
60
  const creditAccount = await slice(sdk, position.creditAccount);
60
- if (!creditAccount) return require_model_result.sdkErr(require_model_errors_prepare_errors.creditAccountNotFound(position.creditAccount));
61
+ if (!creditAccount) return refused(require_model_errors_prepare_errors.creditAccountNotFound(position.creditAccount), state);
61
62
  return finalized(await service(sdk).finishIntent({
62
63
  intent,
63
64
  claimable: toClaimableWithdrawal(params.claimable),
64
65
  creditAccount,
65
66
  sdk,
66
67
  slippage: params.slippage,
67
- quotaReserve: params.quotaReserve
68
+ quotaReserve: params.quotaReserve,
69
+ draft: state
68
70
  }), at);
69
71
  } catch (e) {
70
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unexpectedFailure(e));
72
+ return refused(require_model_errors_prepare_errors.unexpectedFailure(e), state);
71
73
  }
72
74
  }
73
75
  /**
74
76
  * {@inheritDoc IOpportunitiesPrepare.deposit}
75
77
  **/
76
78
  async deposit(pool, params) {
79
+ const draft = {};
77
80
  try {
78
81
  const chain = await this.#chain(pool.chainId);
79
82
  const { marketRegister, pools } = chain;
83
+ draft.curator = marketRegister.findByPool(pool.pool).curator;
80
84
  const tokenIn = params.tokenIn ?? marketRegister.findByPool(pool.pool).pool.underlying;
81
85
  const tokenOut = lpRoute(params.tokenOut, () => pools.getDepositTokensOut(pool.pool, tokenIn));
82
- if (!tokenOut) return unroutable(chain, tokenIn, void 0);
86
+ if (!tokenOut) return unroutable(chain, tokenIn, void 0, draft);
83
87
  const state = pools.simulateDeposit({
84
88
  pool: pool.pool,
85
89
  amount: params.amount,
86
90
  tokenIn,
87
91
  tokenOut
88
92
  });
93
+ Object.assign(draft, state);
89
94
  const [refusal] = require_onchain_validation_bundles_checkPoolOperation.checkPoolOperation({
90
95
  sdk: chain,
91
96
  pool: pool.pool,
92
97
  isDeposit: true,
93
98
  tokenOut: state.tokenOut
94
99
  });
95
- if (refusal) return require_model_result.sdkErr(refusal);
100
+ if (refusal) return refused(refusal, draft);
96
101
  const call = pools.addLiquidity({
97
102
  collateral: {
98
103
  token: state.tokenIn.token.address,
@@ -102,7 +107,7 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
102
107
  wallet: params.wallet,
103
108
  meta: pools.getDepositMetadata(pool.pool, tokenIn, tokenOut)
104
109
  });
105
- if (!call) return unroutable(chain, tokenIn, tokenOut);
110
+ if (!call) return unroutable(chain, tokenIn, tokenOut, draft);
106
111
  return require_model_result.sdkOk({
107
112
  operations: [],
108
113
  state: await lpState(chain, pool.pool, params.wallet, state, { mints: state.tokenOut.value }),
@@ -110,32 +115,35 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
110
115
  ...stateBlock(chain)
111
116
  });
112
117
  } catch (e) {
113
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unexpectedFailure(e));
118
+ return refused(require_model_errors_prepare_errors.unexpectedFailure(e), draft);
114
119
  }
115
120
  }
116
121
  /**
117
122
  * {@inheritDoc IOpportunitiesPrepare.withdraw}
118
123
  **/
119
124
  async withdraw(pool, params) {
125
+ const draft = {};
120
126
  try {
121
127
  const chain = await this.#chain(pool.chainId);
122
128
  const { pools } = chain;
129
+ draft.curator = chain.marketRegister.findByPool(pool.pool).curator;
123
130
  const tokenIn = params.tokenIn ?? pool.pool;
124
131
  const tokenOut = lpRoute(params.tokenOut, () => pools.getWithdrawalTokensOut(pool.pool, tokenIn));
125
- if (!tokenOut) return unroutable(chain, tokenIn, void 0);
132
+ if (!tokenOut) return unroutable(chain, tokenIn, void 0, draft);
126
133
  const state = pools.simulateWithdraw({
127
134
  pool: pool.pool,
128
135
  amount: params.amount,
129
136
  tokenIn,
130
137
  tokenOut
131
138
  });
139
+ Object.assign(draft, state);
132
140
  const [refusal] = require_onchain_validation_bundles_checkPoolOperation.checkPoolOperation({
133
141
  sdk: chain,
134
142
  pool: pool.pool,
135
143
  isDeposit: false,
136
144
  tokenOut: state.tokenOut
137
145
  });
138
- if (refusal) return require_model_result.sdkErr(refusal);
146
+ if (refusal) return refused(refusal, draft);
139
147
  const { calls } = pools.removeLiquidity({
140
148
  pool: pool.pool,
141
149
  amount: params.amount,
@@ -151,32 +159,35 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
151
159
  ...stateBlock(chain)
152
160
  });
153
161
  } catch (e) {
154
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unexpectedFailure(e));
162
+ return refused(require_model_errors_prepare_errors.unexpectedFailure(e), draft);
155
163
  }
156
164
  }
157
165
  /**
158
166
  * {@inheritDoc IOpportunitiesPrepare.redeem}
159
167
  **/
160
168
  async redeem(pool, params) {
169
+ const draft = {};
161
170
  try {
162
171
  const chain = await this.#chain(pool.chainId);
163
172
  const { pools } = chain;
173
+ draft.curator = chain.marketRegister.findByPool(pool.pool).curator;
164
174
  const tokenIn = params.tokenIn ?? pool.pool;
165
175
  const tokenOut = lpRoute(params.tokenOut, () => pools.getWithdrawalTokensOut(pool.pool, tokenIn));
166
- if (!tokenOut) return unroutable(chain, tokenIn, void 0);
176
+ if (!tokenOut) return unroutable(chain, tokenIn, void 0, draft);
167
177
  const state = pools.simulateRedeem({
168
178
  pool: pool.pool,
169
179
  amount: params.amount,
170
180
  tokenIn,
171
181
  tokenOut
172
182
  });
183
+ Object.assign(draft, state);
173
184
  const [refusal] = require_onchain_validation_bundles_checkPoolOperation.checkPoolOperation({
174
185
  sdk: chain,
175
186
  pool: pool.pool,
176
187
  isDeposit: false,
177
188
  tokenOut: state.tokenOut
178
189
  });
179
- if (refusal) return require_model_result.sdkErr(refusal);
190
+ if (refusal) return refused(refusal, draft);
180
191
  const { calls } = pools.removeLiquidity({
181
192
  pool: pool.pool,
182
193
  amount: params.amount,
@@ -192,7 +203,7 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
192
203
  ...stateBlock(chain)
193
204
  });
194
205
  } catch (e) {
195
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unexpectedFailure(e));
206
+ return refused(require_model_errors_prepare_errors.unexpectedFailure(e), draft);
196
207
  }
197
208
  }
198
209
  /**
@@ -215,13 +226,15 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
215
226
  * {@inheritDoc IOpportunitiesPrepare.openNewStrategy}
216
227
  **/
217
228
  async openNewStrategy(strategy, params) {
229
+ const state = {};
218
230
  try {
219
231
  const sdk = await this.#chain(strategy.chainId);
220
232
  const at = stateBlock(sdk);
233
+ Object.assign(state, marketOf(sdk, strategy.creditManager));
221
234
  const targetToken = params.targetToken ?? sdk.marketRegister.findCreditManager(strategy.creditManager).strategyTargetCollateral;
222
- if (!targetToken) return require_model_result.sdkErr(require_model_errors_prepare_errors.noStrategyTargetCollateral(strategy.creditManager));
235
+ if (!targetToken) return refused(require_model_errors_prepare_errors.noStrategyTargetCollateral(strategy.creditManager), state);
223
236
  const reused = await reusable(sdk, strategy, params.creditAccount);
224
- if (reused && "error" in reused) return reused;
237
+ if (reused && "error" in reused) return refused(reused.error, state);
225
238
  const creditAccount = reused?.account;
226
239
  return opened(await service(sdk).openStrategyIntent({
227
240
  sdk,
@@ -232,21 +245,24 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
232
245
  leftoverBalances: params.leftoverBalances,
233
246
  slippage: params.slippage,
234
247
  quotaReserve: params.quotaReserve,
235
- creditAccount
248
+ creditAccount,
249
+ draft: state
236
250
  }), at);
237
251
  } catch (e) {
238
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unexpectedFailure(e));
252
+ return refused(require_model_errors_prepare_errors.unexpectedFailure(e), state);
239
253
  }
240
254
  }
241
255
  /**
242
256
  * {@inheritDoc IOpportunitiesPrepare.borrow}
243
257
  **/
244
258
  async borrow(strategy, params) {
259
+ const state = {};
245
260
  try {
246
261
  const sdk = await this.#chain(strategy.chainId);
247
262
  const at = stateBlock(sdk);
263
+ Object.assign(state, marketOf(sdk, strategy.creditManager));
248
264
  const reused = await reusable(sdk, strategy, params.creditAccount);
249
- if (reused && "error" in reused) return reused;
265
+ if (reused && "error" in reused) return refused(reused.error, state);
250
266
  return borrowed(await service(sdk).borrowIntent({
251
267
  sdk,
252
268
  creditManager: strategy.creditManager,
@@ -256,10 +272,11 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
256
272
  borrowAmount: params.borrowAmount,
257
273
  slippage: params.slippage,
258
274
  quotaReserve: params.quotaReserve,
259
- creditAccount: reused?.account
275
+ creditAccount: reused?.account,
276
+ draft: state
260
277
  }), at);
261
278
  } catch (e) {
262
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unexpectedFailure(e));
279
+ return refused(require_model_errors_prepare_errors.unexpectedFailure(e), state);
263
280
  }
264
281
  }
265
282
  /**
@@ -419,20 +436,22 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
419
436
  * ones, per the engine trace its signature spells out.
420
437
  **/
421
438
  async #startRoutes(position, options, intent) {
439
+ const state = {};
422
440
  try {
423
441
  const sdk = await this.#chain(position.chainId);
424
442
  const at = stateBlock(sdk);
425
443
  const creditAccount = await slice(sdk, position.creditAccount);
426
- if (!creditAccount) return neitherRoute(require_model_errors_prepare_errors.creditAccountNotFound(position.creditAccount));
444
+ if (!creditAccount) return neitherRoute(require_model_errors_prepare_errors.creditAccountNotFound(position.creditAccount), state);
427
445
  return routed(await service(sdk).intentRoutes({
428
446
  intent,
429
447
  creditAccount,
430
448
  sdk,
431
449
  slippage: options.slippage,
432
- quotaReserve: options.quotaReserve
450
+ quotaReserve: options.quotaReserve,
451
+ draft: state
433
452
  }), at);
434
453
  } catch (e) {
435
- return neitherRoute(require_model_errors_prepare_errors.unexpectedFailure(e));
454
+ return neitherRoute(require_model_errors_prepare_errors.unexpectedFailure(e), state);
436
455
  }
437
456
  }
438
457
  /**
@@ -445,20 +464,22 @@ var PrepareApi = class extends require_onchain_base_MultichainConstruct.Multicha
445
464
  * ones, per the engine trace its signature spells out.
446
465
  **/
447
466
  async #startIntent(position, options, intent) {
467
+ const state = {};
448
468
  try {
449
469
  const sdk = await this.#chain(position.chainId);
450
470
  const at = stateBlock(sdk);
451
471
  const creditAccount = await slice(sdk, position.creditAccount);
452
- if (!creditAccount) return require_model_result.sdkErr(require_model_errors_prepare_errors.creditAccountNotFound(position.creditAccount));
472
+ if (!creditAccount) return refused(require_model_errors_prepare_errors.creditAccountNotFound(position.creditAccount), state);
453
473
  return planned(await service(sdk).startIntent({
454
474
  intent,
455
475
  creditAccount,
456
476
  sdk,
457
477
  slippage: options.slippage,
458
- quotaReserve: options.quotaReserve
478
+ quotaReserve: options.quotaReserve,
479
+ draft: state
459
480
  }), at);
460
481
  } catch (e) {
461
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unexpectedFailure(e));
482
+ return refused(require_model_errors_prepare_errors.unexpectedFailure(e), state);
462
483
  }
463
484
  }
464
485
  };
@@ -546,14 +567,44 @@ function methodError(result) {
546
567
  return result;
547
568
  }
548
569
  /**
570
+ * An error the namespace decides on itself, carrying as much of the state as
571
+ * it can say — nothing at all where it stopped before there was a market to
572
+ * name, see {@link WithPartialState}.
573
+ *
574
+ * The engine attaches its own draft on the way out, so this is only for what
575
+ * is raised on this side of it: a chain that would not resolve, an account the
576
+ * markets do not hold, a pool pair with no route.
577
+ **/
578
+ function refused(error, state) {
579
+ return require_model_result.sdkErr({
580
+ ...error,
581
+ state
582
+ });
583
+ }
584
+ /**
585
+ * The market fields of a request that names its credit manager, for what is
586
+ * turned down before the engine has been reached at all.
587
+ *
588
+ * Empty where the SDK holds no such manager, which is itself one of those
589
+ * answers.
590
+ **/
591
+ function marketOf(sdk, creditManager) {
592
+ try {
593
+ return sdk.marketRegister.findCreditManager(creditManager).creditOperationMarket();
594
+ } catch {
595
+ return {};
596
+ }
597
+ }
598
+ /**
549
599
  * A flow with two routes, stopped before either could be quoted: the error is
550
600
  * the same one any other flow would report, with nothing to say about the
551
601
  * routes because neither was reached.
552
602
  **/
553
- function neitherRoute(error) {
603
+ function neitherRoute(error, state) {
554
604
  return require_model_result.sdkErr({
555
605
  ...error,
556
- errors: {}
606
+ errors: {},
607
+ state
557
608
  });
558
609
  }
559
610
  /**
@@ -672,11 +723,11 @@ async function lpState(sdk, pool, wallet, simulation, moved) {
672
723
  * is the usual way of it; both are present where a pair exists but nothing of
673
724
  * ours implements it.
674
725
  **/
675
- function unroutable(sdk, from, to) {
676
- return require_model_result.sdkErr(require_model_errors_prepare_errors.unsupportedTokenPair({
726
+ function unroutable(sdk, from, to, state) {
727
+ return refused(require_model_errors_prepare_errors.unsupportedTokenPair({
677
728
  from: require_onchain_validation_helpers_token.toToken(sdk, from),
678
729
  to: to === void 0 ? void 0 : require_onchain_validation_helpers_token.toToken(sdk, to)
679
- }));
730
+ }), state);
680
731
  }
681
732
  /**
682
733
  * Picks the route the operation takes out of `tokenIn`, as a value rather than
@@ -1,7 +1,5 @@
1
1
  import { getNetworkType } from "./chain/chains.js";
2
2
  import { ChainNotConfiguredError, SdkMissingChainStateError, SdkStateVersionMismatchError, SdkSyncFailedError } from "./core/errors.js";
3
- import { PriceUpdatesCache } from "./market/pricefeeds/updates/PriceUpdatesCache.js";
4
- import "./market/pricefeeds/updates/index.js";
5
3
  import { MultichainLiquidationsService } from "./accounts/liquidations/MultichainLiquidationsService.js";
6
4
  import "./accounts/index.js";
7
5
  import "./core/index.js";
@@ -18,7 +16,6 @@ import { OnchainSDK } from "./OnchainSDK.js";
18
16
  **/
19
17
  var MultichainSDK = class {
20
18
  #chains;
21
- #redstoneCache;
22
19
  #logger;
23
20
  /**
24
21
  * Namespace for liquidatable credit accounts discovery across all
@@ -60,20 +57,9 @@ var MultichainSDK = class {
60
57
  * @param options - Shared and per-chain attach options.
61
58
  */
62
59
  async attach(options) {
63
- if (options?.redstone) this.#redstoneCache = new PriceUpdatesCache({
64
- ttl: options.redstone.cacheTTL ?? 225e3,
65
- historical: !!options.redstone.historicTimestamp
66
- });
67
60
  await Promise.all([...this.#chains.entries()].map(([network, sdk]) => {
68
61
  const perChainOpts = options?.perChain?.[network] ?? {};
69
- return sdk.attach({
70
- ...perChainOpts,
71
- redstone: {
72
- ...options?.redstone,
73
- cache: this.#redstoneCache,
74
- ...perChainOpts.redstone
75
- }
76
- });
62
+ return sdk.attach(perChainOpts);
77
63
  }));
78
64
  this.#logger?.info("Attached all chains");
79
65
  }
@@ -88,10 +74,6 @@ var MultichainSDK = class {
88
74
  */
89
75
  hydrate(state, options) {
90
76
  if (state.version !== 2) throw new SdkStateVersionMismatchError(2, state.version);
91
- if (options?.redstone) this.#redstoneCache = new PriceUpdatesCache({
92
- ttl: options.redstone.cacheTTL ?? 225e3,
93
- historical: !!options.redstone.historicTimestamp
94
- });
95
77
  const stateByNetwork = new Map(state.chains.map((cs) => [cs.network, cs]));
96
78
  for (const [network, sdk] of this.#chains) {
97
79
  const chainState = stateByNetwork.get(network);
@@ -100,14 +82,7 @@ var MultichainSDK = class {
100
82
  throw new SdkMissingChainStateError(network);
101
83
  }
102
84
  const perChainOpts = options?.perChain?.[network] ?? {};
103
- sdk.hydrate(chainState, {
104
- ...perChainOpts,
105
- redstone: {
106
- ...options?.redstone,
107
- cache: this.#redstoneCache,
108
- ...perChainOpts.redstone
109
- }
110
- });
85
+ sdk.hydrate(chainState, perChainOpts);
111
86
  }
112
87
  this.#logger?.info("Hydrated all chains");
113
88
  }