import { Address } from '../../../../../node_modules/@btc-vision/transaction/build/index.js';
import { CallResult } from '../../../../contracts/CallResult.js';
import { OPNetEvent } from '../../../../contracts/OPNetEvent.js';
import { IOP20Contract } from './IOP20Contract.js';
export type PegRateUpdatedEvent = {
    readonly oldRate: bigint;
    readonly newRate: bigint;
    readonly updatedAt: bigint;
};
export type MaxStalenessUpdatedEvent = {
    readonly oldStaleness: bigint;
    readonly newStaleness: bigint;
};
export type PegAuthorityTransferStartedEvent = {
    readonly currentAuthority: Address;
    readonly pendingAuthority: Address;
};
export type PegAuthorityTransferredEvent = {
    readonly previousAuthority: Address;
    readonly newAuthority: Address;
};
export type PegAuthorityRenouncedEvent = {
    readonly previousAuthority: Address;
};
export type PegRate = CallResult<{
    rate: bigint;
}, []>;
export type PegAuthority = CallResult<{
    authority: Address;
}, []>;
export type PegUpdatedAt = CallResult<{
    updatedAt: bigint;
}, []>;
export type MaxStaleness = CallResult<{
    staleness: bigint;
}, []>;
export type IsStale = CallResult<{
    stale: boolean;
}, []>;
export type UpdatePegRate = CallResult<{}, [OPNetEvent<PegRateUpdatedEvent>]>;
export type UpdateMaxStaleness = CallResult<{}, [OPNetEvent<MaxStalenessUpdatedEvent>]>;
export type TransferPegAuthority = CallResult<{}, [OPNetEvent<PegAuthorityTransferStartedEvent>]>;
export type AcceptPegAuthority = CallResult<{}, [OPNetEvent<PegAuthorityTransferredEvent>]>;
export type RenouncePegAuthority = CallResult<{}, [OPNetEvent<PegAuthorityRenouncedEvent>]>;
export interface IOP20SContract extends IOP20Contract {
    pegRate(): Promise<PegRate>;
    pegAuthority(): Promise<PegAuthority>;
    pegUpdatedAt(): Promise<PegUpdatedAt>;
    maxStaleness(): Promise<MaxStaleness>;
    isStale(): Promise<IsStale>;
    updatePegRate(newRate: bigint): Promise<UpdatePegRate>;
    updateMaxStaleness(newStaleness: bigint): Promise<UpdateMaxStaleness>;
    transferPegAuthority(newAuthority: Address): Promise<TransferPegAuthority>;
    acceptPegAuthority(): Promise<AcceptPegAuthority>;
    renouncePegAuthority(): Promise<RenouncePegAuthority>;
}
