UNPKG

@cowprotocol/cow-sdk

Version:

<p align="center"> <img width="400" src="https://github.com/cowprotocol/cow-sdk/raw/main/docs/images/CoW.png" /> </p>

140 lines (139 loc) 4.41 kB
import type { AppDataParams, latest, LatestAppDataDocVersion } from '@cowprotocol/app-data'; import { AppData, AppDataHash, OrderKind, OrderParameters, OrderQuoteRequest, OrderQuoteResponse, QuoteAmountsAndCosts, TokenAmount } from '../order-book'; import type { Signer } from '@ethersproject/abstract-signer'; import type { CowEnv, SupportedChainId } from '../common'; import type { ExternalProvider } from '@ethersproject/providers'; import type { UnsignedOrder } from '../order-signing'; export type PrivateKey = string; export type AccountAddress = `0x${string}`; export declare const ORDER_PRIMARY_TYPE: "Order"; /** * EIP-712 typed data domain. */ interface TypedDataDomain { name: string; version: string; chainId: number; verifyingContract: string; } /** * EIP-712 typed data field. */ interface TypedDataField { name: string; type: string; } /** * EIP-712 typed data for an order. */ export interface OrderTypedData { domain: TypedDataDomain; primaryType: typeof ORDER_PRIMARY_TYPE; types: Record<string, TypedDataField[]>; message: UnsignedOrder; } /** * Minimal set of parameters to create a trade. */ export interface TradeBaseParameters { kind: OrderKind; sellToken: OrderParameters['sellToken']; sellTokenDecimals: number; buyToken: OrderParameters['buyToken']; buyTokenDecimals: number; amount: TokenAmount; } /** * Optional parameters to create a trade. */ export interface TradeOptionalParameters { env?: CowEnv; partiallyFillable?: OrderParameters['partiallyFillable']; slippageBps?: latest.SlippageBips; receiver?: OrderParameters['receiver']; validFor?: OrderParameters['validTo']; partnerFee?: latest.PartnerFee; } /** * Information about the trader. */ export interface TraderParameters { chainId: SupportedChainId; appCode: latest.AppCode; signer: Signer | ExternalProvider | PrivateKey; } export type QuoterParameters = Omit<TraderParameters, 'signer'> & { account: AccountAddress; }; /** * Trade type, assets, amounts, and optional parameters. */ export interface TradeParameters extends TradeBaseParameters, TradeOptionalParameters { } export interface SwapParameters extends TradeParameters, TraderParameters { } export interface LimitTradeParameters extends Omit<TradeParameters, 'amount'> { sellAmount: OrderParameters['sellAmount']; buyAmount: OrderParameters['buyAmount']; /** * Id of the quote to be used for the limit order. */ quoteId?: number; validTo?: OrderParameters['validTo']; } export interface LimitTradeParametersFromQuote extends LimitTradeParameters { quoteId: number; } export interface LimitOrderParameters extends TraderParameters, LimitTradeParameters { } export interface SwapAdvancedSettings { quoteRequest?: Partial<Omit<OrderQuoteRequest, 'kind'>>; appData?: AppDataParams; } export interface LimitOrderAdvancedSettings { appData?: AppDataParams; } /** * Exhaustive set of data which includes information about trade, quote, order, "app-data", and more. * This data is used to create a trade, sign an order, and post it to the order book. */ export interface QuoteResults { tradeParameters: TradeParameters; amountsAndCosts: QuoteAmountsAndCosts; orderToSign: UnsignedOrder; quoteResponse: OrderQuoteResponse; appDataInfo: AppDataInfo; orderTypedData: OrderTypedData; } export interface QuoteResultsSerialized extends Omit<QuoteResults, 'amountsAndCosts'> { amountsAndCosts: QuoteAmountsAndCosts<string>; } export interface QuoteAndPost { quoteResults: QuoteResults; postSwapOrderFromQuote(): Promise<string>; } export type AppDataRootSchema = latest.AppDataRootSchema; export interface BuildAppDataParams { appCode: latest.AppCode; slippageBps: latest.SlippageBips; orderClass: latest.OrderClass['orderClass']; partnerFee?: latest.PartnerFee; } /** * https://github.com/cowprotocol/app-data */ export interface AppDataInfo { doc: LatestAppDataDocVersion; fullAppData: AppData; appDataKeccak256: AppDataHash; } /** * A standard Ethereum transaction object */ export interface TransactionParams { data: string; gasLimit: string; to: string; value: string; } export {};