import { Address } from '@btc-vision/transaction';
import { CallResult } from '../../../../contracts/CallResult.js';
import { OPNetEvent } from '../../../../contracts/OPNetEvent.js';
import { IOP20SContract } from '../opnet/IOP20SContract.js';
export type MintedEventPegged = {
    readonly to: Address;
    readonly amount: bigint;
};
export type BurnedEventPegged = {
    readonly from: Address;
    readonly amount: bigint;
};
export type CustodianChangedEventPegged = {
    readonly previousCustodian: Address;
    readonly newCustodian: Address;
};
export type MintPegged = CallResult<{}, [OPNetEvent<MintedEventPegged>]>;
export type BurnFromPegged = CallResult<{}, [OPNetEvent<BurnedEventPegged>]>;
export type TransferCustodianPegged = CallResult<{}, []>;
export type AcceptCustodianPegged = CallResult<{}, [OPNetEvent<CustodianChangedEventPegged>]>;
export type CustodianPegged = CallResult<{
    custodian: Address;
}, []>;
export type PendingCustodianPegged = CallResult<{
    pendingCustodian: Address;
}, []>;
export interface IPeggedTokenContract extends IOP20SContract {
    mint(to: Address, amount: bigint): Promise<MintPegged>;
    burnFrom(from: Address, amount: bigint): Promise<BurnFromPegged>;
    transferCustodian(newCustodian: Address): Promise<TransferCustodianPegged>;
    acceptCustodian(): Promise<AcceptCustodianPegged>;
    custodian(): Promise<CustodianPegged>;
    pendingCustodian(): Promise<PendingCustodianPegged>;
}
