import { Condition, Database, Field, Get, Json, LogicalCondition, MapOptions, Mapper, PropertyOptions, Sort, SortDirection, Text } from '@thisisagile/easy';
import { MongoProvider } from './MongoProvider';
export declare class Collection extends Mapper {
    protected readonly map: {
        field: <T = unknown>(name: string, options?: PropertyOptions<T>) => Field;
        item: (property: string, options?: PropertyOptions) => import("@thisisagile/easy").Property;
        ignore: (property?: string) => import("@thisisagile/easy").Mapping;
        skipIn: (property: string) => import("@thisisagile/easy").Mapping;
        skipOut: (property: string) => import("@thisisagile/easy").Mapping;
        func: (property: string, funcIn: Get<import("@thisisagile/easy").Optional<import("@thisisagile/easy").JsonValue>, Json>, funcOut: Get<import("@thisisagile/easy").Optional<import("@thisisagile/easy").JsonValue>, Json>) => import("@thisisagile/easy").Mapping;
        add: (funcIn: Get<import("@thisisagile/easy").JsonValue, Json>) => import("@thisisagile/easy").Mapping;
        map: (mapper: import("@thisisagile/easy").Construct<Mapper>, property?: string) => import("@thisisagile/easy").Mapping;
        propsToList: (...maps: import("@thisisagile/easy").Mapping[]) => import("@thisisagile/easy").Mapping;
        list: (mapper: import("@thisisagile/easy").Mapping, property: string) => import("@thisisagile/easy").Mapping;
    };
    readonly id: Field;
    constructor(options?: MapOptions);
    get db(): Database;
    get provider(): MongoProvider;
    where: (...conditions: Get<Condition, this>[]) => Json;
    match: (condition: Get<Condition | LogicalCondition, this>) => Json;
    group: (...conditions: Get<Condition, this>[]) => Json;
    google: (value: unknown) => Condition;
    search: (key: Text) => Field;
    sort: (...conditions: Sort[]) => Record<string, SortDirection>;
    out(to?: Json): Json;
}
