@deliquifiedlabs/uniswapx-sdk
Version:
SDK for the UniswapX protocol
47 lines (46 loc) • 1.87 kB
TypeScript
import { BaseProvider, Log } from "@ethersproject/providers";
import { BaseContract, BigNumber, Event } from "ethers";
import { ExclusiveDutchOrderReactor, RelayOrderReactor } from "../contracts";
import { FillEvent } from "../contracts/DutchOrderReactor";
export type TokenTransfer = {
token: string;
amount: BigNumber;
};
export interface FillData {
orderHash: string;
filler: string;
nonce: BigNumber;
swapper: string;
}
export interface FillInfo extends FillData {
blockNumber: number;
txHash: string;
inputs: TokenTransfer[];
outputs: TokenTransfer[];
}
/**
* Helper for watching events
*/
declare abstract class EventWatcher<TReactor extends BaseContract> {
protected reactor: TReactor;
constructor(reactor: TReactor);
abstract getFillLogs(fromBlock: number, toBlock?: number): Promise<FillEvent[]>;
abstract onFill(callback: (fillData: FillData, event: Event) => void): void;
getFillEvents(fromBlock: number, toBlock?: number): Promise<FillData[]>;
getFillInfo(fromBlock: number, toBlock?: number): Promise<FillInfo[]>;
getTokenTransfers(logs: Log[], recipient: string): {
token: string;
amount: BigNumber;
}[];
}
export declare class UniswapXEventWatcher extends EventWatcher<ExclusiveDutchOrderReactor> {
constructor(provider: BaseProvider, reactorAddress: string);
getFillLogs(fromBlock: number, toBlock?: number): Promise<FillEvent[]>;
onFill(callback: (fillData: FillData, event: Event) => void): void;
}
export declare class RelayEventWatcher extends EventWatcher<RelayOrderReactor> {
constructor(provider: BaseProvider, reactorAddress: string);
getFillLogs(fromBlock: number, toBlock?: number): Promise<FillEvent[]>;
onFill(callback: (fillData: FillData, event: Event) => void): void;
}
export {};