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; /** * Submit a signed order to the external server * @param signedOrder The signed order to submit */ submitOrder(signedOrder: SignedLimitOrder): Promise; /** * 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; /** * Check if an order has been filled * @param orderHash The order hash */ isOrderFilled(orderHash: string): Promise; /** * Check if an order has been cancelled * @param salt The order salt */ isOrderCancelled(salt: BigNumberish): Promise; /** * Get all filled orders for the maker */ getMyFilledOrders(fromBlock?: number): Promise; /** * Get maker's orders from server */ getMyOrders(status?: 'OPEN' | 'FILLED' | 'CANCELLED', limit?: number): Promise; /** * 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; /** * Get the LimitOrderClient instance */ getClient(): LimitOrderClient; /** * Set server URL */ setServerUrl(url: string): void; /** * Get current server URL */ getServerUrl(): string; }