import { Logger } from '@adonisjs/core/logger';
import { PgBossCheck } from '@akago/adonisjs-pg-boss/healthcheck';
import { PgBoss } from '@akago/adonisjs-pg-boss/provider';
import { Channel } from './channel.js';
import { AKEvent } from './event.js';
import { AKEventUserServiceClassInfered } from './types.js';
export declare class AKEventService {
    #private;
    protected pgBoss: PgBoss;
    protected userService: InstanceType<AKEventUserServiceClassInfered>;
    protected logger: Logger;
    protected channels: Record<string, Channel<any>>;
    static synchronous: boolean;
    constructor(pgBoss: PgBoss, userService: InstanceType<AKEventUserServiceClassInfered>, logger: Logger, channels: Record<string, Channel<any>>);
    init(): Promise<void>;
    clearQueues(): Promise<void>;
    static makeHealthChecks(): PgBossCheck[];
    publish(event: AKEvent<any>): Promise<void>;
    private traceAndProcess;
    process(event: AKEvent<any>): Promise<void>;
    static fake(): Promise<AKEventServiceFaker>;
    emailPreviewEvents: AKEvent<any>[];
    fetchEmailPreviewEvents(): Promise<void>;
    fetchEventClasses(): Promise<(typeof AKEvent)[]>;
}
export interface AKEventServiceFaker {
    mails: AKEvent<any>[];
    pushNotifications: AKEvent<any>[];
    restore: () => void;
}
