import * as Runtypes from 'runtypes';
export declare type QueryType = string;
export declare const QueryType: Runtypes.String;
declare const BaseQueryRuntype: Runtypes.Record<{
    type: Runtypes.String;
    description: Runtypes.String;
    time_in_nanos: Runtypes.Number;
    breakdown: Runtypes.Dictionary<Runtypes.Number, string>;
}, false>;
declare type BaseQueryRuntype = Omit<Runtypes.Static<typeof BaseQueryRuntype>, 'type'> & {
    type: QueryType;
};
export declare type Query = BaseQueryRuntype & {
    children?: Query[];
};
export declare const Query: Runtypes.Runtype<Query>;
export declare const Profile: Runtypes.Record<{
    shards: Runtypes.Array<Runtypes.Record<{
        id: Runtypes.String;
        searches: Runtypes.Array<Runtypes.Record<{
            query: Runtypes.Array<Runtypes.Runtype<Query>, false>;
            rewrite_time: Runtypes.Number;
            collector: Runtypes.Array<Runtypes.Record<{
                name: Runtypes.String;
                reason: Runtypes.String;
                time_in_nanos: Runtypes.Number;
            }, false>, false>;
        }, false>, false>;
        fetch: Runtypes.Record<{
            type: Runtypes.String;
            description: Runtypes.String;
            time_in_nanos: Runtypes.Number;
            breakdown: Runtypes.Dictionary<Runtypes.Number, string>;
        }, false>;
    }, false>, false>;
}, false>;
export declare type Profile = Runtypes.Static<typeof Profile>;
export declare const NestedProfile: Runtypes.Record<{
    profile: Runtypes.Record<{
        shards: Runtypes.Array<Runtypes.Record<{
            id: Runtypes.String;
            searches: Runtypes.Array<Runtypes.Record<{
                query: Runtypes.Array<Runtypes.Runtype<Query>, false>;
                rewrite_time: Runtypes.Number;
                collector: Runtypes.Array<Runtypes.Record<{
                    name: Runtypes.String;
                    reason: Runtypes.String;
                    time_in_nanos: Runtypes.Number;
                }, false>, false>;
            }, false>, false>;
            fetch: Runtypes.Record<{
                type: Runtypes.String;
                description: Runtypes.String;
                time_in_nanos: Runtypes.Number;
                breakdown: Runtypes.Dictionary<Runtypes.Number, string>;
            }, false>;
        }, false>, false>;
    }, false>;
}, false>;
export declare type NestedProfile = Runtypes.Static<typeof NestedProfile>;
export {};
