import { ModuleInitArgs, ModuleMetadata } from '../base_module';
import { InteroperabilityMethod, TokenMethod } from './types';
import { TransactionExecuteContext, TransactionVerifyContext, VerificationResult } from '../../state_machine';
import { FeeMethod } from './method';
import { FeeEndpoint } from './endpoint';
import { FeeInteroperableMethod } from './cc_method';
import { BaseInteroperableModule } from '../interoperability/base_interoperable_module';
export declare class FeeModule extends BaseInteroperableModule {
    method: FeeMethod;
    crossChainMethod: FeeInteroperableMethod;
    configSchema: {
        $id: string;
        type: string;
        properties: {
            feeTokenID: {
                type: string;
                format: string;
            };
            minFeePerByte: {
                type: string;
                format: string;
            };
            maxBlockHeightZeroFeePerByte: {
                type: string;
                format: string;
            };
            feePoolAddress: {
                type: string;
                format: string;
            };
        };
        required: string[];
    };
    endpoint: FeeEndpoint;
    private _tokenMethod;
    private _minFeePerByte;
    private _maxBlockHeightZeroFeePerByte;
    private _tokenID;
    private _feePoolAddress?;
    constructor();
    addDependencies(tokenMethod: TokenMethod, interopMethod: InteroperabilityMethod): void;
    metadata(): ModuleMetadata;
    init(args: ModuleInitArgs): Promise<void>;
    verifyTransaction(context: TransactionVerifyContext): Promise<VerificationResult>;
    beforeCommandExecute(context: TransactionExecuteContext): Promise<void>;
    afterCommandExecute(context: TransactionExecuteContext): Promise<void>;
    _getMinFee(blockHeight: number, transactionByteLength: number): bigint;
}
