/// <reference types="node" />
import { BlockAssets, MethodContext, ImmutableMethodContext } from '../../state_machine';
import { JSONObject } from '../../types';
export interface ModuleConfig {
    tokenID: Buffer;
    brackets: ReadonlyArray<bigint>;
    offset: number;
    distance: number;
    rewardReductionFactorBFT: bigint;
}
export type ModuleConfigJSON = JSONObject<ModuleConfig>;
export interface TokenMethod {
    mint(methodContext: MethodContext, address: Buffer, id: Buffer, amount: bigint): Promise<void>;
    userSubstoreExists(methodContext: ImmutableMethodContext, address: Buffer, tokenID: Buffer): Promise<boolean>;
}
export interface RandomMethod {
    isSeedRevealValid(methodContext: ImmutableMethodContext, generatorAddress: Buffer, assets: BlockAssets): Promise<boolean>;
}
export interface BFTMethod {
    impliesMaximalPrevotes(methodContext: ImmutableMethodContext): Promise<boolean>;
}
export interface DefaultReward {
    reward: string;
}
export interface InflationRate {
    tokenID: string;
    rate: string;
}
