import type { StereoLayout } from "./StereoCameraRig";
export type StereoEffectMode = "side-by-side" | "anaglyph" | "parallax-barrier";
export interface StereoEffectPlanOptions {
    readonly mode: StereoEffectMode;
    readonly width: number;
    readonly height: number;
    readonly eyeSeparation: number;
    readonly convergenceDistance: number;
    readonly parallaxStrength?: number;
    readonly parallaxBarrierAxis?: "x" | "y";
    readonly stripPitchPx?: number;
    readonly layout?: StereoLayout;
}
export interface StereoEffectPlan {
    readonly mode: StereoEffectMode;
    readonly layout: StereoLayout;
    readonly width: number;
    readonly height: number;
    readonly eyeCount: 2;
    readonly eyeSeparation: number;
    readonly convergenceDistance: number;
    readonly parallaxStrength: number;
    readonly parallaxSignal: number;
    readonly composition: "dual-canvas" | "channel-composite" | "interleaved-mask";
    readonly anaglyph?: AnaglyphCompositePlan;
    readonly parallaxBarrier?: ParallaxBarrierInterleavePlan;
}
export interface AnaglyphCompositePlan {
    readonly leftChannel: "red";
    readonly rightChannels: readonly ["green", "blue"];
    readonly leftCssFilter: string;
    readonly rightCssFilter: string;
    readonly blendMode: "screen";
}
export interface AnaglyphPixelCompositeOptions {
    readonly width: number;
    readonly height: number;
    readonly leftPixels: Uint8Array | Uint8ClampedArray;
    readonly rightPixels: Uint8Array | Uint8ClampedArray;
    readonly flipY?: boolean;
}
export interface AnaglyphPixelComposite {
    readonly width: number;
    readonly height: number;
    readonly pixels: Uint8ClampedArray;
    readonly composition: "renderer-owned-anaglyph-pixels";
    readonly leftChannel: "red";
    readonly rightChannels: readonly ["green", "blue"];
}
export interface ParallaxBarrierInterleavePlan {
    readonly axis: "x" | "y";
    readonly stripPitchPx: number;
    readonly dutyCycle: number;
    readonly leftMaskImage: string;
    readonly rightMaskImage: string;
    readonly overlayBackground: string;
    readonly rightOpacity: number;
}
export interface ParallaxBarrierPixelCompositeOptions {
    readonly width: number;
    readonly height: number;
    readonly leftPixels: Uint8Array | Uint8ClampedArray;
    readonly rightPixels: Uint8Array | Uint8ClampedArray;
    readonly axis?: "x" | "y";
    readonly stripPitchPx?: number;
    readonly dutyCycle?: number;
    readonly flipY?: boolean;
}
export interface ParallaxBarrierPixelComposite {
    readonly width: number;
    readonly height: number;
    readonly pixels: Uint8ClampedArray;
    readonly axis: "x" | "y";
    readonly stripPitchPx: number;
    readonly dutyCycle: number;
    readonly leftPixelCount: number;
    readonly rightPixelCount: number;
    readonly composition: "renderer-owned-interleaved-pixels";
}
export declare function createStereoEffectPlan(options: StereoEffectPlanOptions): StereoEffectPlan;
export declare function createAnaglyphCompositePlan(): AnaglyphCompositePlan;
export declare function createAnaglyphPixelComposite(options: AnaglyphPixelCompositeOptions): AnaglyphPixelComposite;
export declare function createParallaxBarrierInterleavePlan(options?: {
    readonly axis?: "x" | "y";
    readonly stripPitchPx?: number;
    readonly dutyCycle?: number;
    readonly rightOpacity?: number;
}): ParallaxBarrierInterleavePlan;
export declare function createParallaxBarrierPixelComposite(options: ParallaxBarrierPixelCompositeOptions): ParallaxBarrierPixelComposite;
//# sourceMappingURL=StereoEffects.d.ts.map