import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from 'ethers';
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from './common.js';
export interface TokenImplementationInterface extends Interface {
    getFunction(nameOrSignature: 'DOMAIN_SEPARATOR' | 'allowance' | 'approve' | 'balanceOf' | 'burn' | 'chainId' | 'decimals' | 'decreaseAllowance' | 'eip712Domain' | 'increaseAllowance' | 'initialize' | 'mint' | 'name' | 'nativeContract' | 'nonces' | 'owner' | 'permit' | 'symbol' | 'totalSupply' | 'transfer' | 'transferFrom' | 'updateDetails'): FunctionFragment;
    getEvent(nameOrSignatureOrTopic: 'Approval' | 'Transfer'): EventFragment;
    encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string;
    encodeFunctionData(functionFragment: 'allowance', values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: 'approve', values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [AddressLike]): string;
    encodeFunctionData(functionFragment: 'burn', values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'chainId', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decreaseAllowance', values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'eip712Domain', values?: undefined): string;
    encodeFunctionData(functionFragment: 'increaseAllowance', values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'initialize', values: [
        string,
        string,
        BigNumberish,
        BigNumberish,
        AddressLike,
        BigNumberish,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: 'mint', values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'nativeContract', values?: undefined): string;
    encodeFunctionData(functionFragment: 'nonces', values: [AddressLike]): string;
    encodeFunctionData(functionFragment: 'owner', values?: undefined): string;
    encodeFunctionData(functionFragment: 'permit', values: [
        AddressLike,
        AddressLike,
        BigNumberish,
        BigNumberish,
        BigNumberish,
        BytesLike,
        BytesLike
    ]): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transfer', values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'transferFrom', values: [AddressLike, AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: 'updateDetails', values: [string, string, BigNumberish]): string;
    decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'chainId', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'eip712Domain', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'nativeContract', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'owner', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateDetails', data: BytesLike): Result;
}
export declare namespace ApprovalEvent {
    type InputTuple = [
        owner: AddressLike,
        spender: AddressLike,
        value: BigNumberish
    ];
    type OutputTuple = [owner: string, spender: string, value: bigint];
    interface OutputObject {
        owner: string;
        spender: string;
        value: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export declare namespace TransferEvent {
    type InputTuple = [
        from: AddressLike,
        to: AddressLike,
        value: BigNumberish
    ];
    type OutputTuple = [from: string, to: string, value: bigint];
    interface OutputObject {
        from: string;
        to: string;
        value: bigint;
    }
    type Event = TypedContractEvent<InputTuple, OutputTuple, OutputObject>;
    type Filter = TypedDeferredTopicFilter<Event>;
    type Log = TypedEventLog<Event>;
    type LogDescription = TypedLogDescription<Event>;
}
export interface TokenImplementation extends BaseContract {
    connect(runner?: ContractRunner | null): TokenImplementation;
    waitForDeployment(): Promise<this>;
    interface: TokenImplementationInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    DOMAIN_SEPARATOR: TypedContractMethod<[], [string], 'view'>;
    allowance: TypedContractMethod<[
        owner_: AddressLike,
        spender_: AddressLike
    ], [
        bigint
    ], 'view'>;
    approve: TypedContractMethod<[
        spender_: AddressLike,
        amount_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    balanceOf: TypedContractMethod<[account_: AddressLike], [bigint], 'view'>;
    burn: TypedContractMethod<[
        account_: AddressLike,
        amount_: BigNumberish
    ], [
        void
    ], 'nonpayable'>;
    chainId: TypedContractMethod<[], [bigint], 'view'>;
    decimals: TypedContractMethod<[], [bigint], 'view'>;
    decreaseAllowance: TypedContractMethod<[
        spender_: AddressLike,
        subtractedValue_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    eip712Domain: TypedContractMethod<[
    ], [
        [
            string,
            string,
            string,
            bigint,
            string,
            string,
            bigint[]
        ] & {
            domainFields: string;
            domainName: string;
            domainVersion: string;
            domainChainId: bigint;
            domainVerifyingContract: string;
            domainSalt: string;
            domainExtensions: bigint[];
        }
    ], 'view'>;
    increaseAllowance: TypedContractMethod<[
        spender_: AddressLike,
        addedValue_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    initialize: TypedContractMethod<[
        name_: string,
        symbol_: string,
        decimals_: BigNumberish,
        sequence_: BigNumberish,
        owner_: AddressLike,
        chainId_: BigNumberish,
        nativeContract_: BytesLike
    ], [
        void
    ], 'nonpayable'>;
    mint: TypedContractMethod<[
        account_: AddressLike,
        amount_: BigNumberish
    ], [
        void
    ], 'nonpayable'>;
    name: TypedContractMethod<[], [string], 'view'>;
    nativeContract: TypedContractMethod<[], [string], 'view'>;
    nonces: TypedContractMethod<[owner_: AddressLike], [bigint], 'view'>;
    owner: TypedContractMethod<[], [string], 'view'>;
    permit: TypedContractMethod<[
        owner_: AddressLike,
        spender_: AddressLike,
        value_: BigNumberish,
        deadline_: BigNumberish,
        v_: BigNumberish,
        r_: BytesLike,
        s_: BytesLike
    ], [
        void
    ], 'nonpayable'>;
    symbol: TypedContractMethod<[], [string], 'view'>;
    totalSupply: TypedContractMethod<[], [bigint], 'view'>;
    transfer: TypedContractMethod<[
        recipient_: AddressLike,
        amount_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    transferFrom: TypedContractMethod<[
        sender_: AddressLike,
        recipient_: AddressLike,
        amount_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    updateDetails: TypedContractMethod<[
        name_: string,
        symbol_: string,
        sequence_: BigNumberish
    ], [
        void
    ], 'nonpayable'>;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: 'DOMAIN_SEPARATOR'): TypedContractMethod<[], [string], 'view'>;
    getFunction(nameOrSignature: 'allowance'): TypedContractMethod<[
        owner_: AddressLike,
        spender_: AddressLike
    ], [
        bigint
    ], 'view'>;
    getFunction(nameOrSignature: 'approve'): TypedContractMethod<[
        spender_: AddressLike,
        amount_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'balanceOf'): TypedContractMethod<[account_: AddressLike], [bigint], 'view'>;
    getFunction(nameOrSignature: 'burn'): TypedContractMethod<[
        account_: AddressLike,
        amount_: BigNumberish
    ], [
        void
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'chainId'): TypedContractMethod<[], [bigint], 'view'>;
    getFunction(nameOrSignature: 'decimals'): TypedContractMethod<[], [bigint], 'view'>;
    getFunction(nameOrSignature: 'decreaseAllowance'): TypedContractMethod<[
        spender_: AddressLike,
        subtractedValue_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'eip712Domain'): TypedContractMethod<[
    ], [
        [
            string,
            string,
            string,
            bigint,
            string,
            string,
            bigint[]
        ] & {
            domainFields: string;
            domainName: string;
            domainVersion: string;
            domainChainId: bigint;
            domainVerifyingContract: string;
            domainSalt: string;
            domainExtensions: bigint[];
        }
    ], 'view'>;
    getFunction(nameOrSignature: 'increaseAllowance'): TypedContractMethod<[
        spender_: AddressLike,
        addedValue_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'initialize'): TypedContractMethod<[
        name_: string,
        symbol_: string,
        decimals_: BigNumberish,
        sequence_: BigNumberish,
        owner_: AddressLike,
        chainId_: BigNumberish,
        nativeContract_: BytesLike
    ], [
        void
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'mint'): TypedContractMethod<[
        account_: AddressLike,
        amount_: BigNumberish
    ], [
        void
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'name'): TypedContractMethod<[], [string], 'view'>;
    getFunction(nameOrSignature: 'nativeContract'): TypedContractMethod<[], [string], 'view'>;
    getFunction(nameOrSignature: 'nonces'): TypedContractMethod<[owner_: AddressLike], [bigint], 'view'>;
    getFunction(nameOrSignature: 'owner'): TypedContractMethod<[], [string], 'view'>;
    getFunction(nameOrSignature: 'permit'): TypedContractMethod<[
        owner_: AddressLike,
        spender_: AddressLike,
        value_: BigNumberish,
        deadline_: BigNumberish,
        v_: BigNumberish,
        r_: BytesLike,
        s_: BytesLike
    ], [
        void
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'symbol'): TypedContractMethod<[], [string], 'view'>;
    getFunction(nameOrSignature: 'totalSupply'): TypedContractMethod<[], [bigint], 'view'>;
    getFunction(nameOrSignature: 'transfer'): TypedContractMethod<[
        recipient_: AddressLike,
        amount_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'transferFrom'): TypedContractMethod<[
        sender_: AddressLike,
        recipient_: AddressLike,
        amount_: BigNumberish
    ], [
        boolean
    ], 'nonpayable'>;
    getFunction(nameOrSignature: 'updateDetails'): TypedContractMethod<[
        name_: string,
        symbol_: string,
        sequence_: BigNumberish
    ], [
        void
    ], 'nonpayable'>;
    getEvent(key: 'Approval'): TypedContractEvent<ApprovalEvent.InputTuple, ApprovalEvent.OutputTuple, ApprovalEvent.OutputObject>;
    getEvent(key: 'Transfer'): TypedContractEvent<TransferEvent.InputTuple, TransferEvent.OutputTuple, TransferEvent.OutputObject>;
    filters: {
        'Approval(address,address,uint256)': TypedContractEvent<ApprovalEvent.InputTuple, ApprovalEvent.OutputTuple, ApprovalEvent.OutputObject>;
        Approval: TypedContractEvent<ApprovalEvent.InputTuple, ApprovalEvent.OutputTuple, ApprovalEvent.OutputObject>;
        'Transfer(address,address,uint256)': TypedContractEvent<TransferEvent.InputTuple, TransferEvent.OutputTuple, TransferEvent.OutputObject>;
        Transfer: TypedContractEvent<TransferEvent.InputTuple, TransferEvent.OutputTuple, TransferEvent.OutputObject>;
    };
}
//# sourceMappingURL=TokenImplementation.d.ts.map