UNPKG

opnet

Version:

The perfect library for building Bitcoin-based applications.

190 lines (189 loc) 7.25 kB
import { Address } from '../../../../../node_modules/@btc-vision/transaction/build/index.js'; import { CallResult } from '../../../../contracts/CallResult.js'; import { OPNetEvent } from '../../../../contracts/OPNetEvent.js'; import { TransferredEvent } from '../opnet/IOP20Contract.js'; import { IOP_NETContract } from '../opnet/IOP_NETContract.js'; export type LiquidityListedEvent = { readonly totalLiquidity: bigint; readonly provider: string; }; export type LiquidityReservedEvent = { readonly depositAddress: string; readonly satoshisAmount: bigint; readonly providerId: bigint; readonly tokenAmount: bigint; }; export type ListingCanceledEvent = { readonly amount: bigint; readonly penalty: bigint; }; export type ProviderActivatedEvent = { readonly providerId: bigint; readonly listingAmount: bigint; readonly btcToRemove: bigint; }; export type ProviderConsumedEvent = { readonly providerId: bigint; readonly amountUsed: bigint; }; export type ProviderFulfilledEvent = { readonly providerId: bigint; readonly removalCompleted: boolean; readonly stakedAmount: bigint; }; export type ReservationFallbackEvent = { readonly reservationId: bigint; readonly expirationBlock: 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; readonly purgedAmount: bigint; }; export type SwapExecutedEvent = { readonly buyer: Address; readonly amountIn: bigint; readonly amountOut: bigint; readonly totalFees: bigint; }; export type WithdrawListingEvent = { readonly amount: bigint; readonly tokenAddress: Address; readonly providerId: bigint; readonly sender: Address; }; export type ReserveNativeSwap = CallResult<{}, OPNetEvent<LiquidityReservedEvent | ReservationCreatedEvent | TransferredEvent | ProviderFulfilledEvent | ReservationPurgedEvent>[]>; export type ListLiquidity = CallResult<{}, OPNetEvent<LiquidityListedEvent | TransferredEvent>[]>; export type CancelListing = CallResult<{}, OPNetEvent<ListingCanceledEvent | TransferredEvent | ReservationPurgedEvent>[]>; export type WithdrawListing = CallResult<{}, OPNetEvent<WithdrawListingEvent | TransferredEvent>[]>; export type CreatePool = CallResult<{}, OPNetEvent<TransferredEvent | ReservationPurgedEvent>[]>; export type SetFees = CallResult; export type SetStakingContractAddress = CallResult; export type SetFeesAddress = CallResult; export type Pause = CallResult; export type Unpause = CallResult; export type ActivateWithdrawMode = CallResult; export type IsPaused = CallResult<{ paused: boolean; }, []>; export type IsWithdrawModeActive = CallResult<{ active: boolean; }, []>; export type GetFees = CallResult<{ reservationBaseFee: bigint; priorityQueueBaseFee: bigint; }, []>; export type Swap = CallResult<{}, OPNetEvent<SwapExecutedEvent | TransferredEvent | ProviderActivatedEvent | ProviderFulfilledEvent | ProviderConsumedEvent | ReservationFallbackEvent>[]>; 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<{ id: bigint; liquidity: bigint; reserved: bigint; btcReceiver: string; indexedAt: number; isPriority: boolean; purgeIndex: number; isActive: boolean; lastListedTokensAtBlock: bigint; isPurged: boolean; isLiquidityProvisionAllowed: boolean; toReset: boolean; }, [ ]>; export type GetProviderDetailsById = CallResult<{ id: bigint; liquidity: bigint; reserved: bigint; btcReceiver: string; indexedAt: number; isPriority: boolean; purgeIndex: number; isActive: boolean; lastListedTokensAtBlock: bigint; isPurged: boolean; isLiquidityProvisionAllowed: boolean; toReset: boolean; }, [ ]>; export type GetPriorityQueueCost = CallResult<{ cost: bigint; }, []>; export type AntiBotSettings = CallResult<{ antiBotExpirationBlock: bigint; maxTokensPerReservation: bigint; }, [ ]>; export type StakingAddressResult = CallResult<{ stakingAddress: Address; }, []>; export type FeesAddressResult = CallResult<{ feesAddress: string; }, []>; export type QueueDetails = CallResult<{ lastPurgedBlock: bigint; blockWithReservationsLength: number; priorityQueueLength: number; priorityQueueStartingIndex: number; standardQueueLength: number; standardQueueStartingIndex: number; priorityPurgeQueueLength: number; standardPurgeQueueLength: number; }, [ ]>; export type GetPoolInfoNativeSwap = CallResult<{ poolType: number; amplification: bigint; pegStalenessThreshold: bigint; }, [ ]>; export type OnOP20ReceivedResult = CallResult<{ selector: Uint8Array; }, []>; export interface INativeSwapContract extends IOP_NETContract { reserve(token: Address, maximumAmountIn: bigint, minimumAmountOut: bigint, activationDelay: number, sender: Uint8Array): Promise<ReserveNativeSwap>; listLiquidity(token: Address, receiver: Uint8Array, receiverStr: string, amountIn: bigint, priority: boolean): Promise<ListLiquidity>; cancelListing(token: Address): Promise<CancelListing>; withdrawListing(token: Address): Promise<WithdrawListing>; createPool(token: Address, floorPrice: bigint, initialLiquidity: bigint, receiver: Uint8Array, receiverStr: string, antiBotEnabledFor: number, antiBotMaximumTokensPerReservation: bigint, maxReservesIn5BlocksPercent: number, poolType: number, amplification: bigint, pegStalenessThreshold: bigint): Promise<CreatePool>; setFees(reservationBaseFee: bigint, priorityQueueBaseFee: bigint): Promise<SetFees>; setStakingContractAddress(stakingContractAddress: Address): Promise<SetStakingContractAddress>; setFeesAddress(feesAddress: string): Promise<SetFeesAddress>; pause(): Promise<Pause>; unpause(): Promise<Unpause>; activateWithdrawMode(): Promise<ActivateWithdrawMode>; isPaused(): Promise<IsPaused>; isWithdrawModeActive(): Promise<IsWithdrawModeActive>; getFees(): Promise<GetFees>; swap(token: Address): Promise<Swap>; getReserve(token: Address): Promise<GetReserve>; getQuote(token: Address, satoshisIn: bigint): Promise<GetQuote>; getProviderDetails(token: Address): Promise<GetProviderDetails>; getProviderDetailsById(providerId: bigint): Promise<GetProviderDetailsById>; getQueueDetails(token: Address): Promise<QueueDetails>; getPriorityQueueCost(): Promise<GetPriorityQueueCost>; getAntibotSettings(token: Address): Promise<AntiBotSettings>; getStakingContractAddress(): Promise<StakingAddressResult>; getFeesAddress(): Promise<FeesAddressResult>; getPoolInfo(token: Address): Promise<GetPoolInfoNativeSwap>; update(address: Address, calldata: Uint8Array): Promise<CallResult>; }