import { BigNumber, ethers } from 'ethers'; import { Instrument } from '../typechain'; import { PlaceLimitOrderParam, BatchPlaceLimitOrderParam, AddLiquidityParam, PlaceMarketOrderParam, AdjustMarginParam, BatchCancelOrderParam, CancelOrderParam, FillOrderParam, InstrumentIdentifier, PlaceCrossMarketOrderParam, RemoveLiquidityParam, SettleParam, TxOptions, TxOptionsWithSigner, } from '../types'; export interface InstrumentInterface { /** * Get instrument contract instance * @param address the instrument address * @param signerOrProvider ethers signer or provider */ getInstrumentContract(address: string, signerOrProvider?: ethers.providers.Provider | ethers.Signer): Instrument; /** * Compute instrument address * the instrument address is created by Create2 * @param instrumentIdentifier {@link InstrumentIdentifier} */ computeInstrumentAddress(instrumentIdentifier: InstrumentIdentifier): Promise; /** * Donate insurance fund * @param instrumentAddr the instrument address * @param expiry the expiry * @param amount the insurance fund amount, all the quote should format 18 decimals * @param txOptions {@link TxOptions} */ donateInsuranceFund( instrumentAddr: string, expiry: number, amount: BigNumber, txOptions: TxOptionsWithSigner, ): Promise; donateInsuranceFund( instrumentAddr: string, expiry: number, amount: BigNumber, txOptions?: TxOptions, ): Promise; donateInsuranceFund( instrumentAddr: string, expiry: number, amount: BigNumber, txOptions?: TxOptions, ): Promise; /** * Fill limit order * @param param {@link FillOrderParam} * @param txOptions {@link TxOptions} */ fillLimitOrder(param: FillOrderParam, txOptions: TxOptionsWithSigner): Promise; fillLimitOrder(param: FillOrderParam, txOptions?: TxOptions): Promise; fillLimitOrder( param: FillOrderParam, txOptions?: TxOptions, ): Promise; /** * Adjust position * @param param {@link AdjustMarginParam} * @param txOptions {@link TxOptions} */ adjustMargin( param: AdjustMarginParam, txOptions: TxOptionsWithSigner, ): Promise; adjustMargin(param: AdjustMarginParam, txOptions?: TxOptions): Promise; adjustMargin( param: AdjustMarginParam, txOptions?: TxOptions, ): Promise; /** * Add liquidity * @param param {@link AddLiquidityParam} * @param txOptions {@link TxOptions} */ addLiquidity( param: AddLiquidityParam, txOptions: TxOptionsWithSigner, ): Promise; addLiquidity(param: AddLiquidityParam, txOptions?: TxOptions): Promise; addLiquidity( param: AddLiquidityParam, txOptions?: TxOptions, ): Promise; /** * Remove liquidity * @param param {@link RemoveLiquidityParam} * @param txOptions {@link TxOptions} */ removeLiquidity( param: RemoveLiquidityParam, txOptions: TxOptionsWithSigner, ): Promise; removeLiquidity(param: RemoveLiquidityParam, txOptions?: TxOptions): Promise; removeLiquidity( param: RemoveLiquidityParam, txOptions?: TxOptions, ): Promise; /** * Place limit order * @param param {@link PlaceLimitOrderParam} * @param txOptions {@link TxOptions} */ placeLimitOrder( param: PlaceLimitOrderParam, txOptions: TxOptionsWithSigner, ): Promise; placeLimitOrder(param: PlaceLimitOrderParam, txOptions?: TxOptions): Promise; placeLimitOrder( param: PlaceLimitOrderParam, txOptions?: TxOptions, ): Promise; /** * Place market order * @param param {@link PlaceMarketOrderParam} * @param txOptions {@link TxOptions} */ placeMarketOrder( param: PlaceMarketOrderParam, txOptions: TxOptionsWithSigner, ): Promise; placeMarketOrder(param: PlaceMarketOrderParam, txOptions?: TxOptions): Promise; placeMarketOrder( param: PlaceMarketOrderParam, txOptions?: TxOptions, ): Promise; /** * Cancel limit order * @param param {@link CancelOrderParam} * @param txOptions {@link TxOptions} */ cancelLimitOrder( param: CancelOrderParam, txOptions: TxOptionsWithSigner, ): Promise; cancelLimitOrder(param: CancelOrderParam, txOptions?: TxOptions): Promise; cancelLimitOrder( param: CancelOrderParam, txOptions?: TxOptions, ): Promise; /** * Batch place limit order * @param param {@link BatchPlaceLimitOrderParam} * @param txOptions {@link TxOptions} */ batchPlaceLimitOrder( param: BatchPlaceLimitOrderParam, txOptions: TxOptionsWithSigner, ): Promise; batchPlaceLimitOrder(param: BatchPlaceLimitOrderParam, txOptions?: TxOptions): Promise; batchPlaceLimitOrder( param: BatchPlaceLimitOrderParam, txOptions?: TxOptions, ): Promise; /** * Batch cancel limit order * @param param {@link BatchCancelOrderParam} * @param txOptions {@link TxOptions} */ batchCancelLimitOrder( param: BatchCancelOrderParam, txOptions: TxOptionsWithSigner, ): Promise; batchCancelLimitOrder(param: BatchCancelOrderParam, txOptions?: TxOptions): Promise; batchCancelLimitOrder( param: BatchCancelOrderParam, txOptions?: TxOptions, ): Promise; /** * Place cross market order * @param param {@link PlaceCrossMarketOrderParam} * @param txOptions {@link TxOptions} */ placeCrossMarketOrder( param: PlaceCrossMarketOrderParam, txOptions: TxOptionsWithSigner, ): Promise; placeCrossMarketOrder( param: PlaceCrossMarketOrderParam, txOptions?: TxOptions, ): Promise; placeCrossMarketOrder( param: PlaceCrossMarketOrderParam, txOptions?: TxOptions, ): Promise; /** * Settle user from the specified pair * @param param {@link SettleParam} * @param txOptions {@link TxOptions} */ settle(param: SettleParam, txOptions: TxOptionsWithSigner): Promise; settle(param: SettleParam, txOptions?: TxOptions): Promise; settle( param: SettleParam, txOptions?: TxOptions, ): Promise; /** * Multi call * @param instrumentAddr the instrument address * @param callData multi call data * @param txOptions {@link TxOptions} */ multicall( instrumentAddr: string, callData: string[], txOptions: TxOptionsWithSigner, ): Promise; multicall(instrumentAddr: string, callData: string[], txOptions?: TxOptions): Promise; multicall( instrumentAddr: string, callData: string[], txOptions?: TxOptions, ): Promise; }