import { ApiInterfaceRx } from '@polkadot/api/types';
import { AnyFunction } from '@polkadot/types/types';
import { Observable } from 'rxjs';
import * as accounts from './accounts';
import * as balances from './balances';
import * as chain from './chain';
import * as contracts from './contracts';
import * as democracy from './democracy';
import * as elections from './elections';
import * as imOnline from './imOnline';
import * as session from './session';
import * as staking from './staking';
export * from './type';
declare type DeriveSection<Section> = {
    [Method in keyof Section]: Section[Method] extends AnyFunction ? ReturnType<Section[Method]> : never;
};
declare type DeriveAllSections<AllSections> = {
    [Section in keyof AllSections]: DeriveSection<AllSections[Section]>;
};
export declare type DeriveCustom = Record<string, Record<string, (api: ApiInterfaceRx) => (...args: any[]) => Observable<any>>>;
export declare const derive: {
    accounts: typeof accounts;
    balances: typeof balances;
    chain: typeof chain;
    contracts: typeof contracts;
    democracy: typeof democracy;
    elections: typeof elections;
    imOnline: typeof imOnline;
    session: typeof session;
    staking: typeof staking;
};
export declare type ExactDerive = DeriveAllSections<typeof derive>;
export default function decorateDerive(api: ApiInterfaceRx, custom?: DeriveCustom): ExactDerive;
