import { Context, DAL, FindConfig, IEventBusModuleService, ILinkModule, InternalModuleDeclaration, ModuleJoinerConfig, RestoreReturn, SoftDeleteReturn } from "@medusajs/framework/types";
import { Modules } from "@medusajs/framework/utils";
import { LinkService } from ".";
type InjectedDependencies = {
    baseRepository: DAL.RepositoryService;
    linkService: LinkService<any>;
    primaryKey: string | string[];
    foreignKey: string;
    extraFields: string[];
    entityName: string;
    serviceName: string;
    [Modules.EVENT_BUS]?: IEventBusModuleService;
};
export default class LinkModuleService implements ILinkModule {
    readonly moduleDeclaration: InternalModuleDeclaration;
    protected baseRepository_: DAL.RepositoryService;
    protected readonly linkService_: LinkService<any>;
    protected readonly eventBusModuleService_?: IEventBusModuleService;
    protected readonly entityName_: string;
    protected readonly serviceName_: string;
    protected primaryKey_: string[];
    protected foreignKey_: string;
    protected extraFields_: string[];
    constructor({ baseRepository, linkService, primaryKey, foreignKey, extraFields, entityName, serviceName, [Modules.EVENT_BUS]: eventBusModuleService, }: InjectedDependencies, moduleDeclaration: InternalModuleDeclaration);
    __joinerConfig(): ModuleJoinerConfig;
    private buildData;
    private isValidKeyName;
    private validateFields;
    retrieve(primaryKeyData: string | string[], foreignKeyData: string, sharedContext?: Context): Promise<unknown>;
    list(filters?: Record<string, unknown>, config?: FindConfig<unknown>, sharedContext?: Context): Promise<unknown[]>;
    listAndCount(filters?: Record<string, unknown>, config?: FindConfig<unknown>, sharedContext?: Context): Promise<[unknown[], number]>;
    create(primaryKeyOrBulkData: string | string[] | [string | string[], string, Record<string, unknown>][], foreignKeyData?: string, extraFields?: Record<string, unknown>, sharedContext?: Context): Promise<unknown[]>;
    dismiss(primaryKeyOrBulkData: string | string[] | [string | string[], string][], foreignKeyData?: string, sharedContext?: Context): Promise<unknown[]>;
    delete(data: any, sharedContext?: Context): Promise<void>;
    softDelete(data: any, { returnLinkableKeys }?: SoftDeleteReturn, sharedContext?: Context): Promise<Record<string, unknown[]> | void>;
    protected softDelete_(data: any[], sharedContext?: Context): Promise<[object[], Record<string, string[]>]>;
    restore(data: any, { returnLinkableKeys }?: RestoreReturn, sharedContext?: Context): Promise<Record<string, unknown[]> | void>;
    restore_(data: any, sharedContext?: Context): Promise<[object[], Record<string, string[]>]>;
    protected emitEvents_(groupedEvents: any): Promise<void>;
}
export {};
//# sourceMappingURL=link-module-service.d.ts.map