/// <reference types="dom-webcodecs" />
import { MFXTransformStream } from "./stream";
import { ExtendedVideoFrame } from "./frame";
import { MP4ContainerEncoder } from "./container/mp4/MP4ContainerEncoder";
import { WebMContainerEncoder } from "./container/webM/WebMContainerEncoder";
import { GIFContainerEncoder } from "./container/gif/GIFContainerEncoder";
import type { MFXEncodedChunk } from "./types";
import type { ContainerEncoderConfig } from "./container/encoderConfig";
export { MP4ContainerEncoder, WebMContainerEncoder, GIFContainerEncoder };
/**
 * @group Encode
 */
export interface MFXVideoEncoderConfig extends VideoEncoderConfig {
    /**
     * Encodes a frame as keyframe every nth second (in seconds)
     * Set to `Infinity` to disable periodic keyframes
     * @default 30 */
    keyframeEveryNthSecond?: number;
}
/**
 * @group Encode
 */
export declare const encode: ({ mimeType, video, audio, ...config }: {
    mimeType: string;
    video?: Omit<MFXVideoEncoderConfig, "codec"> & {
        stream: MFXTransformStream<any, VideoFrame> | ReadableStream<VideoFrame>;
        codec?: string;
    };
    audio?: Omit<AudioEncoderConfig, "codec"> & {
        stream: MFXTransformStream<any, AudioData> | ReadableStream<AudioData>;
        codec?: string;
    };
} & Omit<ContainerEncoderConfig, "video" | "audio">) => any;
/**
 * @group Encode
 */
export declare class MFXVideoEncoder extends MFXTransformStream<ExtendedVideoFrame, MFXEncodedChunk> {
    get identifier(): string;
    constructor(config: MFXVideoEncoderConfig);
}
/**
 * @group Encode
 */
export declare class MFXAudioEncoder extends MFXTransformStream<AudioData, MFXEncodedChunk> {
    get identifier(): string;
    constructor(config: AudioEncoderConfig);
}
