Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(quote): add smartSlippage property to quote #64

Merged
merged 6 commits into from
Sep 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions src/generatedTypes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@ import * as v0_8_0 from './v0.8.0'
import * as v0_9_0 from './v0.9.0'
import * as v1_0_0 from './v1.0.0'
import * as v1_1_0 from './v1.1.0'
import * as v1_2_0 from './v1.2.0'

export * as latest from './v1.1.0'
export * as latest from './v1.2.0'

export const LATEST_APP_DATA_VERSION = '1.1.0'
export const LATEST_QUOTE_METADATA_VERSION = '1.0.0'
export const LATEST_APP_DATA_VERSION = '1.2.0'
export const LATEST_QUOTE_METADATA_VERSION = '1.1.0'
export const LATEST_REFERRER_METADATA_VERSION = '0.2.0'
export const LATEST_ORDER_CLASS_METADATA_VERSION = '0.3.0'
export const LATEST_UTM_METADATA_VERSION = '0.2.0'
Expand All @@ -27,8 +28,9 @@ export const LATEST_WIDGET_METADATA_VERSION = '0.1.0'
export const LATEST_PARTNER_FEE_METADATA_VERSION = '0.1.0'
export const LATEST_REPLACED_ORDER_METADATA_VERSION = '0.1.0'

export type LatestAppDataDocVersion = v1_1_0.AppDataRootSchema
export type LatestAppDataDocVersion = v1_2_0.AppDataRootSchema
export type AnyAppDataDocVersion =
| v1_2_0.AppDataRootSchema
| v1_1_0.AppDataRootSchema
| v1_0_0.AppDataRootSchema
| v0_11_0.AppDataRootSchema
Expand All @@ -44,6 +46,7 @@ export type AnyAppDataDocVersion =
| v0_1_0.AppDataRootSchema

export {
v1_2_0,
v1_1_0,
v1_0_0,
v0_11_0,
Expand Down
165 changes: 165 additions & 0 deletions src/generatedTypes/v1.2.0.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
/* tslint:disable */
/**
* This file was automatically generated by json-schema-to-typescript.
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
* and run json-schema-to-typescript to regenerate this file.
*/

/**
* Semantic versioning of document.
*/
export type Version = string;
/**
* The code identifying the CLI, UI, service generating the order.
*/
export type AppCode = string;
/**
* Environment from which the order came from.
*/
export type Environment = string;
/**
* 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.
*/
export type Signer = string;
export type ReferrerAddress = string;
/**
* Tracks in which medium the traffic originated from (twitter, facebook, etc.)
*/
export type UTMSource = string;
/**
* Tracks in which medium the traffic originated from (mail, CPC, social, etc.)
*/
export type UTMMedium = string;
/**
* Track the performance of a specific campaign
*/
export type UTMCampaign = string;
/**
* Track which link was clicked
*/
export type UTMContent = string;
/**
* Track which keyword term a website visitor came from
*/
export type UTMKeywordTerm = string;
/**
* 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)
*/
export type SlippageBips = number;
/**
* Whether the given slippageBips used is originated from a Smart slippage suggestion
*/
export type SmartSlippage = boolean;
/**
* Indicator of the order class.
*/
export type OrderClass1 = "market" | "limit" | "liquidity" | "twap";
/**
* Semantic versioning of document.
*/
export type Version1 = string;
/**
* The contract to call for the hook
*/
export type HookTarget = string;
/**
* The calldata to use when calling the hook
*/
export type HookCallData = string;
/**
* The gas limit (in gas units) for the hook
*/
export type HookGasLimit = string;
/**
* CoW Hooks to call before an order executes
*/
export type PreHooks = CoWHook[];
/**
* CoW Hooks to call after an order executes
*/
export type PostHooks = CoWHook[];
/**
* The code identifying the UI powering the widget
*/
export type AppCode1 = string;
/**
* Environment from which the order came from.
*/
export type Environment1 = string;
/**
* 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)
*/
export type BasisPointBPS = number;
/**
* The Ethereum address of the partner to receive the fee.
*/
export type PartnerAccount = string;
/**
* The replaced order UID.
*/
export type ReplacedOrderUID = string;

/**
* Metadata JSON document for adding information to orders.
*/
export interface AppDataRootSchema {
version: Version;
appCode?: AppCode;
environment?: Environment;
metadata: Metadata;
}
/**
* Each metadata will specify one aspect of the order.
*/
export interface Metadata {
signer?: Signer;
referrer?: Referrer;
utm?: UTMCodes;
quote?: Quote;
orderClass?: OrderClass;
hooks?: OrderInteractionHooks;
widget?: Widget;
partnerFee?: PartnerFee;
replacedOrder?: ReplacedOrder;
}
export interface Referrer {
address: ReferrerAddress;
}
export interface UTMCodes {
utmSource?: UTMSource;
utmMedium?: UTMMedium;
utmCampaign?: UTMCampaign;
utmContent?: UTMContent;
utmTerm?: UTMKeywordTerm;
}
export interface Quote {
slippageBips: SlippageBips;
smartSlippage?: SmartSlippage;
}
export interface OrderClass {
orderClass: OrderClass1;
}
/**
* Optional Pre and Post order interaction hooks attached to a single order
*/
export interface OrderInteractionHooks {
version?: Version1;
pre?: PreHooks;
post?: PostHooks;
}
export interface CoWHook {
target: HookTarget;
callData: HookCallData;
gasLimit: HookGasLimit;
}
export interface Widget {
appCode: AppCode1;
environment?: Environment1;
}
export interface PartnerFee {
bps: BasisPointBPS;
recipient: PartnerAccount;
}
export interface ReplacedOrder {
uid: ReplacedOrderUID;
}
23 changes: 23 additions & 0 deletions src/schemas/quote/v1.1.0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"$id": "#quote/v0.2.0.json",
"$schema": "http://json-schema.org/draft-07/schema",
"required": [
"slippageBips"
],
"title": "Quote",
"type": "object",
"additionalProperties": false,
"properties": {
"slippageBips": {
"title": "Slippage Bips",
"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)",
"$ref": "../definitions.json#/definitions/bps"
},
"smartSlippage": {
"title": "Smart Slippage",
"description": "Whether the given slippageBips used is originated from a Smart slippage suggestion",
"type": "boolean",
"default": false
}
}
}
78 changes: 78 additions & 0 deletions src/schemas/v1.2.0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"$id": "https://cowswap.exchange/schemas/app-data/v1.2.0.json",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we use ens domain here? (Not now, maybe in the future)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good catch! It still uses the domain from the before times. As you say, not a must as this point, but we should.

"$schema": "http://json-schema.org/draft-07/schema",
"description": "Metadata JSON document for adding information to orders.",
"required": [
"version",
"metadata"
],
"title": "AppData Root Schema",
"type": "object",
"additionalProperties": false,
"properties": {
"version": {
"$ref": "definitions.json#/definitions/version",
"readOnly": true,
"default": "1.2.0"
},
"appCode": {
"$id": "#/properties/appCode",
"description": "The code identifying the CLI, UI, service generating the order.",
"examples": [
"CoW Swap"
],
"title": "App Code",
"type": "string"
},
"environment": {
"$id": "#/properties/environment",
"description": "Environment from which the order came from.",
"title": "Environment",
"type": "string",
"examples": [
"production",
"development",
"staging",
"ens"
]
},
"metadata": {
"$id": "#/properties/metadata",
"default": {},
"description": "Each metadata will specify one aspect of the order.",
"required": [],
"title": "Metadata",
"type": "object",
"additionalProperties": false,
"properties": {
"signer": {
"$ref": "signer/v0.1.0.json#"
},
"referrer": {
"$ref": "referrer/v0.2.0.json#"
},
"utm": {
"$ref": "utm/v0.2.0.json#"
},
"quote": {
"$ref": "quote/v1.1.0.json#"
},
"orderClass": {
"$ref": "orderClass/v0.3.0.json#"
},
"hooks": {
"$ref": "hooks/v0.1.0.json#"
},
"widget": {
"$ref": "widget/v0.1.0.json#"
},
"partnerFee": {
"$ref": "partnerFee/v0.1.0.json#"
},
"replacedOrder": {
"$ref": "replacedOrder/v0.1.0.json#"
}
}
}
}
}
Loading
Loading