import type { OwnerShipMeta } from '../ownership';
import { SpecContractRegistry } from '../registry';
import type { ResultCatalog } from '../results';
import type { VersionedSpecRef } from '../versioning';
import type { RetryPolicy } from './queue';
export type JobMeta = OwnerShipMeta;
export interface JobSchedule {
    /** Cron expression (e.g., "0 * * * *" for hourly). */
    cron?: string;
    /** Fixed interval in milliseconds between runs. */
    intervalMs?: number;
}
export interface JobSpec {
    meta: JobMeta;
    /** Zod schema or JSON Schema describing the job payload. */
    payload: {
        schema: unknown;
    };
    /** Retry policy overrides for this job type. */
    retry?: Partial<RetryPolicy>;
    /** Maximum execution time before the job is considered timed out. */
    timeoutMs?: number;
    /** Optional scheduling configuration for recurring jobs. */
    schedule?: JobSchedule;
    /** Optional typed result catalog for job success/failure outcomes. */
    results?: ResultCatalog;
}
/** Reference to a job spec by key and version. */
export type JobRef = VersionedSpecRef;
export declare class JobSpecRegistry extends SpecContractRegistry<'job', JobSpec> {
    constructor(items?: JobSpec[]);
}
/**
 * Helper to define a Job spec.
 */
export declare const defineJob: (spec: JobSpec) => JobSpec;
