@deserialize/evm-limit-sdk
Version:
TypeScript client for LimitOrderWithPermit2 smart contract
117 lines (116 loc) • 3.3 kB
TypeScript
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;
}