import { ApiInterfaceRx } from "../api/types";
import { AnyFunction } from "../types/types";
import { Observable } from 'rxjs';
import * as accounts from './accounts';
import * as chain from './chain';
import * as contracts from './contracts';
import * as imOnline from './imOnline';
import * as session from './session';
import * as staking from './staking';
import * as treasury from './treasury';
export * from './type';
export declare const derive: {
    accounts: typeof accounts;
    chain: typeof chain;
    contracts: typeof contracts;
    imOnline: typeof imOnline;
    session: typeof session;
    staking: typeof staking;
    treasury: typeof treasury;
};
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 type ExactDerive = DeriveAllSections<typeof derive>;
/** @internal */
export default function decorateDerive(api: ApiInterfaceRx, custom?: DeriveCustom): ExactDerive;
