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>

334 lines 12.7 kB
export default { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "properties": { "quoteRequest": { "type": "object", "properties": { "sellAmountBeforeFee": { "type": "string", "description": "The total amount that is available for the order. From this value, the fee is deducted and the buy amount is calculated." }, "validTo": { "type": "number", "description": "Unix timestamp (`uint32`) until which the order is valid." }, "sellToken": { "type": "string", "description": "ERC-20 token to be sold" }, "buyToken": { "type": "string", "description": "ERC-20 token to be bought" }, "receiver": { "anyOf": [ { "type": "string", "description": "20 byte Ethereum address encoded as a hex with `0x` prefix." }, { "type": "null" } ], "description": "An optional address to receive the proceeds of the trade instead of the `owner` (i.e. the order signer)." }, "appData": { "anyOf": [ { "type": "string", "description": "The string encoding of a JSON object representing some `appData`. The format of the JSON expected in the `appData` field is defined [here](https://github.com/cowprotocol/app-data)." }, { "type": "string", "description": "32 bytes encoded as hex with `0x` prefix. It's expected to be the hash of the stringified JSON object representing the `appData`." } ], "description": "AppData which will be assigned to the order.\n\nExpects either a string JSON doc as defined on [AppData](https://github.com/cowprotocol/app-data) or a hex encoded string for backwards compatibility.\n\nWhen the first format is used, it's possible to provide the derived appDataHash field." }, "appDataHash": { "type": "string", "description": "The hash of the stringified JSON appData doc.\n\nIf present, `appData` field must be set with the aforementioned data where this hash is derived from.\n\nIn case they differ, the call will fail." }, "sellTokenBalance": { "type": "string", "enum": [ "erc20", "internal", "external" ], "description": "Where should the `sellToken` be drawn from?" }, "buyTokenBalance": { "type": "string", "enum": [ "erc20", "internal" ], "description": "Where should the `buyToken` be transferred to?" }, "from": { "type": "string", "description": "20 byte Ethereum address encoded as a hex with `0x` prefix." }, "priceQuality": { "type": "string", "enum": [ "fast", "optimal", "verified" ], "description": "How good should the price estimate be?\n\nFast: The price estimate is chosen among the fastest N price estimates. Optimal: The price estimate is chosen among all price estimates. Verified: The price estimate is chosen among all verified/simulated price estimates.\n\n**NOTE**: Orders are supposed to be created from `verified` or `optimal` price estimates." }, "signingScheme": { "type": "string", "enum": [ "eip712", "ethsign", "presign", "eip1271" ], "description": "How was the order signed?" }, "onchainOrder": { "description": "Flag to signal whether the order is intended for on-chain order placement. Only valid for non ECDSA-signed orders.\"" }, "validFor": { "type": "number", "description": "Number (`uint32`) of seconds that the order should be valid for." }, "sellAmountAfterFee": { "type": "string", "description": "The `sellAmount` for the order." }, "buyAmountAfterFee": { "type": "string", "description": "The `buyAmount` for the order." } }, "additionalProperties": false }, "appData": { "type": "object", "properties": { "appCode": { "type": "string", "description": "The code identifying the CLI, UI, service generating the order." }, "environment": { "type": "string", "description": "Environment from which the order came from." }, "metadata": { "type": "object", "properties": { "signer": { "type": "string", "description": "The address of the trader who signs the CoW Swap order. This field should normally be omitted; it is recommended to use it if the signer is a smart-contract wallet using EIP-1271 signatures." }, "referrer": { "type": "object", "properties": { "address": { "type": "string" } }, "required": [ "address" ], "additionalProperties": false }, "utm": { "type": "object", "properties": { "utmSource": { "type": "string", "description": "Tracks in which medium the traffic originated from (twitter, facebook, etc.)" }, "utmMedium": { "type": "string", "description": "Tracks in which medium the traffic originated from (mail, CPC, social, etc.)" }, "utmCampaign": { "type": "string", "description": "Track the performance of a specific campaign" }, "utmContent": { "type": "string", "description": "Track which link was clicked" }, "utmTerm": { "type": "string", "description": "Track which keyword term a website visitor came from" } }, "additionalProperties": false }, "quote": { "type": "object", "properties": { "slippageBips": { "type": "number", "description": "Slippage tolerance that was applied to the order to get the limit price. Expressed in Basis Points (BPS). One basis point is equivalent to 0.01% (1/100th of a percent)" }, "smartSlippage": { "type": "boolean", "description": "Whether the given slippageBips used is originated from a Smart slippage suggestion" } }, "required": [ "slippageBips" ], "additionalProperties": false }, "orderClass": { "type": "object", "properties": { "orderClass": { "type": "string", "enum": [ "market", "limit", "liquidity", "twap" ], "description": "Indicator of the order class." } }, "required": [ "orderClass" ], "additionalProperties": false }, "hooks": { "type": "object", "properties": { "version": { "type": "string", "description": "Semantic versioning of document." }, "pre": { "type": "array", "items": { "type": "object", "properties": { "target": { "type": "string", "description": "The contract to call for the hook" }, "callData": { "type": "string", "description": "The calldata to use when calling the hook" }, "gasLimit": { "type": "string", "description": "The gas limit (in gas units) for the hook" }, "dappId": { "type": "string", "description": "CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook." } }, "required": [ "target", "callData", "gasLimit" ], "additionalProperties": false }, "description": "CoW Hooks to call before an order executes" }, "post": { "type": "array", "items": { "type": "object", "properties": { "target": { "type": "string", "description": "The contract to call for the hook" }, "callData": { "type": "string", "description": "The calldata to use when calling the hook" }, "gasLimit": { "type": "string", "description": "The gas limit (in gas units) for the hook" }, "dappId": { "type": "string", "description": "CoW Swap has an interface that allows dApps to build hooks for orders. This field is used to identify the dApp that has built the hook." } }, "required": [ "target", "callData", "gasLimit" ], "additionalProperties": false }, "description": "CoW Hooks to call after an order executes" } }, "additionalProperties": false, "description": "Optional Pre and Post order interaction hooks attached to a single order" }, "widget": { "type": "object", "properties": { "appCode": { "type": "string", "description": "The code identifying the UI powering the widget" }, "environment": { "type": "string", "description": "Environment from which the order came from." } }, "required": [ "appCode" ], "additionalProperties": false }, "partnerFee": { "type": "object", "properties": { "bps": { "type": "number", "description": "The fee in basis points (BPS) to be paid to the partner. One basis point is equivalent to 0.01% (1/100th of a percent)" }, "recipient": { "type": "string", "description": "The Ethereum address of the partner to receive the fee." } }, "required": [ "bps", "recipient" ], "additionalProperties": false }, "replacedOrder": { "type": "object", "properties": { "uid": { "type": "string", "description": "The replaced order UID." } }, "required": [ "uid" ], "additionalProperties": false } }, "additionalProperties": false, "description": "Each metadata will specify one aspect of the order." } }, "additionalProperties": false } }, "additionalProperties": false, "definitions": {} } as const