import { Func, ICustomOptions, IndexOptions } from '@typegoose/typegoose/lib/types';
import { IndexDirection, SchemaOptions } from 'mongoose';
import { ParanoidOptions } from '../plugins';
export interface IPlugin<TFunc extends Func = any, TParams = Parameters<TFunc>[1]> {
    mongoosePlugin: TFunc;
    options?: TParams;
}
export interface IIndexOptions {
    fields: Record<string, IndexDirection>;
    options?: IndexOptions;
}
export interface ITimeToLiveIndexOptions {
    field: string;
    expiry: number | string;
}
export interface ISchemaOptions {
    collection?: string;
    schemaOptions?: Omit<SchemaOptions, 'collection'>;
    customOptions?: ICustomOptions;
    paranoid?: boolean | ParanoidOptions;
    plugins?: IPlugin[];
    index?: string | string[];
    unique?: string | string[];
    ttl?: ITimeToLiveIndexOptions | ITimeToLiveIndexOptions[];
    textSearch?: string;
    geoSearch?: string;
    customIndexes?: IIndexOptions[];
}
export declare const Schema: (options?: ISchemaOptions) => ClassDecorator;
//# sourceMappingURL=scheme.decorator.d.ts.map