/** * Wave Completion Frame Type Definition * * Specialized frame type for capturing wave completion metadata. * A wave is a set of related issues that are worked on together (fanout pattern). */ import { z } from "zod"; /** * Wave issue metadata */ export declare const WaveIssue: z.ZodObject<{ ref: z.ZodString; title: z.ZodString; closedAt: z.ZodString; pr: z.ZodOptional; }, z.core.$strip>; export type WaveIssue = z.infer; /** * Wave duration metadata */ export declare const WaveDuration: z.ZodObject<{ started: z.ZodString; completed: z.ZodString; elapsed: z.ZodString; }, z.core.$strip>; export type WaveDuration = z.infer; /** * Wave metrics */ export declare const WaveMetrics: z.ZodObject<{ issueCount: z.ZodNumber; prCount: z.ZodNumber; linesAdded: z.ZodNumber; linesRemoved: z.ZodNumber; testsAdded: z.ZodNumber; }, z.core.$strip>; export type WaveMetrics = z.infer; /** * Next wave suggestion */ export declare const NextWave: z.ZodObject<{ suggested: z.ZodArray; rationale: z.ZodString; }, z.core.$strip>; export type NextWave = z.infer; /** * Wave completion structured content */ export declare const WaveCompleteContent: z.ZodObject<{ waveId: z.ZodString; epicRef: z.ZodString; issues: z.ZodArray; }, z.core.$strip>>; duration: z.ZodObject<{ started: z.ZodString; completed: z.ZodString; elapsed: z.ZodString; }, z.core.$strip>; metrics: z.ZodObject<{ issueCount: z.ZodNumber; prCount: z.ZodNumber; linesAdded: z.ZodNumber; linesRemoved: z.ZodNumber; testsAdded: z.ZodNumber; }, z.core.$strip>; nextWave: z.ZodOptional; rationale: z.ZodString; }, z.core.$strip>>; }, z.core.$strip>; export type WaveCompleteContent = z.infer; /** * Wave completion frame * * This extends the base Frame type with wave-specific metadata. * The structured content is stored in a custom field for backward compatibility. */ export declare const WaveCompleteFrame: z.ZodObject<{ type: z.ZodLiteral<"wave-complete">; summary_caption: z.ZodString; structured_content: z.ZodObject<{ waveId: z.ZodString; epicRef: z.ZodString; issues: z.ZodArray; }, z.core.$strip>>; duration: z.ZodObject<{ started: z.ZodString; completed: z.ZodString; elapsed: z.ZodString; }, z.core.$strip>; metrics: z.ZodObject<{ issueCount: z.ZodNumber; prCount: z.ZodNumber; linesAdded: z.ZodNumber; linesRemoved: z.ZodNumber; testsAdded: z.ZodNumber; }, z.core.$strip>; nextWave: z.ZodOptional; rationale: z.ZodString; }, z.core.$strip>>; }, z.core.$strip>; keywords: z.ZodArray; }, z.core.$strip>; export type WaveCompleteFrame = z.infer; /** * Format elapsed time in human-readable format * * @param startTime - Start time ISO string * @param endTime - End time ISO string * @returns Human-readable duration (e.g., "3h 45m", "2d 5h") */ export declare function formatElapsedTime(startTime: string, endTime: string): string; /** * Generate wave completion summary caption * * @param content - Wave completion content * @returns Summary caption string */ export declare function generateSummaryCaption(content: WaveCompleteContent): string; /** * Generate keywords for wave completion frame * * @param content - Wave completion content * @param epicLabels - Additional labels from the epic * @returns Array of keywords for searchability */ export declare function generateWaveKeywords(content: WaveCompleteContent, epicLabels?: string[]): string[];