import { ConfigService } from '@nestjs/config';
import { BullMqScheduledJobsQueuePort } from './queue/scheduled-jobs-queue.port';
import { SandboxRunner, SandboxResult } from './sandbox/sandbox-runner';
export interface RegisterScheduledJobInput {
    jobId: string;
    scheduleType: 'INTERVAL' | 'CRON' | 'ONE_SHOT';
    intervalEvery?: number;
    intervalUnit?: 'MINUTES' | 'HOURS' | 'DAYS';
    cronExpression?: string;
    timezone?: string;
    startAt?: string | null;
    endAt?: string | null;
}
export declare class ScheduledJobsService {
    private readonly queue;
    private readonly runner;
    private readonly configService;
    private readonly logger;
    constructor(queue: BullMqScheduledJobsQueuePort, runner: SandboxRunner, configService: ConfigService);
    register(input: RegisterScheduledJobInput): Promise<{
        schedulerId: string | null;
        degraded: boolean;
    }>;
    unregister(jobId: string): Promise<void>;
    runNow(jobId: string): Promise<{
        id: string | null;
        degraded: boolean;
    }>;
    runIfDue(input: RegisterScheduledJobInput & {
        lastRunAt?: string | null;
    }): Promise<{
        enqueued: boolean;
    }>;
    reconcile(inputs: RegisterScheduledJobInput[]): Promise<number>;
    dryRun(body: {
        code: string;
        input?: unknown;
        writeMode?: 'safe' | 'real';
    }): Promise<SandboxResult>;
    private buildSpec;
    private parseDate;
}
