UNPKG

opnet

Version:

The perfect library for building Bitcoin-based applications.

157 lines (156 loc) 5.72 kB
import { Address } from '@btc-vision/transaction'; import { CallResult } from '../../../../contracts/CallResult.js'; import { OPNetEvent } from '../../../../contracts/OPNetEvent.js'; import { TransferEvent } from '../opnet/IOP_20Contract.js'; import { IOP_NETContract } from '../opnet/IOP_NETContract.js'; export type LiquidityAddedEvent = { readonly totalTokensContributed: bigint; readonly virtualTokenExchanged: bigint; readonly totalSatoshisSpent: bigint; }; export type LiquidityListedEvent = { readonly totalLiquidity: bigint; readonly provider: string; }; export type LiquidityRemovedEvent = { readonly providerId: bigint; readonly btcOwed: bigint; readonly tokenAmount: bigint; }; export type ReservationCreatedEvent = { readonly expectedAmountOut: bigint; readonly totalSatoshis: bigint; }; export type ReservationPurgedEvent = { readonly reservationId: bigint; readonly currentBlock: bigint; readonly purgingBlock: bigint; readonly purgeIndex: number; readonly providerCount: number; }; export type ReservationPurgingEvent = { readonly reservationId: bigint; readonly purgeIndex: number; readonly purgeQueueLength: number; }; export type SwapExecutedEvent = { readonly buyer: Address; readonly amountIn: bigint; readonly amountOut: bigint; }; export type LiquidityReservedEvent = { readonly depositAddress: string; readonly amount: bigint; readonly providerId: bigint; }; export type ListingCanceledEvent = { readonly amount: bigint; readonly penalty: bigint; }; export type ActivateProviderEvent = { readonly providerId: bigint; readonly listingAmount: bigint; readonly btcToRemove: bigint; }; export type FulfilledProviderEvent = { readonly providerId: bigint; readonly canceled: boolean; readonly removalCompleted: boolean; }; export type ReserveNativeSwap = CallResult<{ ok: boolean; }, OPNetEvent<LiquidityReservedEvent | ReservationCreatedEvent | TransferEvent | FulfilledProviderEvent>[]>; export type AddLiquidity = CallResult<{ ok: boolean; }, OPNetEvent<LiquidityAddedEvent | TransferEvent | ActivateProviderEvent | FulfilledProviderEvent>[]>; export type RemoveLiquidity = CallResult<{ ok: boolean; }, OPNetEvent<LiquidityRemovedEvent | TransferEvent | FulfilledProviderEvent>[]>; export type ListLiquidity = CallResult<{ ok: boolean; }, OPNetEvent<LiquidityListedEvent>[]>; export type CancelListing = CallResult<{ ok: boolean; }, OPNetEvent<ListingCanceledEvent | TransferEvent | FulfilledProviderEvent>[]>; export type CreatePool = CallResult<{ ok: boolean; }, OPNetEvent<TransferEvent | LiquidityAddedEvent>[]>; export type SetFees = CallResult<{ ok: boolean; }, []>; export type GetFees = CallResult<{ reservationBaseFee: bigint; priorityQueueBaseFee: bigint; }, []>; export type Swap = CallResult<{ ok: boolean; }, OPNetEvent<SwapExecutedEvent | TransferEvent | ActivateProviderEvent | FulfilledProviderEvent>[]>; export type GetReserve = CallResult<{ liquidity: bigint; reservedLiquidity: bigint; virtualBTCReserve: bigint; virtualTokenReserve: bigint; }, [ ]>; export type GetQuote = CallResult<{ tokensOut: bigint; requiredSatoshis: bigint; price: bigint; scale: bigint; }, [ ]>; export type GetProviderDetails = CallResult<{ liquidity: bigint; reserved: bigint; lpShares: bigint; btcReceiver: string; indexedAt: number; isPriority: boolean; }, [ ]>; export type GetPriorityQueueCost = CallResult<{ cost: bigint; }, []>; export type AntiBotSettings = CallResult<{ antiBotExpirationBlock: bigint; maxTokensPerReservation: bigint; }, [ ]>; export type StakingAddressResult = CallResult<{ stakingAddress: Address; }, []>; export type QueueDetails = CallResult<{ lastPurgedBlock: number; blockWithReservationsLength: number; removalQueueLength: number; removalQueueStartingIndex: number; priorityQueueLength: number; priorityQueueStartingIndex: number; standardQueueLength: number; standardQueueStartingIndex: number; priorityPurgeQueueLength: number; standardPurgeQueueLength: number; removePurgeQueueLength: number; }, [ ]>; export interface INativeSwapContract extends IOP_NETContract { reserve(token: Address, maximumAmountIn: bigint, minimumAmountOut: bigint, forLP: boolean, activationDelay: number): Promise<ReserveNativeSwap>; listLiquidity(token: Address, receiver: string, amountIn: bigint, priority: boolean): Promise<ListLiquidity>; cancelListing(token: Address): Promise<CancelListing>; createPool(token: Address, floorPrice: bigint, initialLiquidity: bigint, receiver: string, antiBotEnabledFor: number, antiBotMaximumTokensPerReservation: bigint, maxReservesIn5BlocksPercent: number): Promise<CreatePool>; setFees(reservationBaseFee: bigint, priorityQueueBaseFee: bigint): Promise<SetFees>; getFees(): Promise<GetFees>; addLiquidity(token: Address, receiver: string): Promise<AddLiquidity>; removeLiquidity(token: Address): Promise<RemoveLiquidity>; swap(token: Address): Promise<Swap>; getReserve(token: Address): Promise<GetReserve>; getQuote(token: Address, satoshisIn: bigint): Promise<GetQuote>; getProviderDetails(token: Address): Promise<GetProviderDetails>; getQueueDetails(token: Address): Promise<QueueDetails>; getPriorityQueueCost(token: Address): Promise<GetPriorityQueueCost>; getAntibotSettings(token: Address): Promise<AntiBotSettings>; setStakingContractAddress(stakingContractAddress: Address): Promise<CallResult<{ ok: boolean; }, []>>; getStakingContractAddress(): Promise<StakingAddressResult>; }