@dhedge/trading-widget 5.8.1 → 5.11.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 (134) hide show
  1. package/README.md +64 -31
  2. package/complex-withdraw-asset-data-DKDPznHy.cjs +1 -0
  3. package/{complex-withdraw-asset-data-Cf9Ea0VI.js → complex-withdraw-asset-data-DzhKTztw.js} +119 -144
  4. package/const.cjs +1 -1
  5. package/const.js +32 -32
  6. package/core-kit/const/gmx.d.ts +1 -1
  7. package/core-kit/const/logger.d.ts +2 -5
  8. package/core-kit/const/storage.d.ts +0 -1
  9. package/core-kit/hooks/state/action.d.ts +1 -1
  10. package/core-kit/hooks/state/aggregators.d.ts +11 -0
  11. package/core-kit/hooks/state/index.d.ts +1 -0
  12. package/core-kit/hooks/trading/deposit-v2/deposit-transaction/use-deposit-common.d.ts +1 -1
  13. package/core-kit/hooks/trading/deposit-v2/use-get-vault-deposit-transaction-arguments.d.ts +1 -1
  14. package/core-kit/hooks/trading/deposit-v2/use-vault-deposit-tokens.d.ts +5 -1
  15. package/core-kit/hooks/trading/index.d.ts +0 -1
  16. package/core-kit/hooks/web3/index.d.ts +0 -1
  17. package/core-kit/types/state.types.d.ts +1 -1
  18. package/core-kit/types/trading-panel.types.d.ts +2 -3
  19. package/core-kit/utils/deposit.d.ts +1 -1
  20. package/core-kit/utils/index.d.ts +0 -1
  21. package/{storage-DhvdxqW3.js → gmx-BroDb_q_.js} +157 -161
  22. package/gmx-CLiWBUH_.cjs +1 -0
  23. package/index.cjs +1 -1
  24. package/index.d.ts +5 -3
  25. package/index.js +6335 -5493
  26. package/limit-orders/common/network-check-button.d.ts +7 -0
  27. package/limit-orders/common/network-check-button.hooks.d.ts +4 -0
  28. package/limit-orders/common/utils.d.ts +2 -0
  29. package/limit-orders/index.d.ts +9 -5
  30. package/limit-orders/limit-buys/component/input-group/input-amount-field.d.ts +2 -0
  31. package/limit-orders/limit-buys/component/input-group/input-amount-field.hooks.d.ts +11 -0
  32. package/limit-orders/limit-buys/component/input-group/input-group.d.ts +2 -0
  33. package/limit-orders/limit-buys/component/input-group/input-group.hooks.d.ts +15 -0
  34. package/limit-orders/limit-buys/component/input-group/slippage-deadline-fields.d.ts +2 -0
  35. package/limit-orders/limit-buys/component/input-group/slippage-deadline-fields.hooks.d.ts +5 -0
  36. package/limit-orders/limit-buys/component/input-group/token-select-overlay.d.ts +10 -0
  37. package/limit-orders/limit-buys/component/limit-buy-button/sign-limit-buy-button.d.ts +6 -0
  38. package/limit-orders/limit-buys/component/limit-buy-button/sign-limit-buy-button.hooks.d.ts +6 -0
  39. package/limit-orders/limit-buys/component/limit-buy-content.d.ts +6 -0
  40. package/limit-orders/limit-buys/component/limit-buy-order-modal.d.ts +14 -0
  41. package/limit-orders/limit-buys/component/limit-buy-overlay.d.ts +11 -0
  42. package/limit-orders/limit-buys/component/terms-confirmation.d.ts +8 -0
  43. package/limit-orders/limit-buys/constants.d.ts +55 -0
  44. package/limit-orders/limit-buys/hooks/state.d.ts +2 -0
  45. package/limit-orders/limit-buys/hooks/use-approve-and-sign-limit-buy.d.ts +7 -0
  46. package/limit-orders/limit-buys/hooks/use-is-permit2-approved.d.ts +1 -0
  47. package/limit-orders/limit-buys/hooks/use-permit2-approve-transaction.d.ts +5 -0
  48. package/limit-orders/limit-buys/hooks/use-sign-limit-buy-order.d.ts +3 -0
  49. package/limit-orders/limit-buys/providers/state-provider/reducer.d.ts +3 -0
  50. package/limit-orders/limit-buys/providers/state-provider/state-provider.d.ts +6 -0
  51. package/limit-orders/limit-buys/providers/state-provider/state-provider.types.d.ts +69 -0
  52. package/limit-orders/limit-buys/providers/translation-provider/index.d.ts +3 -0
  53. package/limit-orders/limit-buys/providers/translation-provider/translation-provider.d.ts +4 -0
  54. package/limit-orders/limit-buys/providers/translation-provider/translation-provider.defaults.d.ts +2 -0
  55. package/limit-orders/limit-buys/providers/translation-provider/translation-provider.hooks.d.ts +1 -0
  56. package/limit-orders/limit-buys/providers/translation-provider/translation-provider.types.d.ts +29 -0
  57. package/limit-orders/limit-buys/types.d.ts +27 -0
  58. package/limit-orders/limit-buys/utils.d.ts +4 -0
  59. package/limit-orders/{component → limit-sells/component}/input-group/input-group.hooks.d.ts +0 -2
  60. package/limit-orders/{component → limit-sells/component}/limit-order-button/approve-and-create-limit-order-button.d.ts +1 -0
  61. package/limit-orders/{component → limit-sells/component}/limit-order-content.d.ts +1 -1
  62. package/limit-orders/{component → limit-sells/component}/limit-order-overlay.d.ts +3 -3
  63. package/limit-orders/{component/limit-order-modal.d.ts → limit-sells/component/limit-sell-order-modal.d.ts} +5 -5
  64. package/limit-orders/limit-sells/component/terms-confirmation.d.ts +8 -0
  65. package/limit-orders/{constants.d.ts → limit-sells/constants.d.ts} +2 -2
  66. package/limit-orders/limit-sells/hooks/use-invalidate-limit-sell-order-query.d.ts +1 -0
  67. package/limit-orders/{hooks → limit-sells/hooks}/use-on-limit-order-settled.d.ts +1 -1
  68. package/limit-orders/{hooks/use-user-limit-order.d.ts → limit-sells/hooks/use-user-limit-sell-order.d.ts} +3 -3
  69. package/limit-orders/{providers → limit-sells/providers}/state-provider/reducer.d.ts +1 -1
  70. package/limit-orders/{providers → limit-sells/providers}/state-provider/state-provider.d.ts +1 -1
  71. package/limit-orders/{providers → limit-sells/providers}/state-provider/state-provider.types.d.ts +1 -1
  72. package/limit-orders/{utils.d.ts → limit-sells/utils.d.ts} +3 -3
  73. package/limit-orders/providers/translation-provider/translation-provider.types.d.ts +1 -0
  74. package/package.json +1 -1
  75. package/{derive-BmKPodpX.js → storage-CSc9iE5L.js} +6 -2
  76. package/storage-DHoO5PX_.cjs +1 -0
  77. package/style.css +1 -1
  78. package/trading-widget/components/deposit/button/valid-deposit-button/valid-deposit-button.hooks.d.ts +0 -2
  79. package/trading-widget/components/widget/widget-buttons/index.d.ts +1 -0
  80. package/trading-widget/components/widget/widget-buttons/limit-buy-button/limit-buy-button.d.ts +3 -0
  81. package/trading-widget/components/widget/widget-overlay/hyper-evm-warning-overlay/hyper-evm-warning-overlay.d.ts +3 -0
  82. package/trading-widget/components/widget/widget-overlay/index.d.ts +2 -0
  83. package/trading-widget/components/widget/widget-overlay/limit-buys-overlay/limit-buys-overlay.d.ts +3 -0
  84. package/trading-widget/components/widget/widget-overlay/limit-buys-overlay/limit-buys-overlay.hooks.d.ts +17 -0
  85. package/trading-widget/components/widget/widget-settings/index.d.ts +0 -1
  86. package/trading-widget/components/widget/widget-settings/slippage-selector/slippage-selector.hooks.d.ts +1 -1
  87. package/trading-widget/hooks/index.d.ts +3 -1
  88. package/trading-widget/hooks/use-display-limit-buy-overlay.d.ts +1 -0
  89. package/trading-widget/hooks/use-open-limit-buys-overlay.d.ts +4 -0
  90. package/trading-widget/hooks/use-show-hyper-evm-deposit-warning.d.ts +1 -0
  91. package/trading-widget/providers/config-provider/config-provider.types.d.ts +3 -0
  92. package/trading-widget/providers/translation-provider/translation-provider.types.d.ts +7 -5
  93. package/trading-widget/types/overlay.types.d.ts +2 -0
  94. package/utils.cjs +1 -1
  95. package/utils.js +32 -34
  96. package/complex-withdraw-asset-data-Cmnlgieq.cjs +0 -1
  97. package/core-kit/hooks/trading/deposit-v2/deposit-transaction/use-batch-approve-transaction.d.ts +0 -141
  98. package/core-kit/hooks/trading/deposit-v2/deposit-transaction/use-batch-deposit.d.ts +0 -1
  99. package/core-kit/hooks/trading/trade-handlers/use-batch-trading-settle-handler.d.ts +0 -5
  100. package/core-kit/hooks/trading/use-is-batch-contract-writes-trading.d.ts +0 -1
  101. package/core-kit/hooks/web3/use-custom-send-calls.d.ts +0 -14
  102. package/core-kit/hooks/web3/use-is-batch-contract-writes-supported.d.ts +0 -1
  103. package/core-kit/utils/batch-transactions.d.ts +0 -2
  104. package/derive-CsdqSZEg.cjs +0 -1
  105. package/limit-orders/component/input-group/terms-content.d.ts +0 -6
  106. package/limit-orders/component/limit-order-button/network-check-button.d.ts +0 -2
  107. package/limit-orders/component/limit-order-button/network-check-button.hooks.d.ts +0 -4
  108. package/limit-orders/hooks/use-invalidate-limit-order-query.d.ts +0 -1
  109. package/storage-Bbr6G6F3.cjs +0 -1
  110. package/trading-widget/components/deposit/button/batch-trade-button.d.ts +0 -2
  111. package/trading-widget/components/widget/widget-settings/batch-transactions-switch/batch-transactions-switch.d.ts +0 -2
  112. package/trading-widget/components/widget/widget-settings/batch-transactions-switch/batch-transactions-switch.hooks.d.ts +0 -1
  113. package/trading-widget/hooks/use-trading-type-name.d.ts +0 -2
  114. /package/limit-orders/{component/common → common}/action-button.d.ts +0 -0
  115. /package/limit-orders/{component/common → common}/asset-price-panel.d.ts +0 -0
  116. /package/limit-orders/{component/common → common}/modal-content.d.ts +0 -0
  117. /package/limit-orders/{component/common → common}/modal-dialog.d.ts +0 -0
  118. /package/limit-orders/{component/common → common}/percentage-input.d.ts +0 -0
  119. /package/limit-orders/{component/common → common}/price-input.d.ts +0 -0
  120. /package/limit-orders/{component/common → common}/switch-panel.d.ts +0 -0
  121. /package/limit-orders/{component → limit-sells/component}/input-group/input-group.d.ts +0 -0
  122. /package/limit-orders/{component → limit-sells/component}/limit-order-button/approve-and-create-limit-order-button.hooks.d.ts +0 -0
  123. /package/limit-orders/{component → limit-sells/component}/limit-order-button/limit-order-delete-button.d.ts +0 -0
  124. /package/limit-orders/{component → limit-sells/component}/limit-order-button/limit-order-delete-button.hooks.d.ts +0 -0
  125. /package/limit-orders/{component → limit-sells/component}/limit-order-content.hooks.d.ts +0 -0
  126. /package/limit-orders/{component → limit-sells/component}/limit-order-modal.hooks.d.ts +0 -0
  127. /package/limit-orders/{hooks → limit-sells/hooks}/state.d.ts +0 -0
  128. /package/limit-orders/{hooks → limit-sells/hooks}/use-approve-and-create-limit-order.d.ts +0 -0
  129. /package/limit-orders/{hooks → limit-sells/hooks}/use-create-limit-order-transaction.d.ts +0 -0
  130. /package/limit-orders/{hooks → limit-sells/hooks}/use-existing-limit-order-default-prices.d.ts +0 -0
  131. /package/limit-orders/{hooks → limit-sells/hooks}/use-is-limit-order-approved.d.ts +0 -0
  132. /package/limit-orders/{hooks → limit-sells/hooks}/use-limit-order-approve-transaction.d.ts +0 -0
  133. /package/limit-orders/{hooks → limit-sells/hooks}/use-limit-order-covered-vault-amount.d.ts +0 -0
  134. /package/limit-orders/{hooks → limit-sells/hooks}/use-listen-limit-order-execution.d.ts +0 -0
package/README.md CHANGED
@@ -54,21 +54,21 @@ Top level provider component. Headless part of trading logic. API handles params
54
54
  <details>
55
55
  <summary><code>actions</code> <code><b>/</b></code> <code>Optional General callbacks to interact with 3rd party services</code></summary>
56
56
 
57
- > | name | type | default value | description |
58
- > | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------- |
59
- > | `onUpdateSendTokenInput` | (payload: Partial\<{ address: `Address`; symbol: `string`; value: `string`; decimals: `number`; isLoading?: `boolean` }\>) => void | undefined | triggers on send token change |
60
- > | `onUpdateTradingSettings` | (payload: Partial\<{ slippage: `number \| 'auto'`; minSlippage?: `number` isInfiniteAllowance: `boolean`; isMultiAssetWithdrawalEnabled: `boolean`; isCustomDepositOptionsDisabled?: `boolean`; isMaxSlippageLoading: `boolean` }\>) => void | undefined | triggers on trading settings change |
61
- > | `onSetTradingType` | (payload: `'deposit' \| 'withdraw'`) => void | undefined | triggers on trading type change |
62
- > | `onUpdateTradingModal` | (payload: Partial\<{ isOpen: `boolean`; status: `'Success' \| 'None' \| 'Mining' \| 'Wallet'` }\>) => void | undefined | triggers on trading modal change |
63
- > | `onUpdateTransactions` | (payload: AddTransaction \| UpdateTransaction \| RemoveTransaction) => void | undefined | triggers on transaction action change |
64
- > | `onTradingSettleError` | (error: `Error`) => void | undefined | triggers on trading settle error |
65
- > | `onTransactionError` | (error: `Error`, action: `TransactionAction` \| `undefined`, chainId?: `ChainId`, txHash?: `Address`) => void | undefined | triggers on transaction error |
66
- > | `onTransactionSuccess` | (data: `WaitForTransactionReceiptReturnType`, action: `TransactionAction` \| `undefined`, link?: `string`) => void | undefined | triggers on transaction success |
67
- > | `onTransactionEstimationError` | (error: `EstimationError`, address: `Address`, chainId?: `ChainId`, account?: `Address`) => void | undefined | triggers on transaction estimation error |
68
- > | `onTokenSelector` | (payload: { isOpen: `boolean`; entity: `'token' \| 'pool'` }) => void | undefined | triggers on token selector change |
69
- > | `onLog` | (eventName: `string`, payload?: `Record<string, unknown>`) => void | undefined | triggers on log event |
70
- > | `onSimulateTransaction` | (payload: { chainId: `ChainId`; from: `Address`: to: `Address`; input: `string`; gas: `number`; value?: `string` }) => Promise<{ link?: `string`; simulation: { status: `boolean`; error_message: `string` } } \| null> | undefined | triggers to simulate transaction and get error details after failed tx estimation |
71
- > | `getSwapQuotes` | ({ signal: `AbortSignal`, variables: { chainId: `number`; sourceAddress: `Address`; destinationAddress: `Address`; walletAddress: `Address`; fromAddress: `Address`; amount: `string`; slippage: `string` } }) => Promise<Array <{ destinationAmount: `string`; rawTransaction: `{ data: string }` ; routerKey: `'ONE_INCH' / 'ONE_INCH_V5' / 'ZERO_X' / 'PARASWAP' / 'PARASWAP_V6' / 'ODOS_V2' / 'KYBER_SWAP_V2'` } }> \| null> | undefined | provides off chain swap quotes based on send token value |
57
+ > | name | type | default value | description |
58
+ > | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- | --------------------------------------------------------------------------------- |
59
+ > | `onUpdateSendTokenInput` | (payload: Partial\<{ address: `Address`; symbol: `string`; value: `string`; decimals: `number`; isLoading?: `boolean` }\>) => void | undefined | triggers on send token change |
60
+ > | `onUpdateTradingSettings` | (payload: Partial\<{ slippage: `number \| 'auto'`; minSlippage?: `number` isInfiniteAllowance: `boolean`; isMultiAssetWithdrawalEnabled: `boolean`; isCustomDepositOptionsDisabled?: `boolean`; isMaxSlippageLoading: `boolean` }\>) => void | undefined | triggers on trading settings change |
61
+ > | `onSetTradingType` | (payload: `'deposit' \| 'withdraw'`) => void | undefined | triggers on trading type change |
62
+ > | `onUpdateTradingModal` | (payload: Partial\<{ isOpen: `boolean`; status: `'Success' \| 'None' \| 'Mining' \| 'Wallet'` }\>) => void | undefined | triggers on trading modal change |
63
+ > | `onUpdateTransactions` | (payload: AddTransaction \| UpdateTransaction \| RemoveTransaction) => void | undefined | triggers on transaction action change |
64
+ > | `onTradingSettleError` | (error: `Error`) => void | undefined | triggers on trading settle error |
65
+ > | `onTransactionError` | (error: `Error`, action: `TransactionAction` \| `undefined`, chainId?: `ChainId`, txHash?: `Address`) => void | undefined | triggers on transaction error |
66
+ > | `onTransactionSuccess` | (data: `WaitForTransactionReceiptReturnType`, action: `TransactionAction` \| `undefined`, link?: `string`) => void | undefined | triggers on transaction success |
67
+ > | `onTransactionEstimationError` | (error: `EstimationError`, address: `Address`, chainId?: `ChainId`, account?: `Address`) => void | undefined | triggers on transaction estimation error |
68
+ > | `onTokenSelector` | (payload: { isOpen: `boolean`; entity: `'token' \| 'pool'` }) => void | undefined | triggers on token selector change |
69
+ > | `onLog` | (eventName: `string`, payload?: `Record<string, unknown>`) => void | undefined | triggers on log event |
70
+ > | `onSimulateTransaction` | (payload: { chainId: `ChainId`; from: `Address`: to: `Address`; input: `string`; gas: `number`; value?: `string` }) => Promise<{ link?: `string`; simulation: { status: `boolean`; error_message: `string` } } \| null> | undefined | triggers to simulate transaction and get error details after failed tx estimation |
71
+ > | `getSwapQuotes` | ({ signal: `AbortSignal`, variables: { chainId: `number`; sourceAddress: `Address`; destinationAddress: `Address`; walletAddress: `Address`; fromAddress: `Address`; amount: `string`; slippage: `string` } }) => Promise<Array <{ destinationAmount: `string`; rawTransaction: `{ data: string }` ; routerKey: `'ONE_INCH' / 'PARASWAP_V6' / 'KYBER_SWAP_V2'` } }> \| null> | undefined | provides off chain swap quotes based on send token value |
72
72
 
73
73
  ###### Source: `packages/trading-widget/src/core-kit/providers/index.tsx`
74
74
 
@@ -81,19 +81,19 @@ Top level provider component. Headless part of trading logic. API handles params
81
81
  <details>
82
82
  <summary><code>initialState</code> <code><b>/</b></code> <code>Optional initial state of trading panel</code></summary>
83
83
 
84
- > | name | type | default value | description |
85
- > | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
86
- > | `poolAddress` | Address | `AddressZero` | Current active pool address |
87
- > | `poolConfigMap` | Record<Address, PoolConfig> | `{}` | Map of pool configs available for trading |
88
- > | `settings` | { slippage: `number \| 'auto'`; minSlippage?: `number`; isInfiniteAllowance: `boolean`; isMultiAssetWithdrawalEnabled: `boolean`; isCustomDepositOptionsDisabled?: `boolean`; isMaxSlippageLoading: `boolean`; availableAggregators: `string[]`; isForceSendEnabled?: `boolean`; forceSendGas?: `number` } | { slippage: `'auto'`; isInfiniteAllowance: `false`; isMultiAssetWithdrawalEnabled: `true`; isMaxSlippageLoading: `false`; availableAggregators: `[]`; isForceSendEnabled: `false`; forceSendGas: `undefined` } | Panel settings (see **Force Send** note below) |
89
- > | `type` | 'deposit' \| 'withdraw' | `'deposit'` | Trading type |
90
- > | `input` | { sendToken: { address: `Address`; symbol: `string`; value: `string`; decimals: `number`; isLoading?: `boolean` }; receiveToken: { address: `Address`; symbol: `string`; value: `string`; decimals: `number`; isLoading?: `boolean` } } | `poolConfigMap[poolAddress]` | Send/receive tokens pair |
91
- > | `entryFee` | { deposit: `number`; depositWithCustomCooldown: `number`; } | { deposit: `0`; depositWithCustomCooldown: `0.1` } | Entry fee config map |
92
- > | `modal` | { isOpen: `boolean`; status: `'Success' \| 'None' \| 'Mining' \| 'Wallet'`; action: `'deposit' \| 'withdraw' \| 'approve \`; link?: `string`; sendToken: TradingToken \| null; receiveToken: TradingToken \| null } | `{ isOpen: `false`,status: `'None'`, receiveToken: `null`, sendToken: `null` }` | Trading modal state |
93
- > | `transactions` | { action: `'deposit' \| 'withdraw' \| 'approve'`; symbol: `string`; chainId: `ChainId`; txHash?: `Address` }[] | `[]` | Pending transactions |
94
- > | `poolFallbackData` | { address: `Address`; managerLogicAddress?: `Address`; poolCompositions: `PoolComposition[]`; tokenPrice?: `string`; apy?: { value: `number`; currency: `'USD' \| 'ETH'` } } | { address: `AddressZero` } | Current active pool fallback data to override or extend contract's response |
95
- > | `defaultChainId` | number (optional) | undefined | Chain id that will be returned from useNetwork wagmi hook when connected to unsupported network |
96
- > | `customDepositTokensPerChain` | Record<ChainId, TradingToken[]> | `undefined` | Per-chain map of extra deposit tokens that are appended to `depositParams.customTokens`. |
84
+ > | name | type | default value | description |
85
+ > | ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
86
+ > | `poolAddress` | Address | `AddressZero` | Current active pool address |
87
+ > | `poolConfigMap` | Record<Address, PoolConfig> | `{}` | Map of pool configs available for trading |
88
+ > | `settings` | { slippage: `number \| 'auto'`; minSlippage?: `number`; isInfiniteAllowance: `boolean`; isMultiAssetWithdrawalEnabled: `boolean`; isCustomDepositOptionsDisabled?: `boolean`; isMaxSlippageLoading: `boolean`; availableAggregators: `string[]`; selectedAggregators: `string[]`; aggregatorLimitPerChain?: `Partial<Record<ChainId, string[]>>`; isForceSendEnabled?: `boolean`; forceSendGas?: `number` } | { slippage: `'auto'`; isInfiniteAllowance: `false`; isMultiAssetWithdrawalEnabled: `true`; isMaxSlippageLoading: `false`; availableAggregators: `[]`; selectedAggregators: `[]`; aggregatorLimitPerChain: `undefined`; isForceSendEnabled: `false`; forceSendGas: `undefined` } | Panel settings (see **Force Send** and **Per-Chain Aggregator Limits** notes below) |
89
+ > | `type` | 'deposit' \| 'withdraw' | `'deposit'` | Trading type |
90
+ > | `input` | { sendToken: { address: `Address`; symbol: `string`; value: `string`; decimals: `number`; isLoading?: `boolean` }; receiveToken: { address: `Address`; symbol: `string`; value: `string`; decimals: `number`; isLoading?: `boolean` } } | `poolConfigMap[poolAddress]` | Send/receive tokens pair |
91
+ > | `entryFee` | { deposit: `number`; depositWithCustomCooldown: `number`; } | { deposit: `0`; depositWithCustomCooldown: `0.1` } | Entry fee config map |
92
+ > | `modal` | { isOpen: `boolean`; status: `'Success' \| 'None' \| 'Mining' \| 'Wallet'`; action: `'deposit' \| 'withdraw' \| 'approve \`; link?: `string`; sendToken: TradingToken \| null; receiveToken: TradingToken \| null } | `{ isOpen: `false`,status: `'None'`, receiveToken: `null`, sendToken: `null` }` | Trading modal state |
93
+ > | `transactions` | { action: `'deposit' \| 'withdraw' \| 'approve'`; symbol: `string`; chainId: `ChainId`; txHash?: `Address` }[] | `[]` | Pending transactions |
94
+ > | `poolFallbackData` | { address: `Address`; managerLogicAddress?: `Address`; poolCompositions: `PoolComposition[]`; tokenPrice?: `string`; apy?: { value: `number`; currency: `'USD' \| 'ETH'` } } | { address: `AddressZero` } | Current active pool fallback data to override or extend contract's response |
95
+ > | `defaultChainId` | number (optional) | undefined | Chain id that will be returned from useNetwork wagmi hook when connected to unsupported network |
96
+ > | `customDepositTokensPerChain` | Record<ChainId, TradingToken[]> | `undefined` | Per-chain map of extra deposit tokens that are appended to `depositParams.customTokens`. |
97
97
 
98
98
  ###### Source: `packages/trading-widget/src/core-kit/providers/index.tsx`
99
99
 
@@ -140,6 +140,42 @@ updateSettings({ isForceSendEnabled: true, forceSendGas: 10_000_000 })
140
140
 
141
141
  ---
142
142
 
143
+ #### Per-Chain Aggregator Limits
144
+
145
+ The optional `settings.aggregatorLimitPerChain` field allows restricting which aggregators are available on specific chains. When a chain has an entry in this map, both `availableAggregators` and `selectedAggregators` are **filtered** to include only the listed aggregators. Chains without an entry use the global lists unchanged.
146
+
147
+ | setting | type | default | description |
148
+ | ------------------------- | ------------------------------------ | ----------- | --------------------------------------------------------------------------------- |
149
+ | `aggregatorLimitPerChain` | `Partial<Record<ChainId, string[]>>` | `undefined` | Per-chain allow-list that filters the global available/selected aggregator lists. |
150
+
151
+ **Example:**
152
+
153
+ ```tsx
154
+ <TradingPanelProvider
155
+ initialState={{
156
+ settings: {
157
+ availableAggregators: ['ParaSwap', '1inch', 'KyberSwap'],
158
+ selectedAggregators: ['ParaSwap', '1inch', 'KyberSwap'],
159
+ aggregatorLimitPerChain: {
160
+ [hyperEvm.id]: ['KyberSwap'], // hyperEVM only uses KyberSwap
161
+ },
162
+ },
163
+ }}
164
+ actions={{ getSwapQuotes }}
165
+ >
166
+ {children}
167
+ </TradingPanelProvider>
168
+ ```
169
+
170
+ In this example:
171
+
172
+ - **hyperEVM vaults**: only `KyberSwap` is available (the aggregator selector UI is hidden since there's only one)
173
+ - **All other chains**: all four aggregators are available and selected as usual
174
+
175
+ The `useEffectiveAggregators` hook (exported from the widget) can be used to read the resolved aggregator lists for the current pool's chain.
176
+
177
+ ---
178
+
143
179
  <details>
144
180
  <summary><code>PoolConfig</code> <code><b>/</b></code> <code>Vault configuration schema</code></summary>
145
181
 
@@ -629,9 +665,6 @@ path: `component.meta[name]`
629
665
  > | `proceedWithNextStep` | string | Please proceed with the next step. | |
630
666
  > | `aggregatorsLabel` | string | Swap source | |
631
667
  > | `aggregatorsTooltip` | string | Choose which aggregators to use for your trades. | |
632
- > | `batchTransactionsLabel` | string | Batch transactions | |
633
- > | `batchTransactionsSwitchLabel` | string | Batch | |
634
- > | `batchTransactionsTooltip` | string | Group approve and trade calls into a single batch transaction. Disable if you prefer separate prompts. | |
635
668
  > | `openLimitOrderAfterBuySwitchLabel` | string | Add Stop Order | |
636
669
  > | `openNotificationsSettingsLabel` | string | Enable alerts | |
637
670
  > | `addToWallet` | string | add to wallet | |
@@ -0,0 +1 @@
1
+ "use strict";const c=require("bignumber.js"),s=require("./gmx-CLiWBUH_.cjs"),m=require("viem"),M=()=>typeof window<"u";function P(){return M()&&typeof window.ethereum<"u"}async function x(t){try{if(P())return window.ethereum.request({method:"wallet_watchAsset",params:{type:"ERC20",options:t}})}catch{return!1}return!1}const l=(t,e)=>t?.toLowerCase()===e?.toLowerCase(),U=t=>l(t,s.AddressZero$1),f=(t,e)=>s.contractsAddressesMap[e]?.[t]??s.AddressZero,$=t=>s.contractsAbisMap[t],W=t=>t&&`${t.substring(0,6)}...${t.substring(t.length-4,t.length)}`,G=({address:t,chainId:e})=>{const r=f("aaveLendingPoolV3",e);return l(t,r)},N=({sourceAddress:t,amount:e})=>`${t}_${e}`,K=(t,e)=>{const r=t.slice(0,e),n=t.slice(e);return{firstPart:r,secondPart:n}},y=(t,e)=>t/e*100,V=t=>t<1?4:t<10?3:2,Y=(t,e=s.DEFAULT_PRECISION)=>new c(t.toString()).shiftedBy(e).toFixed(0),Z=(t,e,r,n)=>new c(e).dividedBy(r).multipliedBy(t).shiftedBy(-(n||s.DEFAULT_PRECISION)).toNumber(),k=t=>BigInt(new c(t||"0").shiftedBy(s.DEFAULT_PRECISION).toFixed(0,c.ROUND_DOWN)),H=t=>{const e=new c(.01),r=new c(t),n=!r.isZero()&&r.lt(e)?e:r;return BigInt(n.multipliedBy(100).toFixed(0))},Q=({vaultAddress:t,swapData:e,sendTokenAddress:r,sendTokenAmount:n,vaultDepositTokenAddress:o,minVaultTokensReceivedAmount:a,routerKey:i="ONE_INCH",swapDestinationAmount:d,swapSlippage:u})=>{const A=new c(d).multipliedBy(1-u/100).toFixed(0),g=[m.stringToHex(i,{size:32}),e];return[t,[[r,n,g],[o,A]],a]},q=({receiveAssetAddress:t,assets:e,swapData:r})=>{const n={srcData:[],destAmount:new c("0")},{srcData:o}=e?.reduce((a,i)=>{const d=r?.[i.address];if(!d)return a;const u=[m.stringToHex(d.routerKey,{size:32}),d.rawTransaction.data],A=[i.address,i.rawBalance,u];return{srcData:[...a.srcData,A],destAmount:a.destAmount.plus(d.destinationAmount)}},n)??n;return[o,[t,"0"]]},w=({assetAddress:t,swapQuotes:e,swapParams:r,slippageToleranceForContractTransaction:n,routerKey:o})=>{if(!r)return{supportedAsset:t,withdrawData:"",slippageTolerance:BigInt(0)};const{srcData:a,dstData:i}=r,d=a.map(({asset:g,amount:T})=>{const p=e?.[N({sourceAddress:g,amount:T.toString()})]?.find(v=>v.routerKey===o);return{asset:g,amount:T,swapData:{routerKey:m.stringToHex(p?.routerKey??"",{size:32}),txData:p?.rawTransaction.data??"0x"}}}),u=m.encodeAbiParameters(s.ComplexWithdrawalAssetSrcDataAbiItem,[d]),A=m.encodeAbiParameters(s.ComplexWithdrawalDataAbiItem,[{encodedSrcData:u,dstData:{dstAddress:i.asset,dstAmount:i.amount},slippage:n}]);return{supportedAsset:t,withdrawData:A,slippageTolerance:n}},z=(t,e)=>s.CHAIN_NATIVE_TOKENS[e]?.nativeTokenSymbol===t,j=({nativeTokenBalance:t,tokenDecimals:e,gasPrice:r})=>{const n=new c(r).multipliedBy(s.NATIVE_TOKEN_DEPOSIT_GAS_LIMIT).shiftedBy(-e),o=new c(t).minus(n);return o.gt("0")?o:new c("0")},X=t=>s.STABLE_TOKEN_SYMBOLS.includes(t),J=t=>{const e=Object.values(t).reduce((r,{type:n})=>(r[n]=r[n]+1,r),{string:0,number:0});if(e.string>10)throw new Error("logger params must contain up to 10 string values");if(e.number>40)throw new Error("logger params must contain up to 40 numeric values");return!0},tt=(t,e=150)=>t.length>e?t.substring(0,e):t,S=(t,e=s.TRANSACTION_ERROR_KEYS)=>{const r=t.toLowerCase();return e.sort((n,o)=>o.length-n.length).find(n=>r.includes(n.toLowerCase()))},_=t=>s.TRANSACTION_ERRORS[t]??s.LIMIT_ORDER_TRANSACTION_ERRORS[t],et=({errorMessage:t,abiErrors:e})=>{if(!t||t.includes("User rejected"))return null;const r=e.find(a=>t.includes(a));if(r&&S(r))return _(r);const n=S(t);if(n)return _(n);const[o]=t.split(r?".":"Contract").map(a=>a.trim());return{title:"Transaction failed",hint:`${tt(o??"")} ${r?`: ${r}`:""}`}},rt=t=>typeof t=="number"&&Number.isFinite(t),nt=t=>typeof t=="bigint"&&t!==BigInt(0),h=(t,e=s.DEFAULT_PRECISION$1)=>new c(t).shiftedBy(-e).toNumber(),I=t=>!isNaN(parseFloat(t))&&!isNaN(t),L=({value:t,minimumFractionDigits:e=2,maximumFractionDigits:r=2,compact:n=!1,normalize:o=!1})=>new Intl.NumberFormat("en-US",{style:"currency",currency:"USD",notation:n?"compact":void 0,minimumFractionDigits:e,maximumFractionDigits:r}).format(o?h(t):Number(t)),D=t=>I(t)?new c(t).toFixed():"",E=["₀","₁","₂","₃","₄","₅","₆","₇","₈","₉"],B=({value:t,decimals:e=4})=>{const r=new c(t);if(r.isGreaterThan(1)||r.isZero())return D(r.toFixed(e));const o=(/e/i.test(t.toString())?parseFloat(t.toString()).toFixed(s.DEFAULT_PRECISION$1):t.toString()).match(/^0\.(0+)(\d+)$/);if(o){const[,a,i]=o;if(a.length>=e&&a.length<E.length)return`0.0${E[a.length]}${i.slice(0,3)}`}return D(r.toFixed(e))},R=(t,e=0)=>`${t.toLocaleString("en-US",{maximumFractionDigits:e})}%`,st=t=>t.toString().replace(/\B(?=(\d{3})+(?!\d))/g,","),ot=(t,e,r=0)=>{const n=y(+t,e);return R(n,r)},at=({currency:t,value:e})=>t==="USD"?L({value:e}):`${s.CURRENCY_SYMBOL_MAP[t]} ${B({value:e,decimals:s.CURRENCY_DECIMALS_MAP[t]})}`,b=(t,e)=>new c(new c(t).toFixed(e,c.ROUND_DOWN)).toString(),C=(t,e=3,r=2)=>{if(t.length<=5)return t;const n="...";return t.length<=e+r+n.length?t:`${t.slice(0,e)}${n}${t.slice(-r)}`},it=({balance:t,symbol:e,precision:r,truncateSymbol:n})=>`${b(t,r)} ${n?C(e):e}`,ct=t=>{if(!t)return;const e=t.match(/0x[a-fA-F0-9]{64}/);if(!e)return;const r=e[0];return`${r.slice(0,4)}...${r.slice(-3)}`},dt=typeof window<"u",ut=t=>l(s.FLATMONEY_EARLY_DEPOSITOR_VAULT_ADDRESS_BASE,t)||l(s.FLATMONEY_DHT_STAKING_VAULT_ADDRESS_BASE,t),lt=t=>s.FLAT_MONEY_LEVERAGED_ASSET_ADDRESSES.some(e=>l(e,t)),At=t=>s.FLAT_MONEY_COLLATERAL_MAP[t.toLowerCase()]??{symbol:"",decimals:18,address:s.AddressZero},mt=t=>l(t,s.FLAT_MONEY_V1_UNIT_ADDRESS)?s.FLAT_MONEY_V1_UNIT_LINK:s.FLAT_MONEY_UNIT_LINK,F=t=>`eth_${t}`,gt=({action:t,log:e,symbol:r,vaultAddress:n,chainId:o})=>{const a={[s.TRADING_LOG_EVENT_PARAM.SYMBOL.NAME]:r,[s.TRADING_LOG_EVENT_PARAM.CHAIN_ID.NAME]:o,[s.TRADING_LOG_EVENT_PARAM.ADDRESS.NAME]:F(n)};s.LOG_EVENT_BY_TRANSACTION_ACTION_MAP[t].forEach(i=>{e?.(i,a)})},Tt=t=>s.GMX_MARKET_ASSETS.some(e=>l(e,t)),pt=t=>s.GMX_WITHDRAW_ASSET_MAP[t.toLowerCase()]??{symbol:"",decimals:18,address:s.AddressZero},St=t=>s.GMX_WITHDRAW_ASSET_MAP_BY_VAULT_ADDRESS[t.toLowerCase()],Dt=t=>{const e=t.find(({swapQuotes:r})=>r);return e?.swapQuotes?Object.values(e.swapQuotes)[0]?.map(({routerKey:r})=>r)??[]:[]},O=(t,e,r)=>t.map(({asset:n,swapParams:o,swapQuotes:a})=>!o||!a?{supportedAsset:n,withdrawData:"",slippageTolerance:r}:w({assetAddress:n,swapQuotes:a,swapParams:o,slippageToleranceForContractTransaction:r,routerKey:e})),_t=async(t,e,r,n,o)=>{for(const a of t){const i=O(e,a,r),{error:d}=await n(...o,i);if(!d)return i}return null},Et=(t,e)=>(t??[]).map(r=>({supportedAsset:r,withdrawData:"",slippageTolerance:e})),ft=async(t,e,{fetchAaveSwapParams:r,fetchAaveSwapQuotes:n,withdrawAmountD18:o,slippage:a})=>Promise.all((t??[]).map(async i=>{if(!l(i,e))return{asset:i};try{const u=await r({withdrawAmountD18:o,slippage:a});if(u?.srcData.length){const A=await n({swapParams:u,slippage:a});return{asset:i,swapParams:u,swapQuotes:A}}return{asset:i}}catch(u){return console.error(u),{asset:i}}}));exports.addTokenToWallet=x;exports.buildAaveWithdrawAssetTransactionData=w;exports.buildComplexAssetDataForRouter=O;exports.buildSwapQuoteKeyForAave=N;exports.buildSwapWithdrawTransactionData=q;exports.buildZapDepositTransactionArguments=Q;exports.clientSide=dt;exports.commify=st;exports.createDefaultComplexAssetData=Et;exports.enrichAssetsWithSwapQuotes=ft;exports.extractAvailableRouterKeys=Dt;exports.formatBalance=b;exports.formatByCurrency=at;exports.formatNumberToLimitedDecimals=B;exports.formatNumeratorToPercentage=ot;exports.formatPercentage=R;exports.formatToUsd=L;exports.formatTokenBalance=it;exports.getContractAbiById=$;exports.getContractAddressById=f;exports.getConventionalTokenPriceDecimals=V;exports.getErrorKey=S;exports.getFlatMoneyCollateralByLeverageAddress=At;exports.getFlatMoneyLinkByUnitAddress=mt;exports.getGmxWithdrawAssetByLeverageAddress=pt;exports.getGmxWithdrawAssetByVaultAddress=St;exports.getNativeTokenInvestableBalance=j;exports.getPercent=y;exports.getPoolFraction=Z;exports.getSlippageToleranceForContractTransaction=H;exports.getTxHashShort=ct;exports.isAaveLendAndBorrowAsset=G;exports.isEqualAddress=l;exports.isFlatMoneyLeveragedAsset=lt;exports.isFmpAirdropVaultAddress=ut;exports.isGmxLeveragedAsset=Tt;exports.isNativeToken=z;exports.isNumberType=rt;exports.isNumeric=I;exports.isStableSymbol=X;exports.isZeroAddress=U;exports.logTransactionByActionType=gt;exports.nonZeroBigInt=nt;exports.normalizeNumber=h;exports.parseAmountToD18=k;exports.parseContractErrorMessage=et;exports.removeInsignificantTrailingZeros=D;exports.shiftBy=Y;exports.shortenAddress=W;exports.sliceByIndex=K;exports.transformAddressForAnalytics=F;exports.truncateString=C;exports.tryEstimateWithRouters=_t;exports.validateLoggerEventParams=J;