opnet
Version:
The perfect library for building Bitcoin-based applications.
157 lines (156 loc) • 5.72 kB
TypeScript
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>;
}