import { OnModuleInit, OnModuleDestroy } from '@nestjs/common';
import { DiscoveryService } from '@nestjs/core';
import { Client } from '@temporalio/client';
import { TemporalOptions, ScheduleCreationOptions, ScheduleCreationResult, ScheduleUpsertResult, ScheduleRetrievalResult, SchedulePauseResult, ScheduleUnpauseResult, ScheduleTriggerResult, ScheduleDeletionResult, ScheduleUpdateResult, ScheduleDescribeResult, ScheduleListResult, ScheduleServiceStatus, ScheduleServiceHealth, ScheduleServiceStats, ScheduleDescription, ScheduleUpdateOptions, ListScheduleOptions, TemporalOverlapPolicy } from '../interfaces';
import { TemporalMetadataAccessor } from './temporal-metadata.service';
export declare class TemporalScheduleService implements OnModuleInit, OnModuleDestroy {
    private readonly options;
    private readonly client;
    private readonly discoveryService;
    private readonly metadataAccessor;
    private readonly logger;
    private scheduleClient?;
    private scheduleHandles;
    private isInitialized;
    constructor(options: TemporalOptions, client: Client | null, discoveryService: DiscoveryService, metadataAccessor: TemporalMetadataAccessor);
    private extractErrorMessage;
    private normalizeScheduleOptions;
    onModuleInit(): Promise<void>;
    onModuleDestroy(): Promise<void>;
    private initializeScheduleClient;
    private discoverAndRegisterSchedules;
    private registerScheduledWorkflow;
    private buildScheduleSpec;
    private buildWorkflowOptions;
    private parseInterval;
    private buildScheduleOptions;
    createSchedule(options: ScheduleCreationOptions): Promise<ScheduleCreationResult>;
    upsertSchedule(options: ScheduleCreationOptions): Promise<ScheduleUpsertResult>;
    getSchedule(scheduleId: string): Promise<ScheduleRetrievalResult>;
    private resolveScheduleHandle;
    pauseSchedule(scheduleId: string, note?: string): Promise<SchedulePauseResult>;
    unpauseSchedule(scheduleId: string, note?: string): Promise<ScheduleUnpauseResult>;
    triggerSchedule(scheduleId: string, overlapPolicy?: TemporalOverlapPolicy): Promise<ScheduleTriggerResult>;
    deleteSchedule(scheduleId: string): Promise<ScheduleDeletionResult>;
    updateSchedule(scheduleId: string, updateFn: (previous: ScheduleDescription) => ScheduleUpdateOptions): Promise<ScheduleUpdateResult>;
    describeSchedule(scheduleId: string): Promise<ScheduleDescribeResult>;
    listSchedules(options?: ListScheduleOptions): ScheduleListResult;
    isHealthy(): boolean;
    getScheduleStats(): ScheduleServiceStats;
    getStatus(): ScheduleServiceStatus;
    getHealth(): ScheduleServiceHealth;
    private ensureInitialized;
}
