import { Event, IEventBusModuleService, InternalModuleDeclaration, Logger, ModuleJoinerConfig, ModulesSdkTypes, RemoteQueryFunction, SearchTypes } from "@medusajs/framework/types";
import { ContainerRegistrationKeys, Modules } from "@medusajs/framework/utils";
import { SearchEventRoutes, SearchIndexContext, SearchIndexes, SearchIndexSeedAction, SearchModuleOptions } from "../types";
import { SearchProviderService } from "./search-provider";
type InjectedDependencies = {
    logger: Logger;
    [Modules.EVENT_BUS]: IEventBusModuleService;
    [ContainerRegistrationKeys.QUERY]: RemoteQueryFunction;
    searchProviderService: SearchProviderService;
    searchIndexService: ModulesSdkTypes.IMedusaInternalService<any>;
    searchIndexSyncService: ModulesSdkTypes.IMedusaInternalService<any>;
};
declare const SearchModuleService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{}>>;
export default class SearchModuleService extends SearchModuleService_base implements SearchTypes.ISearchModuleService {
    protected readonly moduleDeclaration: InternalModuleDeclaration;
    protected isWorkerMode: boolean;
    protected readonly logger_: Logger;
    protected readonly searchProviderService_: SearchProviderService;
    protected readonly moduleOptions_: SearchModuleOptions;
    protected readonly indexes_: SearchIndexes;
    protected readonly context_: SearchIndexContext;
    protected readonly eventRoutes_: SearchEventRoutes;
    constructor(container: InjectedDependencies, moduleOptions: SearchModuleOptions, moduleDeclaration: InternalModuleDeclaration);
    __joinerConfig(): ModuleJoinerConfig;
    __hooks: {
        onApplicationStart(this: SearchModuleService): Promise<void>;
    };
    search<T = Record<string, unknown>>(query: SearchTypes.SearchQuery): Promise<SearchTypes.SearchResult<T>>;
    searchMany(queries: SearchTypes.SearchQuery[]): Promise<SearchTypes.SearchResult[]>;
    upsertDocuments({ index, documents, }: {
        index: string;
        documents: SearchTypes.SearchDocument[];
    }): Promise<SearchTypes.SearchTask>;
    deleteDocuments({ index, filters, }: {
        index: string;
        filters: SearchTypes.SearchFilters;
    }): Promise<SearchTypes.SearchTask>;
    ingest(event: Event<any>): Promise<SearchTypes.SearchTask[]>;
    listIndexes(): string[];
    listRetrievableFields(index: string): string[];
    reindex(input?: SearchTypes.SearchReindexInput): Promise<SearchTypes.SearchReindexResult>;
    /**
     * Seeds whatever needs data. Indexes that are not migrated yet are skipped —
     * creating and migrating physical indexes is the application's job
     * (e.g. `db:migrate`), not something a booting worker invents.
     *
     * The exception is a provider that asked for it through `migrate_on_startup`,
     * whose indexes do not outlive the process that created them. Those are
     * migrated here first, so the index and the data filling it are built by the
     * same process.
     */
    protected onApplicationStart_(): Promise<void>;
    protected createSeedPlan_(): Promise<SearchIndexSeedAction[]>;
    protected executeSeedPlan_(actions: SearchIndexSeedAction[]): Promise<void>;
    createIndexMigrationPlan(): Promise<SearchTypes.SearchIndexMigrationAction[]>;
    executeIndexMigrationPlan(actions: SearchTypes.SearchIndexMigrationAction[]): Promise<void>;
}
export {};
//# sourceMappingURL=search-module-service.d.ts.map