import { BaseModule, ModuleInitArgs, ModuleMetadata } from '../base_module';
import { PoSMethod, RandomMethod, TokenMethod, ValidatorsMethod } from './types';
import { BlockAfterExecuteContext, BlockHeader, ImmutableMethodContext } from '../../state_machine';
import { DynamicRewardMethod } from './method';
import { DynamicRewardEndpoint } from './endpoint';
import { BlockAssets, BlockExecuteContext, GenesisBlockExecuteContext } from '../../state_machine/types';
export declare class DynamicRewardModule extends BaseModule {
    method: DynamicRewardMethod;
    configSchema: {
        $id: string;
        type: string;
        properties: {
            factorMinimumRewardActiveValidators: {
                type: string;
                minimum: number;
            };
            tokenID: {
                type: string;
                format: string;
                minLength: number;
                maxLength: number;
            };
            offset: {
                type: string;
                minimum: number;
            };
            distance: {
                type: string;
                minimum: number;
            };
            brackets: {
                type: string;
                items: {
                    type: string;
                    format: string;
                };
            };
        };
        required: string[];
    };
    endpoint: DynamicRewardEndpoint;
    private _tokenMethod;
    private _randomMethod;
    private _validatorMethod;
    private _posMethod;
    private _moduleConfig;
    constructor();
    addDependencies(tokenMethod: TokenMethod, randomMethod: RandomMethod, validatorMethod: ValidatorsMethod, posMethod: PoSMethod): void;
    metadata(): ModuleMetadata;
    init(args: ModuleInitArgs): Promise<void>;
    initGenesisState(context: GenesisBlockExecuteContext): Promise<void>;
    beforeTransactionsExecute(context: BlockExecuteContext): Promise<void>;
    afterTransactionsExecute(context: BlockAfterExecuteContext): Promise<void>;
    _getBlockRewardDeduction(context: ImmutableMethodContext, header: BlockHeader, assets: BlockAssets, defaultReward: bigint): Promise<[bigint, number]>;
    _getDefaultBlockReward(context: ImmutableMethodContext, header: BlockHeader): Promise<bigint>;
}
