@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.
- package/README.md +3 -1
- package/dist/README.md +3 -1
- package/dist/bridging/BridgingSdk/BridgingSdk.d.ts +87 -63
- package/dist/bridging/BridgingSdk/findBridgeProviderFromHook.d.ts +2 -0
- package/dist/bridging/BridgingSdk/getBridgeSignedHook.d.ts +8 -0
- package/dist/bridging/BridgingSdk/getCrossChainOrder.d.ts +16 -0
- package/dist/bridging/BridgingSdk/getQuoteWithBridge.d.ts +3 -0
- package/dist/bridging/BridgingSdk/getQuoteWithoutBridge.d.ts +7 -7
- package/dist/bridging/BridgingSdk/mock/bridgeRequestMocks.d.ts +20 -0
- package/dist/bridging/BridgingSdk/types.d.ts +43 -0
- package/dist/bridging/const.d.ts +4 -2
- package/dist/bridging/errors.d.ts +22 -0
- package/dist/bridging/index.d.ts +8 -5
- package/dist/bridging/providers/across/AcrossApi.d.ts +30 -195
- package/dist/bridging/providers/across/AcrossBridgeProvider.d.ts +44 -41
- package/dist/bridging/providers/across/abi.d.ts +154 -154
- package/dist/bridging/providers/across/const/contracts.d.ts +3 -3
- package/dist/bridging/providers/across/const/interfaces.d.ts +3 -0
- package/dist/bridging/providers/across/const/misc.d.ts +2 -0
- package/dist/bridging/providers/across/const/tokens.d.ts +11 -11
- package/dist/bridging/providers/across/createAcrossDepositCall.d.ts +9 -9
- package/dist/bridging/providers/across/getDepositParams.d.ts +4 -0
- package/dist/bridging/providers/across/types.d.ts +242 -0
- package/dist/bridging/providers/across/util.d.ts +43 -39
- package/dist/bridging/providers/bungee/BungeeApi.d.ts +67 -0
- package/dist/bridging/providers/bungee/BungeeBridgeProvider.d.ts +44 -0
- package/dist/bridging/providers/bungee/abi.d.ts +203 -0
- package/dist/bridging/providers/bungee/const/contracts.d.ts +4 -0
- package/dist/bridging/providers/bungee/const/misc.d.ts +8 -0
- package/dist/bridging/providers/bungee/createBungeeDepositCall.d.ts +7 -0
- package/dist/bridging/providers/bungee/getBridgingStatusFromEvents.d.ts +3 -0
- package/dist/bridging/providers/bungee/types.d.ts +267 -0
- package/dist/bridging/providers/bungee/util.d.ts +62 -0
- package/dist/bridging/providers/mock/MockBridgeProvider.d.ts +26 -20
- package/dist/bridging/providers/utils/getGasLimitEstimationForHook.d.ts +4 -0
- package/dist/bridging/types.d.ts +323 -251
- package/dist/bridging/utils.d.ts +9 -6
- package/dist/chains/const/index.d.ts +25 -25
- package/dist/chains/const/path.d.ts +1 -1
- package/dist/chains/details/arbitrum.d.ts +7 -7
- package/dist/chains/details/avalanche.d.ts +2 -0
- package/dist/chains/details/base.d.ts +7 -7
- package/dist/chains/details/gnosis.d.ts +7 -7
- package/dist/chains/details/index.d.ts +8 -0
- package/dist/chains/details/mainnet.d.ts +7 -7
- package/dist/chains/details/optimism.d.ts +2 -2
- package/dist/chains/details/polygon.d.ts +2 -2
- package/dist/chains/details/sepolia.d.ts +7 -7
- package/dist/chains/index.d.ts +4 -3
- package/dist/chains/types.d.ts +127 -122
- package/dist/chains/utils.d.ts +18 -18
- package/dist/common/consts/config.d.ts +9 -9
- package/dist/common/consts/contracts.d.ts +43 -34
- package/dist/common/consts/ipfs.d.ts +2 -2
- package/dist/common/consts/order.d.ts +1 -0
- package/dist/common/consts/path.d.ts +1 -1
- package/dist/common/consts/tokens.d.ts +9 -9
- package/dist/common/generated/CoWShed.d.ts +219 -219
- package/dist/common/generated/CoWShedFactory.d.ts +191 -191
- package/dist/common/generated/ComposableCoW.d.ts +340 -340
- package/dist/common/generated/EthFlow.d.ts +117 -117
- package/dist/common/generated/ExtensibleFallbackHandler.d.ts +282 -282
- package/dist/common/generated/GPv2Settlement.d.ts +107 -107
- package/dist/common/generated/TWAP.d.ts +141 -141
- package/dist/common/generated/common.d.ts +21 -21
- package/dist/common/generated/factories/CoWShedFactory__factory.d.ts +250 -250
- package/dist/common/generated/factories/CoWShed__factory.d.ts +254 -254
- package/dist/common/generated/factories/ComposableCoW__factory.d.ts +475 -475
- package/dist/common/generated/factories/EthFlow__factory.d.ts +124 -124
- package/dist/common/generated/factories/ExtensibleFallbackHandler__factory.d.ts +389 -389
- package/dist/common/generated/factories/GPv2Settlement__factory.d.ts +81 -81
- package/dist/common/generated/factories/TWAP__factory.d.ts +260 -260
- package/dist/common/generated/factories/index.d.ts +7 -7
- package/dist/common/generated/index.d.ts +15 -15
- package/dist/common/index.d.ts +12 -10
- package/dist/common/types/config.d.ts +70 -70
- package/dist/common/types/cow-error.d.ts +4 -4
- package/dist/common/types/ethereum.d.ts +5 -5
- package/dist/common/types/tokens.d.ts +12 -12
- package/dist/common/types/wallets.d.ts +5 -5
- package/dist/common/utils/common.d.ts +1 -0
- package/dist/common/utils/config.d.ts +4 -4
- package/dist/common/utils/log.d.ts +2 -0
- package/dist/common/utils/math.d.ts +19 -0
- package/dist/common/utils/order.d.ts +4 -0
- package/dist/common/utils/serialize.d.ts +1 -1
- package/dist/common/utils/wallet.d.ts +3 -3
- package/dist/composable/ConditionalOrder.d.ts +206 -206
- package/dist/composable/ConditionalOrderFactory.d.ts +19 -19
- package/dist/composable/Multiplexer.d.ts +174 -174
- package/dist/composable/contracts.d.ts +6 -6
- package/dist/composable/generated/ComposableCoW.d.ts +340 -340
- package/dist/composable/generated/ExtensibleFallbackHandler.d.ts +282 -282
- package/dist/composable/generated/TWAP.d.ts +141 -141
- package/dist/composable/generated/common.d.ts +21 -21
- package/dist/composable/generated/factories/ComposableCoW__factory.d.ts +475 -475
- package/dist/composable/generated/factories/ExtensibleFallbackHandler__factory.d.ts +389 -389
- package/dist/composable/generated/factories/TWAP__factory.d.ts +260 -260
- package/dist/composable/generated/factories/index.d.ts +3 -3
- package/dist/composable/generated/index.d.ts +7 -7
- package/dist/composable/index.d.ts +6 -6
- package/dist/composable/orderTypes/Twap.d.ts +242 -242
- package/dist/composable/orderTypes/index.d.ts +3 -3
- package/dist/composable/orderTypes/test/TestConditionalOrder.d.ts +25 -25
- package/dist/composable/types.d.ts +133 -133
- package/dist/composable/utils.d.ts +37 -37
- package/dist/cow-shed/CowShedSdk.d.ts +74 -69
- package/dist/cow-shed/contracts/CoWShedHooks.d.ts +47 -45
- package/dist/cow-shed/contracts/utils.d.ts +4 -4
- package/dist/cow-shed/index.d.ts +3 -2
- package/dist/cow-shed/types.d.ts +17 -17
- package/dist/hooks/utils.d.ts +3 -2
- package/dist/index-847d9333.js +29 -0
- package/dist/index-847d9333.js.map +1 -0
- package/dist/index.d.ts +11 -10
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/index.modern.mjs +1 -1
- package/dist/index.module.js +4 -4
- package/dist/index.module.js.map +1 -1
- package/dist/order-book/api.d.ts +235 -235
- package/dist/order-book/generated/index.d.ts +55 -55
- package/dist/order-book/generated/models/Address.d.ts +4 -4
- package/dist/order-book/generated/models/AppData.d.ts +7 -7
- package/dist/order-book/generated/models/AppDataHash.d.ts +6 -6
- package/dist/order-book/generated/models/AppDataObject.d.ts +7 -7
- package/dist/order-book/generated/models/Auction.d.ts +30 -30
- package/dist/order-book/generated/models/AuctionOrder.d.ts +92 -92
- package/dist/order-book/generated/models/AuctionPrices.d.ts +6 -6
- package/dist/order-book/generated/models/BigUint.d.ts +4 -4
- package/dist/order-book/generated/models/BuyTokenDestination.d.ts +7 -7
- package/dist/order-book/generated/models/CallData.d.ts +4 -4
- package/dist/order-book/generated/models/CompetitionAuction.d.ts +14 -14
- package/dist/order-book/generated/models/CompetitionOrderStatus.d.ts +29 -29
- package/dist/order-book/generated/models/EcdsaSignature.d.ts +4 -4
- package/dist/order-book/generated/models/EcdsaSigningScheme.d.ts +7 -7
- package/dist/order-book/generated/models/EthflowData.d.ts +20 -20
- package/dist/order-book/generated/models/ExecutedAmounts.d.ts +5 -5
- package/dist/order-book/generated/models/ExecutedProtocolFee.d.ts +8 -8
- package/dist/order-book/generated/models/FeePolicy.d.ts +7 -7
- package/dist/order-book/generated/models/InteractionData.d.ts +11 -11
- package/dist/order-book/generated/models/NativePriceResponse.d.ts +10 -10
- package/dist/order-book/generated/models/OnchainOrderData.d.ts +24 -24
- package/dist/order-book/generated/models/Order.d.ts +3 -3
- package/dist/order-book/generated/models/OrderCancellation.d.ts +14 -14
- package/dist/order-book/generated/models/OrderCancellationError.d.ts +15 -15
- package/dist/order-book/generated/models/OrderCancellations.d.ts +18 -18
- package/dist/order-book/generated/models/OrderClass.d.ts +8 -8
- package/dist/order-book/generated/models/OrderCreation.d.ts +80 -80
- package/dist/order-book/generated/models/OrderKind.d.ts +7 -7
- package/dist/order-book/generated/models/OrderMetaData.d.ts +100 -100
- package/dist/order-book/generated/models/OrderParameters.d.ts +53 -53
- package/dist/order-book/generated/models/OrderPostError.d.ts +35 -35
- package/dist/order-book/generated/models/OrderQuoteRequest.d.ts +58 -58
- package/dist/order-book/generated/models/OrderQuoteResponse.d.ts +27 -27
- package/dist/order-book/generated/models/OrderQuoteSide.d.ts +26 -26
- package/dist/order-book/generated/models/OrderQuoteSideKindBuy.d.ts +3 -3
- package/dist/order-book/generated/models/OrderQuoteSideKindSell.d.ts +3 -3
- package/dist/order-book/generated/models/OrderQuoteValidity.d.ts +14 -14
- package/dist/order-book/generated/models/OrderStatus.d.ts +10 -10
- package/dist/order-book/generated/models/PreSignature.d.ts +4 -4
- package/dist/order-book/generated/models/PriceEstimationError.d.ts +12 -12
- package/dist/order-book/generated/models/PriceImprovement.d.ts +12 -12
- package/dist/order-book/generated/models/PriceQuality.d.ts +16 -16
- package/dist/order-book/generated/models/Quote.d.ts +19 -19
- package/dist/order-book/generated/models/SellTokenSource.d.ts +8 -8
- package/dist/order-book/generated/models/Signature.d.ts +6 -6
- package/dist/order-book/generated/models/SigningScheme.d.ts +9 -9
- package/dist/order-book/generated/models/SolverCompetitionResponse.d.ts +30 -30
- package/dist/order-book/generated/models/SolverSettlement.d.ts +47 -47
- package/dist/order-book/generated/models/Surplus.d.ts +7 -7
- package/dist/order-book/generated/models/TokenAmount.d.ts +4 -4
- package/dist/order-book/generated/models/TotalSurplus.d.ts +10 -10
- package/dist/order-book/generated/models/Trade.d.ts +57 -57
- package/dist/order-book/generated/models/TransactionHash.d.ts +4 -4
- package/dist/order-book/generated/models/UID.d.ts +8 -8
- package/dist/order-book/generated/models/Volume.d.ts +6 -6
- package/dist/order-book/index.d.ts +5 -5
- package/dist/order-book/mock.d.ts +63 -63
- package/dist/order-book/quoteAmountsAndCostsUtils.d.ts +35 -22
- package/dist/order-book/request.d.ts +49 -49
- package/dist/order-book/transformOrder.d.ts +10 -10
- package/dist/order-book/types.d.ts +74 -74
- package/dist/order-signing/index.d.ts +2 -2
- package/dist/order-signing/orderSigningUtils.d.ts +97 -97
- package/dist/order-signing/types.d.ts +55 -55
- package/dist/order-signing/utils.d.ts +49 -49
- package/dist/package.json +31 -32
- package/dist/schemas/trading/LimitOrderAdvancedSettings.ts +151 -12
- package/dist/schemas/trading/LimitTradeParameters.ts +136 -15
- package/dist/schemas/trading/QuoteResultsSerialized.ts +292 -27
- package/dist/schemas/trading/QuoterParameters.ts +10 -0
- package/dist/schemas/trading/SwapAdvancedSettings.ts +331 -12
- package/dist/schemas/trading/TradeParameters.ts +136 -15
- package/dist/src/trading/README.md +99 -7
- package/dist/subgraph/api.d.ts +77 -77
- package/dist/subgraph/graphql.d.ts +3203 -3203
- package/dist/subgraph/index.d.ts +1 -1
- package/dist/subgraph/queries.d.ts +14 -14
- package/dist/test/utils.d.ts +1 -0
- package/dist/trading/appDataUtils.d.ts +5 -4
- package/dist/trading/calculateUniqueOrderId.d.ts +5 -5
- package/dist/trading/consts.d.ts +6 -14
- package/dist/trading/getEthFlowTransaction.d.ts +12 -7
- package/dist/trading/getOrderToSign.d.ts +11 -8
- package/dist/trading/getOrderTypedData.d.ts +4 -4
- package/dist/trading/getPreSignTransaction.d.ts +4 -4
- package/dist/trading/getQuote.d.ts +26 -14
- package/dist/trading/index.d.ts +21 -19
- package/dist/trading/postCoWProtocolTrade.d.ts +4 -4
- package/dist/trading/postLimitOrder.d.ts +3 -3
- package/dist/trading/postSellNativeCurrencyOrder.d.ts +4 -7
- package/dist/trading/postSwapOrder.d.ts +5 -5
- package/dist/trading/suggestSlippageBps.d.ts +13 -0
- package/dist/trading/suggestSlippageFromFee.d.ts +19 -0
- package/dist/trading/suggestSlippageFromVolume.d.ts +10 -0
- package/dist/trading/tradingSdk.d.ts +26 -26
- package/dist/trading/types.d.ts +221 -190
- package/dist/trading/utils/getPartnerFeeBps.d.ts +2 -0
- package/dist/trading/{utils.d.ts → utils/misc.d.ts} +27 -27
- package/dist/trading/utils/slippage.d.ts +16 -0
- package/dist/utils-09dadb80.js +2 -0
- package/dist/utils-09dadb80.js.map +1 -0
- package/dist/utils-0ff3f95e.js +2 -0
- package/dist/utils-0ff3f95e.js.map +1 -0
- package/dist/utils-ddcfac77.js +2 -0
- package/dist/utils-ddcfac77.js.map +1 -0
- package/dist/utils.d.ts +3 -3
- package/dist/weiroll/index.d.ts +23 -23
- package/package.json +31 -32
- package/dist/bridging/BridgingSdk/getErc20Decimals.d.ts +0 -4
- package/dist/bridging/BridgingSdk/getQuoteWithBridging.d.ts +0 -9
- package/dist/index-317c25f1.js +0 -29
- package/dist/index-317c25f1.js.map +0 -1
- package/dist/utils-204a9cbe.js +0 -2
- package/dist/utils-204a9cbe.js.map +0 -1
- package/dist/utils-762ee9c3.js +0 -2
- package/dist/utils-762ee9c3.js.map +0 -1
- package/dist/utils-de2eb543.js +0 -2
- 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
|
+
}
|