@gearbox-protocol/sdk 14.12.0-next.77 → 14.12.0-next.78

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 (88) hide show
  1. package/dist/cjs/model/primitives.schema.js +5 -4
  2. package/dist/cjs/preview/index.js +0 -1
  3. package/dist/cjs/preview/preview/buildDelayedPreview.js +4 -3
  4. package/dist/cjs/preview/preview/index.js +0 -1
  5. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +3 -2
  6. package/dist/cjs/preview/preview/types.js +0 -16
  7. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +12 -38
  8. package/dist/cjs/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +1 -1
  9. package/dist/cjs/sdk/index.js +3 -0
  10. package/dist/cjs/sdk/market/credit/CreditFacadeV310Contract.js +10 -0
  11. package/dist/cjs/sdk/market/credit/expectedBalanceDeltas.js +25 -0
  12. package/dist/cjs/sdk/market/credit/index.js +2 -0
  13. package/dist/cjs/sdk/market/index.js +2 -0
  14. package/dist/cjs/sdk/utils/index.js +1 -0
  15. package/dist/cjs/sdk/utils/zod.js +36 -14
  16. package/dist/esm/dev/AccountOpener.js +1 -1
  17. package/dist/esm/dev/withdrawalUtils.js +1 -1
  18. package/dist/esm/model/primitives.schema.js +6 -5
  19. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +1 -1
  20. package/dist/esm/preview/index.js +2 -2
  21. package/dist/esm/preview/preview/buildDelayedPreview.js +5 -4
  22. package/dist/esm/preview/preview/index.js +2 -2
  23. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +4 -3
  24. package/dist/esm/preview/preview/types.js +1 -16
  25. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  26. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  27. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +14 -40
  28. package/dist/esm/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +1 -1
  29. package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +1 -1
  30. package/dist/esm/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  31. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  32. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  33. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  34. package/dist/esm/sdk/base/TokensMeta.js +2 -2
  35. package/dist/esm/sdk/chain/detectNetwork.js +1 -1
  36. package/dist/esm/sdk/core/createAddressProvider.js +1 -1
  37. package/dist/esm/sdk/index.js +3 -2
  38. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +1 -1
  39. package/dist/esm/sdk/market/credit/CreditFacadeV310Contract.js +10 -0
  40. package/dist/esm/sdk/market/credit/expectedBalanceDeltas.js +24 -0
  41. package/dist/esm/sdk/market/credit/index.js +2 -1
  42. package/dist/esm/sdk/market/index.js +2 -1
  43. package/dist/esm/sdk/market/pool/PoolV310Contract.js +1 -1
  44. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +1 -1
  45. package/dist/esm/sdk/market/zapper/ZapperContract.js +1 -1
  46. package/dist/esm/sdk/pools/PoolService.js +1 -1
  47. package/dist/esm/sdk/utils/index.js +2 -2
  48. package/dist/esm/sdk/utils/viem/simulateWithPriceUpdates.js +1 -1
  49. package/dist/esm/sdk/utils/zod.js +36 -15
  50. package/dist/types/dev/AccountOpener.d.ts +1 -1
  51. package/dist/types/model/curators.schema.d.ts +1 -1
  52. package/dist/types/model/history.schema.d.ts +6 -6
  53. package/dist/types/model/liquidations.schema.d.ts +47 -47
  54. package/dist/types/model/opportunities.schema.d.ts +101 -101
  55. package/dist/types/model/positions.schema.d.ts +92 -92
  56. package/dist/types/model/primitives.d.ts +1 -0
  57. package/dist/types/model/primitives.schema.d.ts +9 -8
  58. package/dist/types/preview/index.d.ts +2 -2
  59. package/dist/types/preview/preview/index.d.ts +2 -2
  60. package/dist/types/preview/preview/types.d.ts +1 -16
  61. package/dist/types/sdk/OnchainSDK.d.ts +3 -3
  62. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +8 -7
  63. package/dist/types/sdk/accounts/bots/types.d.ts +1 -1
  64. package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressor.d.ts +1 -1
  65. package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressorV310Contract.d.ts +1 -1
  66. package/dist/types/sdk/accounts/index.d.ts +2 -2
  67. package/dist/types/sdk/accounts/intents/operations/repay-credit-account/index.d.ts +1 -2
  68. package/dist/types/sdk/accounts/types.d.ts +8 -78
  69. package/dist/types/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.d.ts +1 -1
  70. package/dist/types/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.d.ts +1 -1
  71. package/dist/types/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.d.ts +1 -1
  72. package/dist/types/sdk/base/index.d.ts +2 -2
  73. package/dist/types/sdk/base/types.d.ts +42 -1
  74. package/dist/types/sdk/index.d.ts +25 -24
  75. package/dist/types/sdk/market/credit/CreditFacadeV310Contract.d.ts +6 -3
  76. package/dist/types/sdk/market/credit/CreditSuite.d.ts +2 -2
  77. package/dist/types/sdk/market/credit/expectedBalanceDeltas.d.ts +39 -0
  78. package/dist/types/sdk/market/credit/index.d.ts +3 -2
  79. package/dist/types/sdk/market/credit/types.d.ts +26 -3
  80. package/dist/types/sdk/market/index.d.ts +4 -3
  81. package/dist/types/sdk/market/rwa/index.d.ts +2 -2
  82. package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +1 -2
  83. package/dist/types/sdk/market/rwa/types.d.ts +11 -2
  84. package/dist/types/sdk/options.d.ts +4 -4
  85. package/dist/types/sdk/pools/types.d.ts +1 -12
  86. package/dist/types/sdk/utils/index.d.ts +2 -2
  87. package/dist/types/sdk/utils/zod.d.ts +7 -3
  88. package/package.json +1 -1
@@ -1,3 +1,5 @@
1
+ import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
2
+ import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
1
3
  import { AP_REWARDS_COMPRESSOR } from "../constants/address-provider.js";
2
4
  import { ADDRESS_0X0 } from "../constants/addresses.js";
3
5
  import { MAX_UINT256 } from "../constants/math.js";
@@ -8,8 +10,8 @@ import "../base/index.js";
8
10
  import { AccountBotsService } from "./bots/AccountBotsService.js";
9
11
  import "./bots/index.js";
10
12
  import { rewardsCompressorAbi } from "../../abi/compressors/rewardsCompressor.js";
11
- import { iBaseRewardPoolAbi } from "../../abi/iBaseRewardPool.js";
12
- import { ierc4626AdapterAbi } from "../../abi/ierc4626Adapter.js";
13
+ import { expectedBalanceDeltas } from "../market/credit/expectedBalanceDeltas.js";
14
+ import "../market/index.js";
13
15
  import { CreditAccountCompressor } from "./credit-account-compressor/CreditAccountCompressor.js";
14
16
  import "./credit-account-compressor/index.js";
15
17
  import { extractPriceUpdates, extractQuotaTokens, mergePriceUpdates } from "./multicall-utils.js";
@@ -173,49 +175,21 @@ var CreditAccountsServiceV310 = class extends SDKConstruct {
173
175
  * {@inheritDoc ICreditAccountsService.assembleStartDelayedWithdrawalCalls}
174
176
  **/
175
177
  assembleStartDelayedWithdrawalCalls({ creditFacade, preview }) {
176
- const record = preview.outputs.reduce((acc, o) => {
177
- const token = o.token.toLowerCase();
178
- acc[token] = (acc[token] || 0n) + o.amount;
179
- return acc;
180
- }, {});
181
- const deltas = Object.entries(record).filter(([, a]) => a > 10n).map(([token, amount]) => ({
182
- token,
183
- amount: amount > 10n ? amount - 10n : 0n
184
- }));
185
- if (preview.amountIn > 0n) deltas.push({
186
- token: preview.token,
187
- amount: -preview.amountIn
188
- });
189
- const facade = this.sdk.marketRegister.findCreditFacade(creditFacade);
190
- return [
191
- facade.prepareStoreExpectedBalances(deltas),
192
- ...preview.requestCalls,
193
- facade.prepareCompareBalances()
194
- ];
178
+ return this.sdk.marketRegister.findCreditFacade(creditFacade).prepareWithBalanceCheck(expectedBalanceDeltas({
179
+ outputs: preview.outputs,
180
+ spentToken: preview.token,
181
+ spentAmount: preview.amountIn
182
+ }), preview.requestCalls);
195
183
  }
196
184
  /**
197
185
  * {@inheritDoc ICreditAccountsService.assembleClaimDelayedCalls}
198
186
  **/
199
187
  assembleClaimDelayedCalls({ creditFacade, claimableNow }) {
200
- const record = claimableNow.outputs.reduce((acc, o) => {
201
- const token = o.token.toLowerCase();
202
- acc[token] = (acc[token] || 0n) + o.amount;
203
- return acc;
204
- }, {});
205
- const deltas = Object.entries(record).filter(([, a]) => a > 10n).map(([token, amount]) => ({
206
- token,
207
- amount: amount > 10n ? amount - 10n : 0n
208
- }));
209
- if (claimableNow.withdrawalTokenSpent > 0n) deltas.push({
210
- token: claimableNow.withdrawalPhantomToken,
211
- amount: -claimableNow.withdrawalTokenSpent
212
- });
213
- const facade = this.sdk.marketRegister.findCreditFacade(creditFacade);
214
- return [
215
- facade.prepareStoreExpectedBalances(deltas),
216
- ...claimableNow.claimCalls,
217
- facade.prepareCompareBalances()
218
- ];
188
+ return this.sdk.marketRegister.findCreditFacade(creditFacade).prepareWithBalanceCheck(expectedBalanceDeltas({
189
+ outputs: claimableNow.outputs,
190
+ spentToken: claimableNow.withdrawalPhantomToken,
191
+ spentAmount: claimableNow.withdrawalTokenSpent
192
+ }), claimableNow.claimCalls);
219
193
  }
220
194
  /**
221
195
  * {@inheritDoc ICreditAccountsService.getApprovalAddress}
@@ -9,12 +9,12 @@ import { hexEq } from "../../utils/hex.js";
9
9
  import "../../utils/index.js";
10
10
  import { SDKConstruct } from "../../base/SDKConstruct.js";
11
11
  import "../../base/index.js";
12
- import { iRWAFactoryAbi } from "../../../abi/rwa/iRWAFactory.js";
13
12
  import { borrowApyBps, healthFactorBps, positionLeverage, usdToNumber } from "../../market/math.js";
14
13
  import { dominantCollateral } from "../../market/credit/dominantCollateral.js";
15
14
  import { simulateWithPriceUpdates } from "../../utils/viem/simulateWithPriceUpdates.js";
16
15
  import "../../utils/viem/index.js";
17
16
  import "../../market/index.js";
17
+ import { iRWAFactoryAbi } from "../../../abi/rwa/iRWAFactory.js";
18
18
  import { CreditAccountCompressorV310Contract } from "./CreditAccountCompressorV310Contract.js";
19
19
  //#region src/sdk/accounts/credit-account-compressor/CreditAccountCompressor.ts
20
20
  /**
@@ -1,3 +1,4 @@
1
+ import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
1
2
  import { AddressSet } from "../../utils/AddressSet.js";
2
3
  import { bytes32ToString } from "../../utils/bytes32ToString.js";
3
4
  import { ADDRESS_0X0 } from "../../constants/addresses.js";
@@ -19,7 +20,6 @@ import { SecuritizeLiquidatorContract } from "../../market/rwa/securitize/Securi
19
20
  import "../../market/rwa/securitize/index.js";
20
21
  import "../../market/index.js";
21
22
  import { LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./constants.js";
22
- import { iLiquidationCompressorV313Abi } from "../../../abi/ILiquidationCompressorV313.js";
23
23
  //#region src/sdk/accounts/liquidations/LiquidationsService.ts
24
24
  /**
25
25
  * Service for discovering liquidatable credit accounts and previewing manual
@@ -1,7 +1,7 @@
1
+ import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
1
2
  import { BaseContract } from "../../base/BaseContract.js";
2
3
  import "../../base/index.js";
3
4
  import { decodeDelayedIntent } from "./intent-codec.js";
4
- import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
5
5
  import { InvalidDelayedIntentError } from "./errors.js";
6
6
  //#region src/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.ts
7
7
  const abi = iRedemptionLoggerV310Abi;
@@ -1,5 +1,5 @@
1
- import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
1
  import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
2
+ import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
3
3
  //#region src/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.ts
4
4
  const abi = iWithdrawalCompressorV310Abi;
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
1
  import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
2
+ import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
3
3
  //#region src/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.ts
4
4
  const abi = iWithdrawalCompressorV311Abi;
5
5
  /**
@@ -1,6 +1,6 @@
1
+ import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
1
2
  import { encodeDelayedIntent } from "./intent-codec.js";
2
3
  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/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.ts
6
6
  const abi = iWithdrawalCompressorV313Abi;
@@ -1,11 +1,11 @@
1
+ import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
2
+ import { iVersionAbi } from "../../abi/iVersion.js";
1
3
  import { AddressMap } from "../utils/AddressMap.js";
2
4
  import { AddressSet } from "../utils/AddressSet.js";
3
5
  import { bytes32ToString } from "../utils/bytes32ToString.js";
4
6
  import { getAssetType } from "../chain/chains.js";
5
7
  import { formatBN } from "../utils/formatter.js";
6
8
  import "../utils/index.js";
7
- import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
8
- import { iVersionAbi } from "../../abi/iVersion.js";
9
9
  //#region src/sdk/base/TokensMeta.ts
10
10
  /**
11
11
  * Registry of token metadata (symbol, decimals, phantom type) keyed by address.
@@ -1,5 +1,5 @@
1
- import { chains } from "./chains.js";
2
1
  import { ierc20Abi } from "../../abi/iERC20.js";
2
+ import { chains } from "./chains.js";
3
3
  //#region src/sdk/chain/detectNetwork.ts
4
4
  /**
5
5
  * Detects the network type from the given client.
@@ -1,8 +1,8 @@
1
+ import { iVersionAbi } from "../../abi/iVersion.js";
1
2
  import { AP_MARKET_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR } from "../constants/address-provider.js";
2
3
  import { isV310 } from "../constants/versions.js";
3
4
  import "../constants/index.js";
4
5
  import { hexEq } from "../utils/hex.js";
5
- import { iVersionAbi } from "../../abi/iVersion.js";
6
6
  import { AddressProviderV310Contract } from "./AddressProviderV310Contract.js";
7
7
  //#region src/sdk/core/createAddressProvider.ts
8
8
  const OVERRIDE_ADDRESSES = { Mainnet: {
@@ -26,7 +26,7 @@ import { fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage,
26
26
  import { hexEq } from "./utils/hex.js";
27
27
  import { retry } from "./utils/retry.js";
28
28
  import { toAddress } from "./utils/toAddress.js";
29
- import { ZodAddress, ZodHex } from "./utils/zod.js";
29
+ import { ZodAddress, ZodBigInt, ZodHex } from "./utils/zod.js";
30
30
  import "./utils/index.js";
31
31
  import { generateCastTraceCall, getCastTraceArgs } from "./utils/viem/cast.js";
32
32
  import { SimulationError, simulateCall } from "./utils/viem/simulateCall.js";
@@ -53,6 +53,7 @@ import { PARTIAL_LIQUIDATION_BUFFER_BPS, additionalBorrowApyBps, borrowApyBps, h
53
53
  import { CreditManagerV310Contract } from "./market/credit/CreditManagerV310Contract.js";
54
54
  import { dominantCollateral, mustGetDominantCollateral } from "./market/credit/dominantCollateral.js";
55
55
  import { CreditSuite } from "./market/credit/CreditSuite.js";
56
+ import { expectedBalanceDeltas } from "./market/credit/expectedBalanceDeltas.js";
56
57
  import { simulateMulticall } from "./utils/viem/simulateMulticall.js";
57
58
  import { SimulateWithPriceUpdatesError, getSimulateWithPriceUpdatesError, simulateWithPriceUpdates } from "./utils/viem/simulateWithPriceUpdates.js";
58
59
  import { executeDelegatedMulticalls } from "./utils/viem/executeDelegatedMulticalls.js";
@@ -147,4 +148,4 @@ import { OnchainSDK, STATE_VERSION } from "./OnchainSDK.js";
147
148
  import { MultichainSDK } from "./MultichainSDK.js";
148
149
  import { attachOptionsSchema, onchainSDKOptionsSchema } from "./options.js";
149
150
  import "./types/index.js";
150
- export { ADDRESS_0X0, ADDRESS_PROVIDER_V310, AP_ACCOUNT_FACTORY, AP_ACL, AP_BOT_LIST, AP_BYTECODE_REPOSITORY, AP_CONTRACTS_REGISTER, AP_CONTROLLER_TIMELOCK, AP_CREDIT_ACCOUNT_COMPRESSOR, AP_CREDIT_SUITE_COMPRESSOR, AP_DATA_COMPRESSOR, AP_DELEVERAGE_BOT_HV, AP_DELEVERAGE_BOT_LV, AP_DELEVERAGE_BOT_PEGGED, AP_GAUGE_COMPRESSOR, AP_GEAR_STAKING, AP_GEAR_TOKEN, AP_INFLATION_ATTACK_BLOCKER, AP_INSOLVENCY_CHECKER, AP_MARKET_COMPRESSOR, AP_MARKET_CONFIGURATOR, AP_PARTIAL_LIQUIDATION_BOT, AP_PERIPHERY_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR, AP_PRICE_FEED_STORE, AP_PRICE_ORACLE, AP_REDEMPTION_LOGGER, AP_REWARDS_COMPRESSOR, AP_ROUTER, AP_RWA_COMPRESSOR, AP_TOKEN_COMPRESSOR, AP_TREASURY, AP_WETH_GATEWAY, AP_WETH_TOKEN, AP_ZAPPER_REGISTER, AP_ZERO_PRICE_FEED, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AbstractWithdrawalCompressorContract, AccountBotsService, AddressMap, AddressProviderV310Contract, AddressSet, AssetsMap, BLOCKS_PER_WEEK_BY_NETWORK, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BaseContract, BasePlugin, BigIntMath, BotPermissions, BoundedPriceFeedContract, ChainContractsRegister, ChainNotConfiguredError, CompositePriceFeedContract, Construct, ContractParseError, CreditAccountCompressor, CreditAccountCompressorV310Contract, CreditAccountOperationsService, CreditAccountsServiceV310, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, DUST_THRESHOLD, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InvalidDelayedIntentError, LEVERAGE_DECIMALS, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LinearInterestRateModelContract, LiquidationsService, MAX_INT, MAX_UINT16, MAX_UINT256, MIN_INT96, MULTICALL_ADDRESS, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, MissingSerializedParamsError, MultichainConstruct, MultichainLiquidationsService, MultichainOpportunitiesService, MultichainPositionsService, MultichainSDK, NATIVE_ADDRESS, NOT_DEPLOYED, NO_VERSION, NetworkType, OnchainSDK, OpportunitiesService, PARTIAL_LIQUIDATION_BUFFER_BPS, PERCENTAGE_DECIMALS, PERCENTAGE_FACTOR, PERCENTAGE_FACTOR_1KK, PERIPHERY_CONTRACTS, PHANTOM_TOKEN_CONTRACT_TYPES, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PRICE_DECIMALS, PRICE_DECIMALS_POW, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PeripheryCompressorV310Contract, PlaceholderAdapterContract, PlaceholderContract, PluginStateVersionError, PoolService, PoolSuite, PoolV310Contract, PositionsService, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RAMP_DURATION_BY_NETWORK, RAY, RAY_DECIMALS_POW, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, RedemptionLoggerV310Contract, RedstonePriceFeedContract, RouterV310Contract, SDKConstruct, SECONDS_PER_YEAR, SECURITIZE_REGISTER_VAULT_TYPES, SLIPPAGE_DECIMALS, STATE_VERSION, SUPPORTED_NETWORKS, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError, SecuritizeLiquidatorContract, SecuritizeRWAFactory, SimulateWithPriceUpdatesError, SimulationError, TokensMeta, TypedObjectUtils, UnsupportedZapperFunctionError, VERSION_RANGE_310, VotingContractStatus, WAD, WAD_DECIMALS_POW, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, ZodAddress, ZodHex, additionalBorrowApyBps, assetsMap, attachOptionsSchema, borrowApyBps, botPermissionsToString, bytes32ToString, chains, childLogger, createAdapter, createAddressProvider, createPriceOracle, createRawTx, createRedemptionLogger, createRouter, createWithdrawalCompressor, createZapper, abi as creditFacadeV310Abi, decodeDelayedIntent, detectNetwork, dominantCollateral, encodeDelayedIntent, estimateRawTxGas, etherscanApiUrl, etherscanUrl, executeDelegatedMulticalls, fetchPythPayloads, fetchRedstonePayloads, filterDust, filterDustUSD, findCuratorMarketConfigurator, fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, generateCastTraceCall, getAssetType, getCastTraceArgs, getChain, getCuratorName, getFunctionSignature, getNetworkType, getRawPriceUpdates, getSimulateWithPriceUpdatesError, getWithdrawalCompressorAddress, halfRAY, healthFactorBps, hexEq, hydrateAddressProvider, iCreditAccountAbi, isDust, isLPPriceFeed, isPublicNetwork, isRWAFactory, isRWAToken, isSunsetPool, isSunsetStrategy, isSupportedNetwork, isUpdatablePriceFeed, isV310, isVersionRange, json_parse, json_stringify, maxLeverage, minSeizedAmount, mustGetDominantCollateral, numberWithCommas, onchainSDKOptionsSchema, optimalHFForPartialLiquidation, optimalRepaidAmount, percentFmt, positionLeverage, primaryInstantOutput, rayToBps, rayToNumber, retry, sendRawTx, shortAddress, shortHash, simulateCall, simulateMulticall, simulateWithPriceUpdates, toAddress, toBN, toBigInt, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal, toSignificant, toWithdrawalStatus, usdToNumber, utilizationBps, watchBlocksAsync };
151
+ export { ADDRESS_0X0, ADDRESS_PROVIDER_V310, AP_ACCOUNT_FACTORY, AP_ACL, AP_BOT_LIST, AP_BYTECODE_REPOSITORY, AP_CONTRACTS_REGISTER, AP_CONTROLLER_TIMELOCK, AP_CREDIT_ACCOUNT_COMPRESSOR, AP_CREDIT_SUITE_COMPRESSOR, AP_DATA_COMPRESSOR, AP_DELEVERAGE_BOT_HV, AP_DELEVERAGE_BOT_LV, AP_DELEVERAGE_BOT_PEGGED, AP_GAUGE_COMPRESSOR, AP_GEAR_STAKING, AP_GEAR_TOKEN, AP_INFLATION_ATTACK_BLOCKER, AP_INSOLVENCY_CHECKER, AP_MARKET_COMPRESSOR, AP_MARKET_CONFIGURATOR, AP_PARTIAL_LIQUIDATION_BOT, AP_PERIPHERY_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR, AP_PRICE_FEED_STORE, AP_PRICE_ORACLE, AP_REDEMPTION_LOGGER, AP_REWARDS_COMPRESSOR, AP_ROUTER, AP_RWA_COMPRESSOR, AP_TOKEN_COMPRESSOR, AP_TREASURY, AP_WETH_GATEWAY, AP_WETH_TOKEN, AP_ZAPPER_REGISTER, AP_ZERO_PRICE_FEED, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AbstractWithdrawalCompressorContract, AccountBotsService, AddressMap, AddressProviderV310Contract, AddressSet, AssetsMap, BLOCKS_PER_WEEK_BY_NETWORK, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BaseContract, BasePlugin, BigIntMath, BotPermissions, BoundedPriceFeedContract, ChainContractsRegister, ChainNotConfiguredError, CompositePriceFeedContract, Construct, ContractParseError, CreditAccountCompressor, CreditAccountCompressorV310Contract, CreditAccountOperationsService, CreditAccountsServiceV310, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, DUST_THRESHOLD, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InvalidDelayedIntentError, LEVERAGE_DECIMALS, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LinearInterestRateModelContract, LiquidationsService, MAX_INT, MAX_UINT16, MAX_UINT256, MIN_INT96, MULTICALL_ADDRESS, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, MissingSerializedParamsError, MultichainConstruct, MultichainLiquidationsService, MultichainOpportunitiesService, MultichainPositionsService, MultichainSDK, NATIVE_ADDRESS, NOT_DEPLOYED, NO_VERSION, NetworkType, OnchainSDK, OpportunitiesService, PARTIAL_LIQUIDATION_BUFFER_BPS, PERCENTAGE_DECIMALS, PERCENTAGE_FACTOR, PERCENTAGE_FACTOR_1KK, PERIPHERY_CONTRACTS, PHANTOM_TOKEN_CONTRACT_TYPES, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PRICE_DECIMALS, PRICE_DECIMALS_POW, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PeripheryCompressorV310Contract, PlaceholderAdapterContract, PlaceholderContract, PluginStateVersionError, PoolService, PoolSuite, PoolV310Contract, PositionsService, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RAMP_DURATION_BY_NETWORK, RAY, RAY_DECIMALS_POW, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, RedemptionLoggerV310Contract, RedstonePriceFeedContract, RouterV310Contract, SDKConstruct, SECONDS_PER_YEAR, SECURITIZE_REGISTER_VAULT_TYPES, SLIPPAGE_DECIMALS, STATE_VERSION, SUPPORTED_NETWORKS, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError, SecuritizeLiquidatorContract, SecuritizeRWAFactory, SimulateWithPriceUpdatesError, SimulationError, TokensMeta, TypedObjectUtils, UnsupportedZapperFunctionError, VERSION_RANGE_310, VotingContractStatus, WAD, WAD_DECIMALS_POW, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, ZodAddress, ZodBigInt, ZodHex, additionalBorrowApyBps, assetsMap, attachOptionsSchema, borrowApyBps, botPermissionsToString, bytes32ToString, chains, childLogger, createAdapter, createAddressProvider, createPriceOracle, createRawTx, createRedemptionLogger, createRouter, createWithdrawalCompressor, createZapper, abi as creditFacadeV310Abi, decodeDelayedIntent, detectNetwork, dominantCollateral, encodeDelayedIntent, estimateRawTxGas, etherscanApiUrl, etherscanUrl, executeDelegatedMulticalls, expectedBalanceDeltas, fetchPythPayloads, fetchRedstonePayloads, filterDust, filterDustUSD, findCuratorMarketConfigurator, fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, generateCastTraceCall, getAssetType, getCastTraceArgs, getChain, getCuratorName, getFunctionSignature, getNetworkType, getRawPriceUpdates, getSimulateWithPriceUpdatesError, getWithdrawalCompressorAddress, halfRAY, healthFactorBps, hexEq, hydrateAddressProvider, iCreditAccountAbi, isDust, isLPPriceFeed, isPublicNetwork, isRWAFactory, isRWAToken, isSunsetPool, isSunsetStrategy, isSupportedNetwork, isUpdatablePriceFeed, isV310, isVersionRange, json_parse, json_stringify, maxLeverage, minSeizedAmount, mustGetDominantCollateral, numberWithCommas, onchainSDKOptionsSchema, optimalHFForPartialLiquidation, optimalRepaidAmount, percentFmt, positionLeverage, primaryInstantOutput, rayToBps, rayToNumber, retry, sendRawTx, shortAddress, shortHash, simulateCall, simulateMulticall, simulateWithPriceUpdates, toAddress, toBN, toBigInt, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal, toSignificant, toWithdrawalStatus, usdToNumber, utilizationBps, watchBlocksAsync };
@@ -1,7 +1,7 @@
1
+ import { iPausableAbi } from "../../../abi/iPausable.js";
1
2
  import { iCreditFacadeMulticallV310Abi, iCreditFacadeV310Abi } from "../../../abi/310/generated.js";
2
3
  import { BaseContract } from "../../base/BaseContract.js";
3
4
  import "../../base/index.js";
4
- import { iPausableAbi } from "../../../abi/iPausable.js";
5
5
  //#region src/sdk/market/credit/CreditFacadeV310BaseContract.ts
6
6
  const abi = [
7
7
  ...iCreditFacadeV310Abi,
@@ -288,6 +288,16 @@ var CreditFacadeV310Contract = class extends CreditFacadeV310BaseContract {
288
288
  })
289
289
  };
290
290
  }
291
+ /**
292
+ * {@inheritDoc ICreditFacadeContract.prepareWithBalanceCheck}
293
+ */
294
+ prepareWithBalanceCheck(deltas, calls) {
295
+ return [
296
+ this.prepareStoreExpectedBalances(deltas),
297
+ ...calls,
298
+ this.prepareCompareBalances()
299
+ ];
300
+ }
291
301
  };
292
302
  //#endregion
293
303
  export { CreditFacadeV310Contract };
@@ -0,0 +1,24 @@
1
+ import { AssetsMap } from "../../utils/AssetsMap.js";
2
+ import { DUST_THRESHOLD } from "../../constants/math.js";
3
+ import "../../constants/index.js";
4
+ import "../../utils/index.js";
5
+ //#region src/sdk/market/credit/expectedBalanceDeltas.ts
6
+ /**
7
+ * Builds the `storeExpectedBalances` deltas of a multicall from the amounts it
8
+ * is expected to produce and the token it spends.
9
+ */
10
+ function expectedBalanceDeltas({ outputs, spentToken, spentAmount }) {
11
+ const sums = new AssetsMap();
12
+ for (const { token, amount } of outputs) sums.inc(token, amount);
13
+ const deltas = sums.entries().filter(([, amount]) => amount > DUST_THRESHOLD).map(([token, amount]) => ({
14
+ token,
15
+ amount: amount - DUST_THRESHOLD
16
+ }));
17
+ if (spentAmount > 0n) deltas.push({
18
+ token: spentToken,
19
+ amount: -spentAmount
20
+ });
21
+ return deltas;
22
+ }
23
+ //#endregion
24
+ export { expectedBalanceDeltas };
@@ -4,5 +4,6 @@ import { CreditFacadeV310Contract } from "./CreditFacadeV310Contract.js";
4
4
  import { CreditManagerV310Contract } from "./CreditManagerV310Contract.js";
5
5
  import { dominantCollateral, mustGetDominantCollateral } from "./dominantCollateral.js";
6
6
  import { CreditSuite } from "./CreditSuite.js";
7
+ import { expectedBalanceDeltas } from "./expectedBalanceDeltas.js";
7
8
  import "./types.js";
8
- export { CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, abi as creditFacadeV310Abi, dominantCollateral, mustGetDominantCollateral };
9
+ export { CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, abi as creditFacadeV310Abi, dominantCollateral, expectedBalanceDeltas, mustGetDominantCollateral };
@@ -7,6 +7,7 @@ import { CreditFacadeV310Contract } from "./credit/CreditFacadeV310Contract.js";
7
7
  import { CreditManagerV310Contract } from "./credit/CreditManagerV310Contract.js";
8
8
  import { dominantCollateral, mustGetDominantCollateral } from "./credit/dominantCollateral.js";
9
9
  import { CreditSuite } from "./credit/CreditSuite.js";
10
+ import { expectedBalanceDeltas } from "./credit/expectedBalanceDeltas.js";
10
11
  import "./credit/index.js";
11
12
  import { isUpdatablePriceFeed } from "./pricefeeds/isUpdatablePriceFeed.js";
12
13
  import { PriceFeedRef } from "./pricefeeds/PriceFeedRef.js";
@@ -59,4 +60,4 @@ import { RWARegistry } from "./rwa/RWARegistry.js";
59
60
  import { RWA_FACTORY_TYPES, isRWAFactory } from "./rwa/types.js";
60
61
  import "./rwa/index.js";
61
62
  import "./types.js";
62
- export { AbstractLPPriceFeedContract, AbstractPriceFeedContract, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BoundedPriceFeedContract, CompositePriceFeedContract, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, LinearInterestRateModelContract, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PlaceholderAdapterContract, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RedstonePriceFeedContract, SECURITIZE_REGISTER_VAULT_TYPES, SecuritizeLiquidatorContract, SecuritizeRWAFactory, UnsupportedZapperFunctionError, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, createAdapter, createPriceOracle, createZapper, abi as creditFacadeV310Abi, dominantCollateral, fetchPythPayloads, fetchRedstonePayloads, getRawPriceUpdates, isLPPriceFeed, isRWAFactory, isUpdatablePriceFeed, mustGetDominantCollateral };
63
+ export { AbstractLPPriceFeedContract, AbstractPriceFeedContract, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BoundedPriceFeedContract, CompositePriceFeedContract, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, LinearInterestRateModelContract, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PlaceholderAdapterContract, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RedstonePriceFeedContract, SECURITIZE_REGISTER_VAULT_TYPES, SecuritizeLiquidatorContract, SecuritizeRWAFactory, UnsupportedZapperFunctionError, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, createAdapter, createPriceOracle, createZapper, abi as creditFacadeV310Abi, dominantCollateral, expectedBalanceDeltas, fetchPythPayloads, fetchRedstonePayloads, getRawPriceUpdates, isLPPriceFeed, isRWAFactory, isUpdatablePriceFeed, mustGetDominantCollateral };
@@ -1,3 +1,4 @@
1
+ import { iPausableAbi } from "../../../abi/iPausable.js";
1
2
  import { iPoolV310Abi } from "../../../abi/310/generated.js";
2
3
  import { AddressMap } from "../../utils/AddressMap.js";
3
4
  import { RAY } from "../../constants/math.js";
@@ -6,7 +7,6 @@ import { formatBN, formatBNvalue, percentFmt } from "../../utils/formatter.js";
6
7
  import "../../utils/index.js";
7
8
  import { BaseContract } from "../../base/BaseContract.js";
8
9
  import "../../base/index.js";
9
- import { iPausableAbi } from "../../../abi/iPausable.js";
10
10
  import { utilizationBps } from "../math.js";
11
11
  //#region src/sdk/market/pool/PoolV310Contract.ts
12
12
  const abi = [...iPoolV310Abi, ...iPausableAbi];
@@ -1,5 +1,5 @@
1
- import { ZapperContract } from "./ZapperContract.js";
2
1
  import { iethZapperAbi } from "../../../abi/iETHZapper.js";
2
+ import { ZapperContract } from "./ZapperContract.js";
3
3
  //#region src/sdk/market/zapper/IETHZapperContract.ts
4
4
  const abi = iethZapperAbi;
5
5
  var IETHZapperContract = class extends ZapperContract {
@@ -1,6 +1,6 @@
1
+ import { iZapperAbi } from "../../../abi/iZapper.js";
1
2
  import { BaseContract } from "../../base/BaseContract.js";
2
3
  import "../../base/index.js";
3
- import { iZapperAbi } from "../../../abi/iZapper.js";
4
4
  import { UnsupportedZapperFunctionError } from "./errors.js";
5
5
  //#region src/sdk/market/zapper/ZapperContract.ts
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { AddressSet } from "../utils/AddressSet.js";
2
1
  import { ierc20Abi } from "../../abi/iERC20.js";
2
+ import { AddressSet } from "../utils/AddressSet.js";
3
3
  import "../constants/addresses.js";
4
4
  import { RAY } from "../constants/math.js";
5
5
  import "../constants/index.js";
@@ -16,5 +16,5 @@ import { hexEq } from "./hex.js";
16
16
  import { retry } from "./retry.js";
17
17
  import { toAddress } from "./toAddress.js";
18
18
  import "./type-utils.js";
19
- import { ZodAddress, ZodHex } from "./zod.js";
20
- export { AddressMap, AddressSet, AssetsMap, BigIntMath, TypedObjectUtils, ZodAddress, ZodHex, bytes32ToString, childLogger, createRawTx, etherscanApiUrl, etherscanUrl, filterDust, filterDustUSD, fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, getFunctionSignature, hexEq, isDust, json_parse, json_stringify, numberWithCommas, percentFmt, rayToNumber, retry, shortAddress, shortHash, toAddress, toBN, toBigInt, toSignificant };
19
+ import { ZodAddress, ZodBigInt, ZodHex } from "./zod.js";
20
+ export { AddressMap, AddressSet, AssetsMap, BigIntMath, TypedObjectUtils, ZodAddress, ZodBigInt, ZodHex, bytes32ToString, childLogger, createRawTx, etherscanApiUrl, etherscanUrl, filterDust, filterDustUSD, fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, getFunctionSignature, hexEq, isDust, json_parse, json_stringify, numberWithCommas, percentFmt, rayToNumber, retry, shortAddress, shortHash, toAddress, toBN, toBigInt, toSignificant };
@@ -1,6 +1,6 @@
1
1
  import { errorAbis } from "../../../abi/errors.js";
2
- import { generateCastTraceCall } from "./cast.js";
3
2
  import { iUpdatablePriceFeedAbi } from "../../../abi/iUpdatablePriceFeed.js";
3
+ import { generateCastTraceCall } from "./cast.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";
@@ -2,26 +2,47 @@ import { getAddress, isAddress, isHex } from "viem";
2
2
  import { z } from "zod/v4";
3
3
  //#region src/sdk/utils/zod.ts
4
4
  /**
5
+ * A `bigint` codec that serializes into string, deserializes into bigint.
6
+ */
7
+ const ZodBigInt = () => z.codec(z.union([z.string().regex(z.regexes.integer), z.bigint()]), z.bigint(), {
8
+ decode: (value) => typeof value === "bigint" ? value : BigInt(value),
9
+ encode: (value) => value.toString()
10
+ });
11
+ const addressOut = z.custom((val) => typeof val === "string" && isAddress(val, { strict: false }));
12
+ /**
5
13
  * Like Address from abitype/zod, but converts an address into an address that is checksum encoded.
6
14
  */
7
- const ZodAddress = () => z.string().transform((val, ctx) => {
8
- if (!isAddress(val)) ctx.issues.push({
9
- code: "custom",
10
- message: `invalid address ${val}`,
11
- input: ctx.value
12
- });
13
- return getAddress(val);
15
+ const ZodAddress = () => z.codec(z.string(), addressOut, {
16
+ decode: (val, ctx) => {
17
+ if (!isAddress(val, { strict: false })) {
18
+ ctx.issues.push({
19
+ code: "custom",
20
+ message: `invalid address ${val}`,
21
+ input: val
22
+ });
23
+ return z.NEVER;
24
+ }
25
+ return getAddress(val);
26
+ },
27
+ encode: (address) => address
14
28
  });
29
+ const hexOut = z.custom((val) => typeof val === "string" && isHex(val));
15
30
  /**
16
31
  * A `0x`-prefixed hex string, as viem's Hex.
17
32
  */
18
- const ZodHex = () => z.string().transform((val, ctx) => {
19
- if (!isHex(val)) ctx.issues.push({
20
- code: "custom",
21
- message: `invalid hex string ${val}`,
22
- input: ctx.value
23
- });
24
- return val;
33
+ const ZodHex = () => z.codec(z.string(), hexOut, {
34
+ decode: (val, ctx) => {
35
+ if (!isHex(val)) {
36
+ ctx.issues.push({
37
+ code: "custom",
38
+ message: `invalid hex string ${val}`,
39
+ input: val
40
+ });
41
+ return z.NEVER;
42
+ }
43
+ return val;
44
+ },
45
+ encode: (hex) => hex
25
46
  });
26
47
  //#endregion
27
- export { ZodAddress, ZodHex };
48
+ export { ZodAddress, ZodBigInt, ZodHex };
@@ -1,7 +1,7 @@
1
1
  import { Asset, CreditAccountData } from "../sdk/base/types.js";
2
- import { ICreditAccountsService } from "../sdk/accounts/types.js";
3
2
  import { RawTx } from "../sdk/types/transactions.js";
4
3
  import { SDKConstruct } from "../sdk/base/SDKConstruct.js";
4
+ import { ICreditAccountsService } from "../sdk/accounts/types.js";
5
5
  import "../sdk/index.js";
6
6
  import { Address, BaseError, Hash, Hex, PrivateKeyAccount } from "viem";
7
7
  //#region src/dev/AccountOpener.d.ts
@@ -27,7 +27,7 @@ declare const curatorNameSchema: z.ZodEnum<{
27
27
  * {@link Curator}
28
28
  **/
29
29
  declare const curatorSchema: z.ZodObject<{
30
- address: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
30
+ address: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
31
31
  name: z.ZodOptional<z.ZodEnum<{
32
32
  "Chaos Labs": "Chaos Labs";
33
33
  "Gami Labs": "Gami Labs";
@@ -63,12 +63,12 @@ declare const historySeriesSchema: z.ZodObject<{
63
63
  declare const opportunityHistoryQuerySchema: z.ZodObject<{
64
64
  opportunity: z.ZodDiscriminatedUnion<[z.ZodObject<{
65
65
  chainId: z.ZodNumber;
66
- pool: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
66
+ pool: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
67
67
  kind: z.ZodLiteral<"pool">;
68
68
  }, z.core.$strip>, z.ZodObject<{
69
69
  chainId: z.ZodNumber;
70
- creditManager: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
71
- targetCollateral: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
70
+ creditManager: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
71
+ targetCollateral: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
72
72
  kind: z.ZodLiteral<"strategy">;
73
73
  }, z.core.$strip>], "kind">;
74
74
  range: z.ZodUnion<readonly [z.ZodLiteral<"1d">, z.ZodLiteral<"1w">, z.ZodLiteral<"1m">, z.ZodLiteral<"1y">, z.ZodLiteral<"max">]>;
@@ -80,12 +80,12 @@ declare const opportunityHistoryQuerySchema: z.ZodObject<{
80
80
  declare const positionHistoryQuerySchema: z.ZodObject<{
81
81
  position: z.ZodDiscriminatedUnion<[z.ZodObject<{
82
82
  chainId: z.ZodNumber;
83
- pool: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
84
- wallet: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
83
+ pool: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
84
+ wallet: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
85
85
  kind: z.ZodLiteral<"pool">;
86
86
  }, z.core.$strip>, z.ZodObject<{
87
87
  chainId: z.ZodNumber;
88
- creditAccount: z.ZodPipe<z.ZodString, z.ZodTransform<`0x${string}`, string>>;
88
+ creditAccount: z.ZodCodec<z.ZodString, z.ZodCustom<`0x${string}`, `0x${string}`>>;
89
89
  kind: z.ZodLiteral<"strategy">;
90
90
  }, z.core.$strip>], "kind">;
91
91
  range: z.ZodUnion<readonly [z.ZodLiteral<"1d">, z.ZodLiteral<"1w">, z.ZodLiteral<"1m">, z.ZodLiteral<"1y">, z.ZodLiteral<"max">]>;