UNPKG

@deserialize/evm-limit-sdk

Version:

TypeScript client for LimitOrderWithPermit2 smart contract

117 lines (116 loc) 3.3 kB
import { ethers, BigNumberish } from 'ethers'; import { LimitOrderClient, Order } from './LimitOrderClient'; export interface CreateOrderParams { makerToken: string; takerToken: string; makerAmount: BigNumberish; takerAmount: BigNumberish; salt?: BigNumberish; expiry?: BigNumberish; } export interface SignedLimitOrder { order: Order; orderSignature: string; permit2Signature: string; orderHash: string; createdAt: number; } export interface SaveOrderResponse { success: boolean; orderId?: string; error?: string; } /** * SDK for creating and managing limit orders (Maker side) * Can be used in both frontend and backend environments */ export declare class LimitOrderMaker { private client; private signer; private serverUrl; constructor(client: LimitOrderClient, signer: ethers.Signer, serverUrl?: string); /** * Create a complete limit order with all signatures * @param params Order parameters * @returns Signed order ready to be submitted */ createOrder(params: CreateOrderParams): Promise<SignedLimitOrder>; /** * Submit a signed order to the external server * @param signedOrder The signed order to submit */ submitOrder(signedOrder: SignedLimitOrder): Promise<SaveOrderResponse>; /** * Create and submit an order in one step * @param params Order parameters */ createAndSubmitOrder(params: CreateOrderParams): Promise<{ signedOrder: SignedLimitOrder; submitResponse: SaveOrderResponse; }>; /** * Cancel an order * @param orderHash The order hash to cancel * @param salt The order salt to cancel on-chain */ cancelOrder(orderHash: string, salt: BigNumberish): Promise<ethers.ContractTransactionResponse>; /** * Check if an order has been filled * @param orderHash The order hash */ isOrderFilled(orderHash: string): Promise<boolean>; /** * Check if an order has been cancelled * @param salt The order salt */ isOrderCancelled(salt: BigNumberish): Promise<boolean>; /** * Get all filled orders for the maker */ getMyFilledOrders(fromBlock?: number): Promise<any[]>; /** * Get maker's orders from server */ getMyOrders(status?: 'OPEN' | 'FILLED' | 'CANCELLED', limit?: number): Promise<any[]>; /** * Get order details from server */ private getOrderFromServer; /** * Ensure Permit2 has approval for the token * @param tokenAddress The token address */ private ensurePermit2Approval; /** * Check if Permit2 is approved for a token */ private isPermit2Approved; /** * Approve Permit2 for a token */ private approvePermit2; /** * Save order to external server */ private saveOrderToServer; /** * Notify server that order was cancelled */ private notifyServerOfCancellation; /** * Get the maker address */ getMakerAddress(): Promise<string>; /** * Get the LimitOrderClient instance */ getClient(): LimitOrderClient; /** * Set server URL */ setServerUrl(url: string): void; /** * Get current server URL */ getServerUrl(): string; }