@cowprotocol/cow-sdk 6.0.0-RC.9 → 6.0.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 (240) hide show
  1. package/README.md +3 -1
  2. package/dist/README.md +3 -1
  3. package/dist/bridging/BridgingSdk/BridgingSdk.d.ts +87 -63
  4. package/dist/bridging/BridgingSdk/findBridgeProviderFromHook.d.ts +2 -0
  5. package/dist/bridging/BridgingSdk/getBridgeSignedHook.d.ts +8 -0
  6. package/dist/bridging/BridgingSdk/getCrossChainOrder.d.ts +16 -0
  7. package/dist/bridging/BridgingSdk/getQuoteWithBridge.d.ts +3 -0
  8. package/dist/bridging/BridgingSdk/getQuoteWithoutBridge.d.ts +7 -7
  9. package/dist/bridging/BridgingSdk/mock/bridgeRequestMocks.d.ts +20 -0
  10. package/dist/bridging/BridgingSdk/types.d.ts +43 -0
  11. package/dist/bridging/const.d.ts +4 -2
  12. package/dist/bridging/errors.d.ts +22 -0
  13. package/dist/bridging/index.d.ts +8 -5
  14. package/dist/bridging/providers/across/AcrossApi.d.ts +30 -195
  15. package/dist/bridging/providers/across/AcrossBridgeProvider.d.ts +44 -41
  16. package/dist/bridging/providers/across/abi.d.ts +154 -154
  17. package/dist/bridging/providers/across/const/contracts.d.ts +3 -3
  18. package/dist/bridging/providers/across/const/interfaces.d.ts +3 -0
  19. package/dist/bridging/providers/across/const/misc.d.ts +2 -0
  20. package/dist/bridging/providers/across/const/tokens.d.ts +11 -11
  21. package/dist/bridging/providers/across/createAcrossDepositCall.d.ts +9 -9
  22. package/dist/bridging/providers/across/getDepositParams.d.ts +4 -0
  23. package/dist/bridging/providers/across/types.d.ts +242 -0
  24. package/dist/bridging/providers/across/util.d.ts +43 -39
  25. package/dist/bridging/providers/bungee/BungeeApi.d.ts +67 -0
  26. package/dist/bridging/providers/bungee/BungeeBridgeProvider.d.ts +44 -0
  27. package/dist/bridging/providers/bungee/abi.d.ts +203 -0
  28. package/dist/bridging/providers/bungee/const/contracts.d.ts +4 -0
  29. package/dist/bridging/providers/bungee/const/misc.d.ts +8 -0
  30. package/dist/bridging/providers/bungee/createBungeeDepositCall.d.ts +7 -0
  31. package/dist/bridging/providers/bungee/getBridgingStatusFromEvents.d.ts +3 -0
  32. package/dist/bridging/providers/bungee/types.d.ts +267 -0
  33. package/dist/bridging/providers/bungee/util.d.ts +62 -0
  34. package/dist/bridging/providers/mock/MockBridgeProvider.d.ts +26 -20
  35. package/dist/bridging/providers/utils/getGasLimitEstimationForHook.d.ts +4 -0
  36. package/dist/bridging/types.d.ts +323 -251
  37. package/dist/bridging/utils.d.ts +9 -6
  38. package/dist/chains/const/index.d.ts +25 -25
  39. package/dist/chains/const/path.d.ts +1 -1
  40. package/dist/chains/details/arbitrum.d.ts +7 -7
  41. package/dist/chains/details/avalanche.d.ts +2 -0
  42. package/dist/chains/details/base.d.ts +7 -7
  43. package/dist/chains/details/gnosis.d.ts +7 -7
  44. package/dist/chains/details/index.d.ts +8 -0
  45. package/dist/chains/details/mainnet.d.ts +7 -7
  46. package/dist/chains/details/optimism.d.ts +2 -2
  47. package/dist/chains/details/polygon.d.ts +2 -2
  48. package/dist/chains/details/sepolia.d.ts +7 -7
  49. package/dist/chains/index.d.ts +4 -3
  50. package/dist/chains/types.d.ts +127 -122
  51. package/dist/chains/utils.d.ts +18 -18
  52. package/dist/common/consts/config.d.ts +9 -9
  53. package/dist/common/consts/contracts.d.ts +43 -34
  54. package/dist/common/consts/ipfs.d.ts +2 -2
  55. package/dist/common/consts/order.d.ts +1 -0
  56. package/dist/common/consts/path.d.ts +1 -1
  57. package/dist/common/consts/tokens.d.ts +9 -9
  58. package/dist/common/generated/CoWShed.d.ts +219 -219
  59. package/dist/common/generated/CoWShedFactory.d.ts +191 -191
  60. package/dist/common/generated/ComposableCoW.d.ts +340 -340
  61. package/dist/common/generated/EthFlow.d.ts +117 -117
  62. package/dist/common/generated/ExtensibleFallbackHandler.d.ts +282 -282
  63. package/dist/common/generated/GPv2Settlement.d.ts +107 -107
  64. package/dist/common/generated/TWAP.d.ts +141 -141
  65. package/dist/common/generated/common.d.ts +21 -21
  66. package/dist/common/generated/factories/CoWShedFactory__factory.d.ts +250 -250
  67. package/dist/common/generated/factories/CoWShed__factory.d.ts +254 -254
  68. package/dist/common/generated/factories/ComposableCoW__factory.d.ts +475 -475
  69. package/dist/common/generated/factories/EthFlow__factory.d.ts +124 -124
  70. package/dist/common/generated/factories/ExtensibleFallbackHandler__factory.d.ts +389 -389
  71. package/dist/common/generated/factories/GPv2Settlement__factory.d.ts +81 -81
  72. package/dist/common/generated/factories/TWAP__factory.d.ts +260 -260
  73. package/dist/common/generated/factories/index.d.ts +7 -7
  74. package/dist/common/generated/index.d.ts +15 -15
  75. package/dist/common/index.d.ts +12 -10
  76. package/dist/common/types/config.d.ts +70 -70
  77. package/dist/common/types/cow-error.d.ts +4 -4
  78. package/dist/common/types/ethereum.d.ts +5 -5
  79. package/dist/common/types/tokens.d.ts +12 -12
  80. package/dist/common/types/wallets.d.ts +5 -5
  81. package/dist/common/utils/common.d.ts +1 -0
  82. package/dist/common/utils/config.d.ts +4 -4
  83. package/dist/common/utils/log.d.ts +2 -0
  84. package/dist/common/utils/math.d.ts +19 -0
  85. package/dist/common/utils/order.d.ts +4 -0
  86. package/dist/common/utils/serialize.d.ts +1 -1
  87. package/dist/common/utils/wallet.d.ts +3 -3
  88. package/dist/composable/ConditionalOrder.d.ts +206 -206
  89. package/dist/composable/ConditionalOrderFactory.d.ts +19 -19
  90. package/dist/composable/Multiplexer.d.ts +174 -174
  91. package/dist/composable/contracts.d.ts +6 -6
  92. package/dist/composable/generated/ComposableCoW.d.ts +340 -340
  93. package/dist/composable/generated/ExtensibleFallbackHandler.d.ts +282 -282
  94. package/dist/composable/generated/TWAP.d.ts +141 -141
  95. package/dist/composable/generated/common.d.ts +21 -21
  96. package/dist/composable/generated/factories/ComposableCoW__factory.d.ts +475 -475
  97. package/dist/composable/generated/factories/ExtensibleFallbackHandler__factory.d.ts +389 -389
  98. package/dist/composable/generated/factories/TWAP__factory.d.ts +260 -260
  99. package/dist/composable/generated/factories/index.d.ts +3 -3
  100. package/dist/composable/generated/index.d.ts +7 -7
  101. package/dist/composable/index.d.ts +6 -6
  102. package/dist/composable/orderTypes/Twap.d.ts +242 -242
  103. package/dist/composable/orderTypes/index.d.ts +3 -3
  104. package/dist/composable/orderTypes/test/TestConditionalOrder.d.ts +25 -25
  105. package/dist/composable/types.d.ts +133 -133
  106. package/dist/composable/utils.d.ts +37 -37
  107. package/dist/cow-shed/CowShedSdk.d.ts +74 -69
  108. package/dist/cow-shed/contracts/CoWShedHooks.d.ts +47 -45
  109. package/dist/cow-shed/contracts/utils.d.ts +4 -4
  110. package/dist/cow-shed/index.d.ts +3 -2
  111. package/dist/cow-shed/types.d.ts +17 -17
  112. package/dist/hooks/utils.d.ts +3 -2
  113. package/dist/index-847d9333.js +29 -0
  114. package/dist/index-847d9333.js.map +1 -0
  115. package/dist/index.d.ts +11 -10
  116. package/dist/index.js +4 -4
  117. package/dist/index.js.map +1 -1
  118. package/dist/index.modern.mjs +1 -1
  119. package/dist/index.module.js +4 -4
  120. package/dist/index.module.js.map +1 -1
  121. package/dist/order-book/api.d.ts +235 -235
  122. package/dist/order-book/generated/index.d.ts +55 -55
  123. package/dist/order-book/generated/models/Address.d.ts +4 -4
  124. package/dist/order-book/generated/models/AppData.d.ts +7 -7
  125. package/dist/order-book/generated/models/AppDataHash.d.ts +6 -6
  126. package/dist/order-book/generated/models/AppDataObject.d.ts +7 -7
  127. package/dist/order-book/generated/models/Auction.d.ts +30 -30
  128. package/dist/order-book/generated/models/AuctionOrder.d.ts +92 -92
  129. package/dist/order-book/generated/models/AuctionPrices.d.ts +6 -6
  130. package/dist/order-book/generated/models/BigUint.d.ts +4 -4
  131. package/dist/order-book/generated/models/BuyTokenDestination.d.ts +7 -7
  132. package/dist/order-book/generated/models/CallData.d.ts +4 -4
  133. package/dist/order-book/generated/models/CompetitionAuction.d.ts +14 -14
  134. package/dist/order-book/generated/models/CompetitionOrderStatus.d.ts +29 -29
  135. package/dist/order-book/generated/models/EcdsaSignature.d.ts +4 -4
  136. package/dist/order-book/generated/models/EcdsaSigningScheme.d.ts +7 -7
  137. package/dist/order-book/generated/models/EthflowData.d.ts +20 -20
  138. package/dist/order-book/generated/models/ExecutedAmounts.d.ts +5 -5
  139. package/dist/order-book/generated/models/ExecutedProtocolFee.d.ts +8 -8
  140. package/dist/order-book/generated/models/FeePolicy.d.ts +7 -7
  141. package/dist/order-book/generated/models/InteractionData.d.ts +11 -11
  142. package/dist/order-book/generated/models/NativePriceResponse.d.ts +10 -10
  143. package/dist/order-book/generated/models/OnchainOrderData.d.ts +24 -24
  144. package/dist/order-book/generated/models/Order.d.ts +3 -3
  145. package/dist/order-book/generated/models/OrderCancellation.d.ts +14 -14
  146. package/dist/order-book/generated/models/OrderCancellationError.d.ts +15 -15
  147. package/dist/order-book/generated/models/OrderCancellations.d.ts +18 -18
  148. package/dist/order-book/generated/models/OrderClass.d.ts +8 -8
  149. package/dist/order-book/generated/models/OrderCreation.d.ts +80 -80
  150. package/dist/order-book/generated/models/OrderKind.d.ts +7 -7
  151. package/dist/order-book/generated/models/OrderMetaData.d.ts +100 -100
  152. package/dist/order-book/generated/models/OrderParameters.d.ts +53 -53
  153. package/dist/order-book/generated/models/OrderPostError.d.ts +35 -35
  154. package/dist/order-book/generated/models/OrderQuoteRequest.d.ts +58 -58
  155. package/dist/order-book/generated/models/OrderQuoteResponse.d.ts +27 -27
  156. package/dist/order-book/generated/models/OrderQuoteSide.d.ts +26 -26
  157. package/dist/order-book/generated/models/OrderQuoteSideKindBuy.d.ts +3 -3
  158. package/dist/order-book/generated/models/OrderQuoteSideKindSell.d.ts +3 -3
  159. package/dist/order-book/generated/models/OrderQuoteValidity.d.ts +14 -14
  160. package/dist/order-book/generated/models/OrderStatus.d.ts +10 -10
  161. package/dist/order-book/generated/models/PreSignature.d.ts +4 -4
  162. package/dist/order-book/generated/models/PriceEstimationError.d.ts +12 -12
  163. package/dist/order-book/generated/models/PriceImprovement.d.ts +12 -12
  164. package/dist/order-book/generated/models/PriceQuality.d.ts +16 -16
  165. package/dist/order-book/generated/models/Quote.d.ts +19 -19
  166. package/dist/order-book/generated/models/SellTokenSource.d.ts +8 -8
  167. package/dist/order-book/generated/models/Signature.d.ts +6 -6
  168. package/dist/order-book/generated/models/SigningScheme.d.ts +9 -9
  169. package/dist/order-book/generated/models/SolverCompetitionResponse.d.ts +30 -30
  170. package/dist/order-book/generated/models/SolverSettlement.d.ts +47 -47
  171. package/dist/order-book/generated/models/Surplus.d.ts +7 -7
  172. package/dist/order-book/generated/models/TokenAmount.d.ts +4 -4
  173. package/dist/order-book/generated/models/TotalSurplus.d.ts +10 -10
  174. package/dist/order-book/generated/models/Trade.d.ts +57 -57
  175. package/dist/order-book/generated/models/TransactionHash.d.ts +4 -4
  176. package/dist/order-book/generated/models/UID.d.ts +8 -8
  177. package/dist/order-book/generated/models/Volume.d.ts +6 -6
  178. package/dist/order-book/index.d.ts +5 -5
  179. package/dist/order-book/mock.d.ts +63 -63
  180. package/dist/order-book/quoteAmountsAndCostsUtils.d.ts +35 -22
  181. package/dist/order-book/request.d.ts +49 -49
  182. package/dist/order-book/transformOrder.d.ts +10 -10
  183. package/dist/order-book/types.d.ts +74 -74
  184. package/dist/order-signing/index.d.ts +2 -2
  185. package/dist/order-signing/orderSigningUtils.d.ts +97 -97
  186. package/dist/order-signing/types.d.ts +55 -55
  187. package/dist/order-signing/utils.d.ts +49 -49
  188. package/dist/package.json +31 -32
  189. package/dist/schemas/trading/LimitOrderAdvancedSettings.ts +151 -12
  190. package/dist/schemas/trading/LimitTradeParameters.ts +136 -15
  191. package/dist/schemas/trading/QuoteResultsSerialized.ts +292 -27
  192. package/dist/schemas/trading/QuoterParameters.ts +10 -0
  193. package/dist/schemas/trading/SwapAdvancedSettings.ts +331 -12
  194. package/dist/schemas/trading/TradeParameters.ts +136 -15
  195. package/dist/src/trading/README.md +99 -7
  196. package/dist/subgraph/api.d.ts +77 -77
  197. package/dist/subgraph/graphql.d.ts +3203 -3203
  198. package/dist/subgraph/index.d.ts +1 -1
  199. package/dist/subgraph/queries.d.ts +14 -14
  200. package/dist/test/utils.d.ts +1 -0
  201. package/dist/trading/appDataUtils.d.ts +5 -4
  202. package/dist/trading/calculateUniqueOrderId.d.ts +5 -5
  203. package/dist/trading/consts.d.ts +6 -14
  204. package/dist/trading/getEthFlowTransaction.d.ts +12 -7
  205. package/dist/trading/getOrderToSign.d.ts +11 -8
  206. package/dist/trading/getOrderTypedData.d.ts +4 -4
  207. package/dist/trading/getPreSignTransaction.d.ts +4 -4
  208. package/dist/trading/getQuote.d.ts +26 -14
  209. package/dist/trading/index.d.ts +21 -19
  210. package/dist/trading/postCoWProtocolTrade.d.ts +4 -4
  211. package/dist/trading/postLimitOrder.d.ts +3 -3
  212. package/dist/trading/postSellNativeCurrencyOrder.d.ts +4 -7
  213. package/dist/trading/postSwapOrder.d.ts +5 -5
  214. package/dist/trading/suggestSlippageBps.d.ts +13 -0
  215. package/dist/trading/suggestSlippageFromFee.d.ts +19 -0
  216. package/dist/trading/suggestSlippageFromVolume.d.ts +10 -0
  217. package/dist/trading/tradingSdk.d.ts +26 -26
  218. package/dist/trading/types.d.ts +221 -190
  219. package/dist/trading/utils/getPartnerFeeBps.d.ts +2 -0
  220. package/dist/trading/{utils.d.ts → utils/misc.d.ts} +27 -27
  221. package/dist/trading/utils/slippage.d.ts +16 -0
  222. package/dist/utils-09dadb80.js +2 -0
  223. package/dist/utils-09dadb80.js.map +1 -0
  224. package/dist/utils-0ff3f95e.js +2 -0
  225. package/dist/utils-0ff3f95e.js.map +1 -0
  226. package/dist/utils-ddcfac77.js +2 -0
  227. package/dist/utils-ddcfac77.js.map +1 -0
  228. package/dist/utils.d.ts +3 -3
  229. package/dist/weiroll/index.d.ts +23 -23
  230. package/package.json +31 -32
  231. package/dist/bridging/BridgingSdk/getErc20Decimals.d.ts +0 -4
  232. package/dist/bridging/BridgingSdk/getQuoteWithBridging.d.ts +0 -9
  233. package/dist/index-317c25f1.js +0 -29
  234. package/dist/index-317c25f1.js.map +0 -1
  235. package/dist/utils-204a9cbe.js +0 -2
  236. package/dist/utils-204a9cbe.js.map +0 -1
  237. package/dist/utils-762ee9c3.js +0 -2
  238. package/dist/utils-762ee9c3.js.map +0 -1
  239. package/dist/utils-de2eb543.js +0 -2
  240. package/dist/utils-de2eb543.js.map +0 -1
@@ -1,206 +1,206 @@
1
- import { BigNumber } from 'ethers';
2
- import { GPv2Order } from '../common/generated/ComposableCoW';
3
- import { ConditionalOrderArguments, ConditionalOrderParams, ContextFactory, IsValidResult, OwnerContext, PollParams, PollResult, PollResultErrors } from './types';
4
- import { UID } from '../order-book';
5
- /**
6
- * An abstract base class from which all conditional orders should inherit.
7
- *
8
- * This class provides some basic functionality to help with handling conditional orders,
9
- * such as:
10
- * - Validating the conditional order
11
- * - Creating a human-readable string representation of the conditional order
12
- * - Serializing the conditional order for use with the `IConditionalOrder` struct
13
- * - Getting any dependencies for the conditional order
14
- * - Getting the off-chain input for the conditional order
15
- *
16
- * **NOTE**: Instances of conditional orders have an `id` property that is a `keccak256` hash of
17
- * the serialized conditional order.
18
- */
19
- export declare abstract class ConditionalOrder<D, S> {
20
- readonly handler: string;
21
- readonly salt: string;
22
- readonly data: D;
23
- readonly staticInput: S;
24
- readonly hasOffChainInput: boolean;
25
- /**
26
- * A constructor that provides some basic validation for the conditional order.
27
- *
28
- * This constructor **MUST** be called by any class that inherits from `ConditionalOrder`.
29
- *
30
- * **NOTE**: The salt is optional and will be randomly generated if not provided.
31
- * @param handler The address of the handler for the conditional order.
32
- * @param salt A 32-byte string used to salt the conditional order.
33
- * @param data The data of the order
34
- * @param hasOffChainInput Whether the conditional order has off-chain input.
35
- * @throws If the handler is not a valid ethereum address.
36
- * @throws If the salt is not a valid 32-byte string.
37
- */
38
- constructor(params: ConditionalOrderArguments<D>);
39
- abstract get isSingleOrder(): boolean;
40
- /**
41
- * Get a descriptive name for the type of the conditional order (i.e twap, dca, etc).
42
- *
43
- * @returns {string} The concrete type of the conditional order.
44
- */
45
- abstract get orderType(): string;
46
- /**
47
- * Get the context dependency for the conditional order.
48
- *
49
- * This is used when calling `createWithContext` or `setRootWithContext` on a ComposableCoW-enabled Safe.
50
- * @returns The context dependency.
51
- */
52
- get context(): ContextFactory | undefined;
53
- assertIsValid(): void;
54
- abstract isValid(): IsValidResult;
55
- /**
56
- * Get the calldata for creating the conditional order.
57
- *
58
- * This will automatically determine whether or not to use `create` or `createWithContext` based on the
59
- * order type's context dependency.
60
- *
61
- * **NOTE**: By default, this will cause the create to emit the `ConditionalOrderCreated` event.
62
- * @returns The calldata for creating the conditional order.
63
- */
64
- get createCalldata(): string;
65
- /**
66
- * Get the calldata for removing a conditional order that was created as a single order.
67
- * @returns The calldata for removing the conditional order.
68
- */
69
- get removeCalldata(): string;
70
- /**
71
- * Calculate the id of the conditional order (which also happens to be the key used for `ctx` in the ComposableCoW contract).
72
- *
73
- * This is a `keccak256` hash of the serialized conditional order.
74
- * @returns The id of the conditional order.
75
- */
76
- get id(): string;
77
- /**
78
- * The context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet
79
- *
80
- * The context, relates to the 'ctx' in the contract: https://github.com/cowprotocol/composable-cow/blob/c7fb85ab10c05e28a1632ba97a1749fb261fcdfb/src/interfaces/IConditionalOrder.sol#L38
81
- */
82
- protected get ctx(): string;
83
- /**
84
- * Get the `leaf` of the conditional order. This is the data that is used to create the merkle tree.
85
- *
86
- * For the purposes of this library, the `leaf` is the `ConditionalOrderParams` struct.
87
- * @returns The `leaf` of the conditional order.
88
- * @see ConditionalOrderParams
89
- */
90
- get leaf(): ConditionalOrderParams;
91
- /**
92
- * Calculate the id of the conditional order.
93
- * @param leaf The `leaf` representing the conditional order.
94
- * @returns The id of the conditional order.
95
- * @see ConditionalOrderParams
96
- */
97
- static leafToId(leaf: ConditionalOrderParams): string;
98
- /**
99
- * If the conditional order has off-chain input, return it!
100
- *
101
- * **NOTE**: This should be overridden by any conditional order that has off-chain input.
102
- * @returns The off-chain input.
103
- */
104
- get offChainInput(): string;
105
- /**
106
- * Create a human-readable string representation of the conditional order.
107
- *
108
- * @param tokenFormatter An optional function that takes an address and an amount and returns a human-readable string.
109
- */
110
- abstract toString(tokenFormatter?: (address: string, amount: BigNumber) => string): string;
111
- /**
112
- * Serializes the conditional order into it's ABI-encoded form.
113
- *
114
- * @returns The equivalent of `IConditionalOrder.Params` for the conditional order.
115
- */
116
- abstract serialize(): string;
117
- /**
118
- * Encode the `staticInput` for the conditional order.
119
- *
120
- * @returns The ABI-encoded `staticInput` for the conditional order.
121
- * @see ConditionalOrderParams
122
- */
123
- abstract encodeStaticInput(): string;
124
- /**
125
- * A helper function for generically serializing a conditional order's static input.
126
- *
127
- * @param orderDataTypes ABI types for the order's data struct.
128
- * @param data The order's data struct.
129
- * @returns An ABI-encoded representation of the order's data struct.
130
- */
131
- protected encodeStaticInputHelper(orderDataTypes: string[], staticInput: S): string;
132
- /**
133
- * Poll a conditional order to see if it is tradeable.
134
- *
135
- * @param owner The owner of the conditional order.
136
- * @param p The proof and parameters.
137
- * @param chain Which chain to use for the ComposableCoW contract.
138
- * @param provider An RPC provider for the chain.
139
- * @param offChainInputFn A function, if provided, that will return the off-chain input for the conditional order.
140
- * @throws If the conditional order is not tradeable.
141
- * @returns The tradeable `GPv2Order.Data` struct and the `signature` for the conditional order.
142
- */
143
- poll(params: PollParams): Promise<PollResult>;
144
- /**
145
- * Checks if the owner authorized the conditional order.
146
- *
147
- * @param params owner context, to be able to check if the order is authorized
148
- * @returns true if the owner authorized the order, false otherwise.
149
- */
150
- isAuthorized(params: OwnerContext): Promise<boolean>;
151
- /**
152
- * Checks the value in the cabinet for a given owner and chain
153
- *
154
- * @param params owner context, to be able to check the cabinet
155
- */
156
- cabinet(params: OwnerContext): Promise<string>;
157
- /**
158
- * Allow concrete conditional orders to perform additional validation for the poll method.
159
- *
160
- * This will allow the concrete orders to decide when an order shouldn't be polled again. For example, if the orders is expired.
161
- * It also allows to signal when should the next check be done. For example, an order could signal that the validations will fail until a certain time or block.
162
- *
163
- * @param params The poll parameters
164
- *
165
- * @returns undefined if the concrete order can't make a decision. Otherwise, it returns a PollResultErrors object.
166
- */
167
- protected abstract pollValidate(params: PollParams): Promise<PollResultErrors | undefined>;
168
- /**
169
- * This method lets the concrete conditional order decide what to do if the order yielded in the polling is already present in the Orderbook API.
170
- *
171
- * The concrete conditional order will have a chance to schedule the next poll.
172
- * For example, a TWAP order that has the current part already in the orderbook, can signal that the next poll should be done at the start time of the next part.
173
- *
174
- * @param params
175
- */
176
- protected abstract handlePollFailedAlreadyPresent(orderUid: UID, order: GPv2Order.DataStruct, params: PollParams): Promise<PollResultErrors | undefined>;
177
- /**
178
- * Convert the struct that the contract expect as an encoded `staticInput` into a friendly data object modelling the smart order.
179
- *
180
- * **NOTE**: This should be overridden by any conditional order that requires transformations.
181
- * This implementation is a no-op if you use the same type for both.
182
- *
183
- * @param params {S} Parameters that are passed in to the constructor.
184
- * @returns {D} The static input for the conditional order.
185
- */
186
- abstract transformStructToData(params: S): D;
187
- /**
188
- * Converts a friendly data object modelling the smart order into the struct that the contract expect as an encoded `staticInput`.
189
- *
190
- * **NOTE**: This should be overridden by any conditional order that requires transformations.
191
- * This implementation is a no-op if you use the same type for both.
192
- *
193
- * @param params {S} Parameters that are passed in to the constructor.
194
- * @returns {D} The static input for the conditional order.
195
- */
196
- abstract transformDataToStruct(params: D): S;
197
- /**
198
- * A helper function for generically deserializing a conditional order.
199
- * @param s The ABI-encoded `IConditionalOrder.Params` struct to deserialize.
200
- * @param handler Address of the handler for the conditional order.
201
- * @param orderDataTypes ABI types for the order's data struct.
202
- * @param callback A callback function that takes the deserialized data struct and the salt and returns an instance of the class.
203
- * @returns An instance of the conditional order class.
204
- */
205
- protected static deserializeHelper<T>(s: string, handler: string, orderDataTypes: string[], callback: (d: any, salt: string) => T): T;
206
- }
1
+ import { BigNumber } from 'ethers';
2
+ import { GPv2Order } from '../common/generated/ComposableCoW';
3
+ import { ConditionalOrderArguments, ConditionalOrderParams, ContextFactory, IsValidResult, OwnerContext, PollParams, PollResult, PollResultErrors } from './types';
4
+ import { UID } from '../order-book';
5
+ /**
6
+ * An abstract base class from which all conditional orders should inherit.
7
+ *
8
+ * This class provides some basic functionality to help with handling conditional orders,
9
+ * such as:
10
+ * - Validating the conditional order
11
+ * - Creating a human-readable string representation of the conditional order
12
+ * - Serializing the conditional order for use with the `IConditionalOrder` struct
13
+ * - Getting any dependencies for the conditional order
14
+ * - Getting the off-chain input for the conditional order
15
+ *
16
+ * **NOTE**: Instances of conditional orders have an `id` property that is a `keccak256` hash of
17
+ * the serialized conditional order.
18
+ */
19
+ export declare abstract class ConditionalOrder<D, S> {
20
+ readonly handler: string;
21
+ readonly salt: string;
22
+ readonly data: D;
23
+ readonly staticInput: S;
24
+ readonly hasOffChainInput: boolean;
25
+ /**
26
+ * A constructor that provides some basic validation for the conditional order.
27
+ *
28
+ * This constructor **MUST** be called by any class that inherits from `ConditionalOrder`.
29
+ *
30
+ * **NOTE**: The salt is optional and will be randomly generated if not provided.
31
+ * @param handler The address of the handler for the conditional order.
32
+ * @param salt A 32-byte string used to salt the conditional order.
33
+ * @param data The data of the order
34
+ * @param hasOffChainInput Whether the conditional order has off-chain input.
35
+ * @throws If the handler is not a valid ethereum address.
36
+ * @throws If the salt is not a valid 32-byte string.
37
+ */
38
+ constructor(params: ConditionalOrderArguments<D>);
39
+ abstract get isSingleOrder(): boolean;
40
+ /**
41
+ * Get a descriptive name for the type of the conditional order (i.e twap, dca, etc).
42
+ *
43
+ * @returns {string} The concrete type of the conditional order.
44
+ */
45
+ abstract get orderType(): string;
46
+ /**
47
+ * Get the context dependency for the conditional order.
48
+ *
49
+ * This is used when calling `createWithContext` or `setRootWithContext` on a ComposableCoW-enabled Safe.
50
+ * @returns The context dependency.
51
+ */
52
+ get context(): ContextFactory | undefined;
53
+ assertIsValid(): void;
54
+ abstract isValid(): IsValidResult;
55
+ /**
56
+ * Get the calldata for creating the conditional order.
57
+ *
58
+ * This will automatically determine whether or not to use `create` or `createWithContext` based on the
59
+ * order type's context dependency.
60
+ *
61
+ * **NOTE**: By default, this will cause the create to emit the `ConditionalOrderCreated` event.
62
+ * @returns The calldata for creating the conditional order.
63
+ */
64
+ get createCalldata(): string;
65
+ /**
66
+ * Get the calldata for removing a conditional order that was created as a single order.
67
+ * @returns The calldata for removing the conditional order.
68
+ */
69
+ get removeCalldata(): string;
70
+ /**
71
+ * Calculate the id of the conditional order (which also happens to be the key used for `ctx` in the ComposableCoW contract).
72
+ *
73
+ * This is a `keccak256` hash of the serialized conditional order.
74
+ * @returns The id of the conditional order.
75
+ */
76
+ get id(): string;
77
+ /**
78
+ * The context key of the order (bytes32(0) if a merkle tree is used, otherwise H(params)) with which to lookup the cabinet
79
+ *
80
+ * The context, relates to the 'ctx' in the contract: https://github.com/cowprotocol/composable-cow/blob/c7fb85ab10c05e28a1632ba97a1749fb261fcdfb/src/interfaces/IConditionalOrder.sol#L38
81
+ */
82
+ protected get ctx(): string;
83
+ /**
84
+ * Get the `leaf` of the conditional order. This is the data that is used to create the merkle tree.
85
+ *
86
+ * For the purposes of this library, the `leaf` is the `ConditionalOrderParams` struct.
87
+ * @returns The `leaf` of the conditional order.
88
+ * @see ConditionalOrderParams
89
+ */
90
+ get leaf(): ConditionalOrderParams;
91
+ /**
92
+ * Calculate the id of the conditional order.
93
+ * @param leaf The `leaf` representing the conditional order.
94
+ * @returns The id of the conditional order.
95
+ * @see ConditionalOrderParams
96
+ */
97
+ static leafToId(leaf: ConditionalOrderParams): string;
98
+ /**
99
+ * If the conditional order has off-chain input, return it!
100
+ *
101
+ * **NOTE**: This should be overridden by any conditional order that has off-chain input.
102
+ * @returns The off-chain input.
103
+ */
104
+ get offChainInput(): string;
105
+ /**
106
+ * Create a human-readable string representation of the conditional order.
107
+ *
108
+ * @param tokenFormatter An optional function that takes an address and an amount and returns a human-readable string.
109
+ */
110
+ abstract toString(tokenFormatter?: (address: string, amount: BigNumber) => string): string;
111
+ /**
112
+ * Serializes the conditional order into it's ABI-encoded form.
113
+ *
114
+ * @returns The equivalent of `IConditionalOrder.Params` for the conditional order.
115
+ */
116
+ abstract serialize(): string;
117
+ /**
118
+ * Encode the `staticInput` for the conditional order.
119
+ *
120
+ * @returns The ABI-encoded `staticInput` for the conditional order.
121
+ * @see ConditionalOrderParams
122
+ */
123
+ abstract encodeStaticInput(): string;
124
+ /**
125
+ * A helper function for generically serializing a conditional order's static input.
126
+ *
127
+ * @param orderDataTypes ABI types for the order's data struct.
128
+ * @param data The order's data struct.
129
+ * @returns An ABI-encoded representation of the order's data struct.
130
+ */
131
+ protected encodeStaticInputHelper(orderDataTypes: string[], staticInput: S): string;
132
+ /**
133
+ * Poll a conditional order to see if it is tradeable.
134
+ *
135
+ * @param owner The owner of the conditional order.
136
+ * @param p The proof and parameters.
137
+ * @param chain Which chain to use for the ComposableCoW contract.
138
+ * @param provider An RPC provider for the chain.
139
+ * @param offChainInputFn A function, if provided, that will return the off-chain input for the conditional order.
140
+ * @throws If the conditional order is not tradeable.
141
+ * @returns The tradeable `GPv2Order.Data` struct and the `signature` for the conditional order.
142
+ */
143
+ poll(params: PollParams): Promise<PollResult>;
144
+ /**
145
+ * Checks if the owner authorized the conditional order.
146
+ *
147
+ * @param params owner context, to be able to check if the order is authorized
148
+ * @returns true if the owner authorized the order, false otherwise.
149
+ */
150
+ isAuthorized(params: OwnerContext): Promise<boolean>;
151
+ /**
152
+ * Checks the value in the cabinet for a given owner and chain
153
+ *
154
+ * @param params owner context, to be able to check the cabinet
155
+ */
156
+ cabinet(params: OwnerContext): Promise<string>;
157
+ /**
158
+ * Allow concrete conditional orders to perform additional validation for the poll method.
159
+ *
160
+ * This will allow the concrete orders to decide when an order shouldn't be polled again. For example, if the orders is expired.
161
+ * It also allows to signal when should the next check be done. For example, an order could signal that the validations will fail until a certain time or block.
162
+ *
163
+ * @param params The poll parameters
164
+ *
165
+ * @returns undefined if the concrete order can't make a decision. Otherwise, it returns a PollResultErrors object.
166
+ */
167
+ protected abstract pollValidate(params: PollParams): Promise<PollResultErrors | undefined>;
168
+ /**
169
+ * This method lets the concrete conditional order decide what to do if the order yielded in the polling is already present in the Orderbook API.
170
+ *
171
+ * The concrete conditional order will have a chance to schedule the next poll.
172
+ * For example, a TWAP order that has the current part already in the orderbook, can signal that the next poll should be done at the start time of the next part.
173
+ *
174
+ * @param params
175
+ */
176
+ protected abstract handlePollFailedAlreadyPresent(orderUid: UID, order: GPv2Order.DataStruct, params: PollParams): Promise<PollResultErrors | undefined>;
177
+ /**
178
+ * Convert the struct that the contract expect as an encoded `staticInput` into a friendly data object modelling the smart order.
179
+ *
180
+ * **NOTE**: This should be overridden by any conditional order that requires transformations.
181
+ * This implementation is a no-op if you use the same type for both.
182
+ *
183
+ * @param params {S} Parameters that are passed in to the constructor.
184
+ * @returns {D} The static input for the conditional order.
185
+ */
186
+ abstract transformStructToData(params: S): D;
187
+ /**
188
+ * Converts a friendly data object modelling the smart order into the struct that the contract expect as an encoded `staticInput`.
189
+ *
190
+ * **NOTE**: This should be overridden by any conditional order that requires transformations.
191
+ * This implementation is a no-op if you use the same type for both.
192
+ *
193
+ * @param params {S} Parameters that are passed in to the constructor.
194
+ * @returns {D} The static input for the conditional order.
195
+ */
196
+ abstract transformDataToStruct(params: D): S;
197
+ /**
198
+ * A helper function for generically deserializing a conditional order.
199
+ * @param s The ABI-encoded `IConditionalOrder.Params` struct to deserialize.
200
+ * @param handler Address of the handler for the conditional order.
201
+ * @param orderDataTypes ABI types for the order's data struct.
202
+ * @param callback A callback function that takes the deserialized data struct and the salt and returns an instance of the class.
203
+ * @returns An instance of the conditional order class.
204
+ */
205
+ protected static deserializeHelper<T>(s: string, handler: string, orderDataTypes: string[], callback: (d: any, salt: string) => T): T;
206
+ }
@@ -1,19 +1,19 @@
1
- import { type ConditionalOrder } from './ConditionalOrder';
2
- import { ConditionalOrderParams } from './types';
3
- export type FromParams<D, S> = (params: ConditionalOrderParams) => ConditionalOrder<D, S>;
4
- export type ConditionalOrderRegistry = Record<string, FromParams<unknown, unknown>>;
5
- /**
6
- * Factory for conditional orders.
7
- *
8
- * It uses a registry to instantiate the correct conditional order based on the handler.
9
- *
10
- * Knowing the handler, the factory will instantiate the correct conditional order using the staticInput data.
11
- */
12
- export declare class ConditionalOrderFactory {
13
- knownOrderTypes: ConditionalOrderRegistry;
14
- constructor(registry: ConditionalOrderRegistry);
15
- /**
16
- * Get the conditional order factory from the conditional order parameters
17
- */
18
- fromParams(params: ConditionalOrderParams): ConditionalOrder<unknown, unknown> | undefined;
19
- }
1
+ import { type ConditionalOrder } from './ConditionalOrder';
2
+ import { ConditionalOrderParams } from './types';
3
+ export type FromParams<D, S> = (params: ConditionalOrderParams) => ConditionalOrder<D, S>;
4
+ export type ConditionalOrderRegistry = Record<string, FromParams<unknown, unknown>>;
5
+ /**
6
+ * Factory for conditional orders.
7
+ *
8
+ * It uses a registry to instantiate the correct conditional order based on the handler.
9
+ *
10
+ * Knowing the handler, the factory will instantiate the correct conditional order using the staticInput data.
11
+ */
12
+ export declare class ConditionalOrderFactory {
13
+ knownOrderTypes: ConditionalOrderRegistry;
14
+ constructor(registry: ConditionalOrderRegistry);
15
+ /**
16
+ * Get the conditional order factory from the conditional order parameters
17
+ */
18
+ fromParams(params: ConditionalOrderParams): ConditionalOrder<unknown, unknown> | undefined;
19
+ }