import type { ScheduleDefinition, ScheduleIntegrationRequirement } from "./types.js"; /** * Describe why the legacy `input._schedule_target` channel is invalid, or * return `null`. * * The legacy channel addresses the same hosted conversation as the canonical * target, so it earns the same guarantees. Validating only the canonical copy * would leave an author who addresses a conversation through the legacy * channel alone with none of them: a misspelled key would disappear and the * schedule would ship addressing nothing. * * The value is already a serializable snapshot, so plain key enumeration and * property reads are safe. */ export declare function legacyScheduleTargetDiagnostic(input: Record | undefined, conversation: { conversationMode: unknown; conversationId: unknown; }): string | null; /** * Validate, detach, and deeply freeze author-facing integration metadata. * * Task and workflow discovery use the same canonical contract as schedules so * all trigger targets reach the API with identical identifiers, limits, and * duplicate handling. */ export declare function captureScheduleIntegrationRequirementsConfig(value: unknown, definitionLabel?: string): ScheduleIntegrationRequirement[] | undefined; export declare function normalizeScheduleConfig(value: unknown): ScheduleDefinition; /** Validate and copy an already-canonical source schedule definition. */ export declare function normalizeScheduleDefinition(value: unknown): ScheduleDefinition; export declare function isValidScheduleDefinition(value: unknown): value is ScheduleDefinition; //# sourceMappingURL=validation.d.ts.map