UNPKG

@volare.finance/volare.js

Version:
125 lines (124 loc) 3.22 kB
/** * @file order.ts * @author astra <astra@volare.com> * @date 2022 */ import { Address, BigNumber, EIP712TypedData, Hash } from '@volare.finance/utils.js'; import { Wallet } from 'ethers'; export declare const DOMAIN_DEFAULT: { chainId: number; verifyingContract: string; name: string; version: string; }; export interface EIP712LimitOrderData extends EIP712TypedData { message: { makerToken: Address; takerToken: Address; makerAmount: string; takerAmount: string; takerTokenFeeAmount: string; maker: Address; taker: Address; sender: Address; feeRecipient: Address; pool: Address; expiry: string; salt: string; }; } export declare enum OrderStatus { Invalid = 0, Fillable = 1, Filled = 2, Cancelled = 3, Expired = 4 } export interface OrderInfo { orderHash: Hash; isSignatureValid: boolean; status: OrderStatus; actualFillableTakerTokenAmount: string; } export declare enum SignatureType { Illegal = 0, Invalid = 1, EIP712 = 2, EthSign = 3 } declare const COMMON_ORDER_DEFAULT_VALUES: { makerToken: string; takerToken: string; makerAmount: BigNumber; takerAmount: BigNumber; maker: string; taker: string; pool: string; expiry: number; salt: number; chainId: number; verifyingContract: string; }; declare const LIMIT_ORDER_DEFAULT_VALUES: { takerTokenFeeAmount: BigNumber; sender: string; feeRecipient: string; makerToken: string; takerToken: string; makerAmount: BigNumber; takerAmount: BigNumber; maker: string; taker: string; pool: string; expiry: number; salt: number; chainId: number; verifyingContract: string; }; export type CommonOrderFields = typeof COMMON_ORDER_DEFAULT_VALUES; export type LimitOrderFields = typeof LIMIT_ORDER_DEFAULT_VALUES; export interface ECSignature { v: number; r: string; s: string; } export interface Signature extends ECSignature { signatureType: SignatureType; } export interface INativeOrder { orderHash: Hash; limitOrder: LimitOrderFields; signature: Signature; } export declare abstract class OrderBase { makerToken: Address; takerToken: Address; makerAmount: BigNumber; takerAmount: BigNumber; maker: Address; taker: Address; pool: Hash; expiry: number; salt: number; chainId: number; verifyingContract: Address; protected constructor(fields?: Partial<CommonOrderFields>); abstract getEIP712TypedData(): EIP712TypedData; getHash(): Hash; getSignature(signer: Wallet, type?: SignatureType): Promise<Signature>; recoverAddress(signature: Signature | string): Address; } export declare class LimitOrder extends OrderBase { static readonly STRUCT_NAME = "LimitOrder"; static readonly STRUCT_ABI: { type: string; name: string; }[]; takerTokenFeeAmount: BigNumber; sender: Address; feeRecipient: Address; constructor(fields?: Partial<LimitOrderFields>); clone(fields?: Partial<LimitOrderFields>): LimitOrder; getEIP712TypedData(): EIP712TypedData; } export {};