@volare.finance/volare.js
Version:
The SDK for Volare Protocol
125 lines (124 loc) • 3.22 kB
TypeScript
/**
* @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 {};