import { KebabCase, SnakeCase } from "@medusajs/types";
type ReturnType<TNames extends string[], TPrefix extends string = ""> = {
    [K in TNames[number] as `${Uppercase<SnakeCase<K & string>>}_CREATED`]: TPrefix extends "" ? `${KebabCase<K & string>}.created` : `${TPrefix}.${KebabCase<K & string>}.created`;
} & {
    [K in TNames[number] as `${Uppercase<SnakeCase<K & string>>}_UPDATED`]: TPrefix extends "" ? `${KebabCase<K & string>}.updated` : `${TPrefix}.${KebabCase<K & string>}.updated`;
} & {
    [K in TNames[number] as `${Uppercase<SnakeCase<K & string>>}_DELETED`]: TPrefix extends "" ? `${KebabCase<K & string>}.deleted` : `${TPrefix}.${KebabCase<K & string>}.deleted`;
} & {
    [K in TNames[number] as `${Uppercase<SnakeCase<K & string>>}_RESTORED`]: TPrefix extends "" ? `${KebabCase<K & string>}.restored` : `${TPrefix}.${KebabCase<K & string>}.restored`;
} & {
    [K in TNames[number] as `${Uppercase<SnakeCase<K & string>>}_ATTACHED`]: TPrefix extends "" ? `${KebabCase<K & string>}.attached` : `${TPrefix}.${KebabCase<K & string>}.attached`;
} & {
    [K in TNames[number] as `${Uppercase<SnakeCase<K & string>>}_DETACHED`]: TPrefix extends "" ? `${KebabCase<K & string>}.detached` : `${TPrefix}.${KebabCase<K & string>}.detached`;
};
/**
 * Build a conventional event name from the object name and the action and the prefix if provided
 * @param prefix
 * @param objectName
 * @param action
 */
export declare function buildModuleResourceEventName({ prefix, objectName, action, }: {
    prefix?: string;
    objectName: string;
    action: string;
}): string;
/**
 * From the given strings it will produce the event names accordingly.
 * the result will look like:
 * input: 'serviceZone'
 * output: {
 *   SERVICE_ZONE_CREATED: 'service-zone.created',
 *   SERVICE_ZONE_UPDATED: 'service-zone.updated',
 *   SERVICE_ZONE_DELETED: 'service-zone.deleted',
 *   SERVICE_ZONE_RESTORED: 'service-zone.restored',
 *   SERVICE_ZONE_ATTACHED: 'service-zone.attached',
 *   SERVICE_ZONE_DETACHED: 'service-zone.detached',
 *   ...
 * }
 *
 * @param names
 * @param prefix
 */
export declare function buildEventNamesFromEntityName<TNames extends string[], TPrefix extends string = "">(names: TNames, prefix?: TPrefix): ReturnType<TNames, TPrefix>;
export declare const EventPriority: {
    readonly CRITICAL: 10;
    readonly HIGH: 50;
    readonly DEFAULT: 100;
    readonly LOW: 500;
    /**
     * Lowest priority value supported by BullMQ (2^21)
     * Internal events use this priority to ensure they don't block critical business events
     */
    readonly LOWEST: 2097152;
};
export {};
//# sourceMappingURL=utils.d.ts.map