import { AnyFunction } from '@polkadot/types/types';
import { DecorateMethod, MethodResult } from '../types';
declare type AnyDerive = Record<string, Record<string, AnyFunction>>;
declare type DeriveSection<ApiType, Section extends Record<string, AnyFunction>> = {
    [MethodName in keyof Section]: MethodResult<ApiType, Section[MethodName]>;
};
export declare type DeriveAllSections<ApiType, AllSections extends AnyDerive> = {
    [SectionName in keyof AllSections]: DeriveSection<ApiType, AllSections[SectionName]>;
};
/**
 * This is a section decorator which keeps all type information.
 */
export declare function decorateSections<ApiType, AllSections extends AnyDerive>(allSections: AllSections, decorateMethod: DecorateMethod<ApiType>): DeriveAllSections<ApiType, AllSections>;
export {};
