import { ArgumentObject, Range, NBT, EntityID } from './';
export declare enum SelectorTarget {
    nearest = "p",
    random = "r",
    player = "a",
    entity = "e",
    executer = "s"
}
interface SelectorArguments {
    x?: number;
    y?: number;
    z?: number;
    distance?: Range;
    dx?: number;
    dy?: number;
    dz?: number;
    scores?: {
        [score: string]: Range;
    };
    team?: string | {
        [team: string]: false;
    };
    limit?: number;
    sort?: 'nearest' | 'furthest' | 'random' | 'arbitrary';
    level?: Range;
    gamemode?: {
        spectator?: boolean;
        adventure?: boolean;
        creative?: boolean;
        survival?: boolean;
    };
    name?: {
        [name: string]: boolean;
    };
    x_rotation?: Range;
    y_rotation?: Range;
    type?: EntityID | {
        [type in EntityID]?: false;
    };
    tag?: {
        [tag: string]: boolean;
    };
    nbt?: NBT;
    advancements?: {
        [advancement: string]: boolean | {
            [criteria: string]: boolean;
        };
    };
    predicate?: {
        [predicate: string]: boolean;
    };
}
export declare class Selector extends ArgumentObject {
    target: SelectorTarget;
    arguments: SelectorArguments;
    constructor(target: SelectorTarget | keyof typeof SelectorTarget, args?: SelectorArguments);
    compile(): AsyncGenerator<string, void, unknown>;
    toString(): string;
    static entity(args?: SelectorArguments): Selector;
    static executer(args?: Omit<SelectorArguments, 'sort' | 'limit'>): Selector;
    static nearest(args?: Omit<SelectorArguments, 'type'>): Selector;
    static player(args?: Omit<SelectorArguments, 'type'>): Selector;
    static random(args?: SelectorArguments): Selector;
}
export {};
