import { Insertable, Kysely } from 'kysely';
import { DB } from "../schema";
import { VideoStreamSegmentTable, VideoStreamSessionTable, VideoStreamVariantTable } from "../schema/tables/video-stream.table";
export declare class VideoStreamRepository {
    private db;
    constructor(db: Kysely<DB>);
    createSession(session: Insertable<VideoStreamSessionTable>): Promise<{
        id: string;
    }>;
    createVariant(variant: Insertable<VideoStreamVariantTable>): Promise<{
        id: string;
    }>;
    createSegment(segment: Insertable<VideoStreamSegmentTable>): Promise<void>;
    getSession(id: string): Promise<{
        id: string;
        createdAt: Date;
        assetId: string;
        expiresAt: Date;
    } | undefined>;
    getVariant(id: string): Promise<{
        id: string;
        createdAt: Date;
        bitrate: number;
        sessionId: string;
        codec: import("../enum").VideoSegmentCodec;
        resolution: number;
    } | undefined>;
    getSegment(variantId: string, index: number): Promise<{
        index: number;
        variantId: string;
        durationUs: number;
    } | undefined>;
    getExpiredSessions(): Promise<{
        ownerId: string;
        id: string;
    }[]>;
    extendSession(id: string, expiresAt: Date): Promise<void>;
    deleteSession(id: string): Promise<void>;
    getForMainPlaylist(id: string): Promise<{
        videoStream: import("../types").VideoStreamInfo & {
            timeBase: number;
        };
        packets: import("../types").VideoPacketInfo;
    } | undefined>;
    getForMediaPlaylist(id: string, sessionId: string): Promise<{
        videoStream: import("../types").VideoStreamInfo & {
            timeBase: number;
        };
        packets: import("../types").VideoPacketInfo;
    } | undefined>;
    getForTranscoding(id: string): Promise<{
        originalPath: string;
        audioStream: {
            index: number;
            codecName: string | null;
            profile: import("../enum").AacProfile | null;
            bitrate: number;
        } | null;
        videoStream: import("../types").VideoStreamInfo & {
            timeBase: number;
        };
        format: import("../types").VideoFormat;
        packets: import("../types").VideoPacketInfo;
    } | undefined>;
}
