/** * Pure take-slicing. * * Omni Flash has a hard ~10s-per-clip limit, so a longer talking-head video is * sliced into takes ≤ maxTakeSeconds, cutting only at sentence (segment) * boundaries — never mid-segment — so the joined reel reads cleanly. * * Algorithm (ported from the source skill, Step 5): * 1. Iterate transcript segments, accumulating into the current take while * `segment.end - takeStart <= max`. * 2. When the next segment would overrun `max`, close the current take at the * last accumulated segment's end and start a fresh take at that segment. * 3. Edge case: a single segment whose own duration exceeds `max` becomes its * own take with a HARD CUT at exactly `takeStart + max` (the only place a * cut lands mid-segment — unavoidable when one breath runs > max). * * Pure: no I/O. Deterministic for a given transcript + max. */ import type { TakeSplit, Transcript } from './types.js'; /** * Group transcript segments into takes ≤ maxTakeSeconds at sentence boundaries. * * @param transcript segments with absolute start/end seconds (must be ordered). * @param maxTakeSeconds Omni hard limit per clip (must be > 0). * @returns ordered `TakeSplit[]` with absolute start/end + the segment indices * each take covers. Empty transcript → `[]`. */ export declare function planSplits(transcript: Transcript, maxTakeSeconds: number): TakeSplit[]; //# sourceMappingURL=slice.d.ts.map