/** * LaunchDarkly converter — LaunchDarkly flag/segment JSON → `QuonfigFile[]`. * * This is the provider-specific topology collapse (plan §3.1, Epic 3). It calls * the shared `quonfig-target/` verb library for the parts that are not * LaunchDarkly-specific (operator mapping, value coercion, ordered-ruleset * collapse) and handles the LaunchDarkly-shaped structure here: variations → * variants, per-environment state → `environments[]`, the gap dispositions of * plan §5.4. */ import { ConversionReport } from '../../quonfig-target/report.js'; import type { LDFlag, LDSegment } from './types.js'; export declare function flagOutputPath(key: string): string; export declare function segmentOutputPath(key: string): string; /** * Translate one LaunchDarkly flag into a Quonfig feature-flag file. * * Structure: * - `variations[]` → typed `variants[]` * - per-environment state → `environments[]` (each collapsed via the verb lib) * - `default.rules` → a baseline ALWAYS_TRUE rule serving variation 0; any * environment LaunchDarkly did not define falls back to this. * * Gap dispositions (plan §5.4) are recorded on `report` — nothing silent. */ export declare function translateFlag(flag: LDFlag, report: ConversionReport): Record; /** * Translate one LaunchDarkly segment into a Quonfig segment file. * * Quonfig segments are boolean ("is the context in the segment?") and have no * per-environment state, so everything collapses into `default.rules`, * first-match-wins, matching LaunchDarkly's evaluation precedence: * excluded → included → rules → (not in segment). * * Big/synced segments (`unbounded: true`) cannot have their membership * exported via the REST API — the shell + rules are emitted and the loss is * reported (plan §5.4). */ export declare function translateSegment(segment: LDSegment, report: ConversionReport): Record;