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