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[]>; export type ListLiquidity = CallResult<{}, OPNetEvent[]>; export type CancelListing = CallResult<{}, OPNetEvent[]>; export type WithdrawListing = CallResult<{}, OPNetEvent[]>; export type CreatePool = CallResult<{}, OPNetEvent[]>; 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[]>; 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; listLiquidity(token: Address, receiver: Uint8Array, receiverStr: string, amountIn: bigint, priority: boolean): Promise; cancelListing(token: Address): Promise; withdrawListing(token: Address): Promise; createPool(token: Address, floorPrice: bigint, initialLiquidity: bigint, receiver: Uint8Array, receiverStr: string, antiBotEnabledFor: number, antiBotMaximumTokensPerReservation: bigint, maxReservesIn5BlocksPercent: number, poolType: number, amplification: bigint, pegStalenessThreshold: bigint): Promise; setFees(reservationBaseFee: bigint, priorityQueueBaseFee: bigint): Promise; setStakingContractAddress(stakingContractAddress: Address): Promise; setFeesAddress(feesAddress: string): Promise; pause(): Promise; unpause(): Promise; activateWithdrawMode(): Promise; isPaused(): Promise; isWithdrawModeActive(): Promise; getFees(): Promise; swap(token: Address): Promise; getReserve(token: Address): Promise; getQuote(token: Address, satoshisIn: bigint): Promise; getProviderDetails(token: Address): Promise; getProviderDetailsById(providerId: bigint): Promise; getQueueDetails(token: Address): Promise; getPriorityQueueCost(): Promise; getAntibotSettings(token: Address): Promise; getStakingContractAddress(): Promise; getFeesAddress(): Promise; getPoolInfo(token: Address): Promise; update(address: Address, calldata: Uint8Array): Promise; }