import { SearchArrayMarker, SearchFacetKind, SearchFieldKind, SearchPropertyMetadata, SearchPropertyType } from "@medusajs/types";
import { BaseSchemaProperty } from "../../../schema";
/**
 * The core of every search index field property. Only the modifiers that make
 * sense for any field kind live here; the narrower ones (searchable, facet
 * types, array, correlated) sit on the subclasses whose kinds support them, so
 * an invalid combination is a compile error instead of a boot failure.
 */
export declare abstract class BaseSearchProperty<T> extends BaseSchemaProperty<T> implements SearchPropertyType<T> {
    #private;
    protected abstract dataType: {
        name: SearchFieldKind;
        options?: Record<string, any>;
    };
    retrievable(value?: boolean): this;
    providerOptions(options: Record<string, Record<string, unknown>>): this;
    parse(fieldName: string): SearchPropertyMetadata<T>;
}
/**
 * A field holding plain values — every kind except vector. Can be filtered,
 * sorted, faceted on values, and hold arrays.
 */
export declare abstract class ScalarSearchProperty<T> extends BaseSearchProperty<T> {
    #private;
    filterable(value?: boolean): this;
    sortable(value?: boolean): this;
    facetable(value?: boolean): this;
    protected setFacetable(value: boolean | {
        types?: SearchFacetKind[];
    }): void;
    array(): this & SearchArrayMarker;
    parse(fieldName: string): SearchPropertyMetadata<T>;
}
/**
 * text / keyword — the only kinds an engine can match as free text.
 */
export declare abstract class StringSearchProperty extends ScalarSearchProperty<string> {
    #private;
    searchable(value?: boolean | {
        weight?: number;
    }): this;
    parse(fieldName: string): SearchPropertyMetadata<string>;
}
/**
 * integer / float / date — orderable kinds, so range and stats facets apply.
 */
export declare abstract class RangeFacetSearchProperty<T> extends ScalarSearchProperty<T> {
    facetable(value?: boolean | {
        types?: SearchFacetKind[];
    }): this;
}
//# sourceMappingURL=base.d.ts.map