import { z } from 'zod';
import { type InferProvider } from './capability-definition.js';
declare const RecordingModeSchema: z.ZodEnum<{
    motion: "motion";
    continuous: "continuous";
    scheduled: "scheduled";
    composite: "composite";
}>;
declare const RecordingPolicySchema: z.ZodObject<{
    deviceId: z.ZodNumber;
    mode: z.ZodEnum<{
        motion: "motion";
        continuous: "continuous";
        scheduled: "scheduled";
        composite: "composite";
    }>;
    streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
        streamId: z.ZodString;
        mode: z.ZodEnum<{
            inherit: "inherit";
            always: "always";
        }>;
    }, z.core.$strip>>>;
    enabled: z.ZodBoolean;
    preBufferSec: z.ZodNumber;
    postBufferSec: z.ZodNumber;
    scheduleRules: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
        days: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
        startTime: z.ZodString;
        endTime: z.ZodString;
        mode: z.ZodEnum<{
            motion: "motion";
            continuous: "continuous";
        }>;
    }, z.core.$strip>>>>;
}, z.core.$strip>;
declare const DataCategorySchema: z.ZodEnum<{
    "recording:main": "recording:main";
    "recording:mid": "recording:mid";
    "recording:sub": "recording:sub";
    "thumbnail:scrub": "thumbnail:scrub";
    "thumbnail:event": "thumbnail:event";
}>;
declare const RecordingStorageConfigSchema: z.ZodObject<{
    deviceId: z.ZodNumber;
    dataCategory: z.ZodEnum<{
        "recording:main": "recording:main";
        "recording:mid": "recording:mid";
        "recording:sub": "recording:sub";
        "thumbnail:scrub": "thumbnail:scrub";
        "thumbnail:event": "thumbnail:event";
    }>;
    storageName: z.ZodString;
    subDirectory: z.ZodString;
    retentionDays: z.ZodNullable<z.ZodNumber>;
    retentionGb: z.ZodNullable<z.ZodNumber>;
}, z.core.$strip>;
declare const RecordingSegmentSchema: z.ZodObject<{
    id: z.ZodString;
    deviceId: z.ZodNumber;
    streamId: z.ZodString;
    startTime: z.ZodNumber;
    endTime: z.ZodNumber;
    duration: z.ZodNumber;
    path: z.ZodString;
    storageName: z.ZodString;
    subDirectory: z.ZodString;
    sizeBytes: z.ZodNumber;
    codec: z.ZodEnum<{
        h264: "h264";
        h265: "h265";
    }>;
    hasAudio: z.ZodBoolean;
}, z.core.$strip>;
declare const RecordingThumbnailSchema: z.ZodObject<{
    deviceId: z.ZodNumber;
    timestamp: z.ZodNumber;
    path: z.ZodString;
    storageName: z.ZodString;
    subDirectory: z.ZodString;
    sizeBytes: z.ZodNumber;
    category: z.ZodEnum<{
        scrub: "scrub";
        event: "event";
    }>;
}, z.core.$strip>;
declare const AvailabilityRangeSchema: z.ZodObject<{
    startTime: z.ZodNumber;
    endTime: z.ZodNumber;
    streams: z.ZodReadonly<z.ZodArray<z.ZodString>>;
}, z.core.$strip>;
declare const StorageUsageSchema: z.ZodObject<{
    totalBytes: z.ZodNumber;
    segmentCount: z.ZodNumber;
}, z.core.$strip>;
declare const StorageEstimateSchema: z.ZodObject<{
    perStream: z.ZodRecord<z.ZodString, z.ZodObject<{
        bitrateKbps: z.ZodNumber;
        retentionDays: z.ZodNullable<z.ZodNumber>;
        retentionGb: z.ZodNullable<z.ZodNumber>;
        estimatedGb: z.ZodNumber;
        estimatedDaysAtCapacity: z.ZodNullable<z.ZodNumber>;
    }, z.core.$strip>>;
    thumbnails: z.ZodObject<{
        estimatedGb: z.ZodNumber;
    }, z.core.$strip>;
    totalEstimatedGb: z.ZodNumber;
    motionEstimate: z.ZodOptional<z.ZodObject<{
        avgEventsPerDay: z.ZodNumber;
        avgDurationSec: z.ZodNumber;
        dutyCyclePercent: z.ZodNumber;
    }, z.core.$strip>>;
}, z.core.$strip>;
declare const MotionStatsSchema: z.ZodObject<{
    totalEvents: z.ZodNumber;
    avgDurationSec: z.ZodNumber;
    avgEventsPerDay: z.ZodNumber;
    dutyCyclePercent: z.ZodNumber;
}, z.core.$strip>;
/**
 * Recording engine — manages per-device recording lifecycle, policies,
 * playlists, segments, thumbnails, and storage estimation.
 *
 * Implemented by the `recording` sub-addon inside `addon-analytics-suite`.
 * Session 5 Sprint D expanded the cap from 1 method (`getStatus`) to the
 * full 17-method contract, replacing the broken hand-written
 * `recording.router.ts` that invoked non-existent methods on the addon.
 *
 * The provider implementation is a facade wrapping RecordingCoordinator,
 * RecordingDb, PlaylistGenerator, StorageEstimator, and RetentionManager.
 */
export declare const recordingEngineCapability: {
    readonly name: "recording-engine";
    readonly scope: "system";
    readonly mode: "singleton";
    readonly methods: {
        readonly getStatus: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
            activeRecordings: z.ZodNumber;
            totalSegments: z.ZodNumber;
            totalSizeMB: z.ZodNumber;
        }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly enable: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            policy: z.ZodObject<{
                mode: z.ZodEnum<{
                    motion: "motion";
                    continuous: "continuous";
                    scheduled: "scheduled";
                    composite: "composite";
                }>;
                enabled: z.ZodBoolean;
                preBufferSec: z.ZodNumber;
                streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
                    streamId: z.ZodString;
                    mode: z.ZodEnum<{
                        inherit: "inherit";
                        always: "always";
                    }>;
                }, z.core.$strip>>>;
                postBufferSec: z.ZodNumber;
                scheduleRules: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
                    days: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
                    startTime: z.ZodString;
                    endTime: z.ZodString;
                    mode: z.ZodEnum<{
                        motion: "motion";
                        continuous: "continuous";
                    }>;
                }, z.core.$strip>>>>;
            }, z.core.$strip>;
            storageOverrides: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
                dataCategory: z.ZodEnum<{
                    "recording:main": "recording:main";
                    "recording:mid": "recording:mid";
                    "recording:sub": "recording:sub";
                    "thumbnail:scrub": "thumbnail:scrub";
                    "thumbnail:event": "thumbnail:event";
                }>;
                storageName: z.ZodString;
                subDirectory: z.ZodString;
                retentionDays: z.ZodNullable<z.ZodNumber>;
                retentionGb: z.ZodNullable<z.ZodNumber>;
            }, z.core.$strip>>>>;
            ffmpegOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        readonly disable: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        readonly getConfig: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
        }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
            deviceId: z.ZodNumber;
            mode: z.ZodEnum<{
                motion: "motion";
                continuous: "continuous";
                scheduled: "scheduled";
                composite: "composite";
            }>;
            streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
                streamId: z.ZodString;
                mode: z.ZodEnum<{
                    inherit: "inherit";
                    always: "always";
                }>;
            }, z.core.$strip>>>;
            enabled: z.ZodBoolean;
            preBufferSec: z.ZodNumber;
            postBufferSec: z.ZodNumber;
            scheduleRules: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
                days: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
                startTime: z.ZodString;
                endTime: z.ZodString;
                mode: z.ZodEnum<{
                    motion: "motion";
                    continuous: "continuous";
                }>;
            }, z.core.$strip>>>>;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly updateConfig: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            policy: z.ZodObject<{
                mode: z.ZodEnum<{
                    motion: "motion";
                    continuous: "continuous";
                    scheduled: "scheduled";
                    composite: "composite";
                }>;
                enabled: z.ZodBoolean;
                preBufferSec: z.ZodNumber;
                streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
                    streamId: z.ZodString;
                    mode: z.ZodEnum<{
                        inherit: "inherit";
                        always: "always";
                    }>;
                }, z.core.$strip>>>;
                postBufferSec: z.ZodNumber;
                scheduleRules: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
                    days: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
                    startTime: z.ZodString;
                    endTime: z.ZodString;
                    mode: z.ZodEnum<{
                        motion: "motion";
                        continuous: "continuous";
                    }>;
                }, z.core.$strip>>>>;
            }, z.core.$strip>;
            ffmpegOverrides: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        readonly getPlaylist: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            streamId: z.ZodString;
            startTime: z.ZodNumber;
            endTime: z.ZodNumber;
            live: z.ZodOptional<z.ZodBoolean>;
        }, z.core.$strip>, z.ZodString, import("./capability-definition.js").CapabilityMethodKind>;
        readonly getThumbnail: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            timestamp: z.ZodNumber;
            category: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
            deviceId: z.ZodNumber;
            timestamp: z.ZodNumber;
            path: z.ZodString;
            storageName: z.ZodString;
            subDirectory: z.ZodString;
            sizeBytes: z.ZodNumber;
            category: z.ZodEnum<{
                scrub: "scrub";
                event: "event";
            }>;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly getSegments: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            streamId: z.ZodString;
            startTime: z.ZodNumber;
            endTime: z.ZodNumber;
        }, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            deviceId: z.ZodNumber;
            streamId: z.ZodString;
            startTime: z.ZodNumber;
            endTime: z.ZodNumber;
            duration: z.ZodNumber;
            path: z.ZodString;
            storageName: z.ZodString;
            subDirectory: z.ZodString;
            sizeBytes: z.ZodNumber;
            codec: z.ZodEnum<{
                h264: "h264";
                h265: "h265";
            }>;
            hasAudio: z.ZodBoolean;
        }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly getAvailability: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            startTime: z.ZodNumber;
            endTime: z.ZodNumber;
        }, z.core.$strip>, z.ZodReadonly<z.ZodArray<z.ZodObject<{
            startTime: z.ZodNumber;
            endTime: z.ZodNumber;
            streams: z.ZodReadonly<z.ZodArray<z.ZodString>>;
        }, z.core.$strip>>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly estimateStorage: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            motionInput: z.ZodOptional<z.ZodObject<{
                avgEventsPerDay: z.ZodNumber;
                avgDurationSec: z.ZodNumber;
            }, z.core.$strip>>;
        }, z.core.$strip>, z.ZodObject<{
            perStream: z.ZodRecord<z.ZodString, z.ZodObject<{
                bitrateKbps: z.ZodNumber;
                retentionDays: z.ZodNullable<z.ZodNumber>;
                retentionGb: z.ZodNullable<z.ZodNumber>;
                estimatedGb: z.ZodNumber;
                estimatedDaysAtCapacity: z.ZodNullable<z.ZodNumber>;
            }, z.core.$strip>>;
            thumbnails: z.ZodObject<{
                estimatedGb: z.ZodNumber;
            }, z.core.$strip>;
            totalEstimatedGb: z.ZodNumber;
            motionEstimate: z.ZodOptional<z.ZodObject<{
                avgEventsPerDay: z.ZodNumber;
                avgDurationSec: z.ZodNumber;
                dutyCyclePercent: z.ZodNumber;
            }, z.core.$strip>>;
        }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly estimateGlobalStorage: import("./capability-definition.js").CapabilityMethodSchema<z.ZodVoid, z.ZodObject<{
            perStream: z.ZodRecord<z.ZodString, z.ZodObject<{
                bitrateKbps: z.ZodNumber;
                retentionDays: z.ZodNullable<z.ZodNumber>;
                retentionGb: z.ZodNullable<z.ZodNumber>;
                estimatedGb: z.ZodNumber;
                estimatedDaysAtCapacity: z.ZodNullable<z.ZodNumber>;
            }, z.core.$strip>>;
            thumbnails: z.ZodObject<{
                estimatedGb: z.ZodNumber;
            }, z.core.$strip>;
            totalEstimatedGb: z.ZodNumber;
            motionEstimate: z.ZodOptional<z.ZodObject<{
                avgEventsPerDay: z.ZodNumber;
                avgDurationSec: z.ZodNumber;
                dutyCyclePercent: z.ZodNumber;
            }, z.core.$strip>>;
        }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly getStorageUsage: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            streamId: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            totalBytes: z.ZodNumber;
            segmentCount: z.ZodNumber;
        }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly setPolicy: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            policy: z.ZodObject<{
                mode: z.ZodEnum<{
                    motion: "motion";
                    continuous: "continuous";
                    scheduled: "scheduled";
                    composite: "composite";
                }>;
                enabled: z.ZodBoolean;
                preBufferSec: z.ZodNumber;
                streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
                    streamId: z.ZodString;
                    mode: z.ZodEnum<{
                        inherit: "inherit";
                        always: "always";
                    }>;
                }, z.core.$strip>>>;
                postBufferSec: z.ZodNumber;
                scheduleRules: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
                    days: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
                    startTime: z.ZodString;
                    endTime: z.ZodString;
                    mode: z.ZodEnum<{
                        motion: "motion";
                        continuous: "continuous";
                    }>;
                }, z.core.$strip>>>>;
            }, z.core.$strip>;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        readonly getPolicy: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
        }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
            deviceId: z.ZodNumber;
            mode: z.ZodEnum<{
                motion: "motion";
                continuous: "continuous";
                scheduled: "scheduled";
                composite: "composite";
            }>;
            streams: z.ZodReadonly<z.ZodArray<z.ZodObject<{
                streamId: z.ZodString;
                mode: z.ZodEnum<{
                    inherit: "inherit";
                    always: "always";
                }>;
            }, z.core.$strip>>>;
            enabled: z.ZodBoolean;
            preBufferSec: z.ZodNumber;
            postBufferSec: z.ZodNumber;
            scheduleRules: z.ZodOptional<z.ZodReadonly<z.ZodArray<z.ZodObject<{
                days: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
                startTime: z.ZodString;
                endTime: z.ZodString;
                mode: z.ZodEnum<{
                    motion: "motion";
                    continuous: "continuous";
                }>;
            }, z.core.$strip>>>>;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly getPolicyStatus: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
        }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
            deviceId: z.ZodNumber;
            enabled: z.ZodBoolean;
            mode: z.ZodEnum<{
                motion: "motion";
                continuous: "continuous";
                scheduled: "scheduled";
                composite: "composite";
            }>;
            activeStreams: z.ZodNumber;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly getRetentionConfig: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            dataCategory: z.ZodEnum<{
                "recording:main": "recording:main";
                "recording:mid": "recording:mid";
                "recording:sub": "recording:sub";
                "thumbnail:scrub": "thumbnail:scrub";
                "thumbnail:event": "thumbnail:event";
            }>;
        }, z.core.$strip>, z.ZodNullable<z.ZodObject<{
            deviceId: z.ZodNumber;
            dataCategory: z.ZodEnum<{
                "recording:main": "recording:main";
                "recording:mid": "recording:mid";
                "recording:sub": "recording:sub";
                "thumbnail:scrub": "thumbnail:scrub";
                "thumbnail:event": "thumbnail:event";
            }>;
            storageName: z.ZodString;
            subDirectory: z.ZodString;
            retentionDays: z.ZodNullable<z.ZodNumber>;
            retentionGb: z.ZodNullable<z.ZodNumber>;
        }, z.core.$strip>>, import("./capability-definition.js").CapabilityMethodKind>;
        readonly updateRetentionConfig: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            dataCategory: z.ZodEnum<{
                "recording:main": "recording:main";
                "recording:mid": "recording:mid";
                "recording:sub": "recording:sub";
                "thumbnail:scrub": "thumbnail:scrub";
                "thumbnail:event": "thumbnail:event";
            }>;
            storageName: z.ZodString;
            subDirectory: z.ZodString;
            retentionDays: z.ZodNullable<z.ZodNumber>;
            retentionGb: z.ZodNullable<z.ZodNumber>;
        }, z.core.$strip>, z.ZodVoid, "mutation">;
        readonly getMotionStats: import("./capability-definition.js").CapabilityMethodSchema<z.ZodObject<{
            deviceId: z.ZodNumber;
            startTime: z.ZodNumber;
            endTime: z.ZodNumber;
        }, z.core.$strip>, z.ZodObject<{
            totalEvents: z.ZodNumber;
            avgDurationSec: z.ZodNumber;
            avgEventsPerDay: z.ZodNumber;
            dutyCyclePercent: z.ZodNumber;
        }, z.core.$strip>, import("./capability-definition.js").CapabilityMethodKind>;
    };
};
export type IRecordingEngineProvider = InferProvider<typeof recordingEngineCapability>;
export { RecordingPolicySchema, RecordingSegmentSchema, RecordingThumbnailSchema, RecordingStorageConfigSchema, AvailabilityRangeSchema, StorageUsageSchema, StorageEstimateSchema, MotionStatsSchema, RecordingModeSchema, DataCategorySchema, };
//# sourceMappingURL=recording-engine.cap.d.ts.map