import { MFXGLEffect } from "./Effect";
import type { Uniform } from "./shaders";
export type Vec3 = [number, number, number];
export type Origin = Vec3;
export declare const visual: {
    adjustment: ({ saturation, brightness, contrast, }: {
        saturation?: Uniform<number>;
        brightness?: Uniform<number>;
        contrast?: Uniform<number>;
    }) => MFXGLEffect[];
    mask: (video: ReadableStream<VideoFrame>) => MFXGLEffect[];
    add: (video: ReadableStream<VideoFrame> | ((_: VideoFrame) => VideoFrame), { offset, normal, additive, multiply, screen, alpha, }?: {
        offset?: Uniform<number[]>;
        normal?: Uniform<number>;
        additive?: Uniform<number>;
        multiply?: Uniform<number>;
        screen?: Uniform<number>;
        alpha?: Uniform<number>;
    }) => MFXGLEffect[];
    scale: ({ values, origin, }: {
        values: Uniform<Vec3>;
        origin?: Uniform<Origin>;
    }) => MFXGLEffect[];
    crop: ({ values, origin, }: {
        values: Uniform<Vec3>;
        origin?: Uniform<Origin>;
    }) => MFXGLEffect[];
    translate: ({ values, }: {
        values: Uniform<Vec3>;
    }) => MFXGLEffect[];
    rotate: ({ angle, values, origin, }: {
        angle: Uniform<number>;
        values: Uniform<Vec3>;
        origin?: Uniform<Origin>;
    }) => MFXGLEffect[];
    zoom: ({ factor, x, y, }: {
        factor?: Uniform<number>;
        x?: Uniform<number>;
        y?: Uniform<number>;
    }, { isDirty, }?: {
        isDirty?: boolean;
    }) => MFXGLEffect[];
    blur: ({ passes, quality, dirty, }: {
        dirty?: boolean;
        passes?: number;
        quality?: Uniform<number>;
    }) => MFXGLEffect[];
    edge: ({ passes }?: {
        passes?: number;
    }) => MFXGLEffect[];
    edge1: ({ passes }?: {
        passes?: number;
    }) => MFXGLEffect[];
    edge2: ({ passes }?: {
        passes?: number;
    }) => MFXGLEffect[];
    sharpen: ({ passes }?: {
        passes?: number;
    }) => MFXGLEffect[];
    boxBlur: ({ passes }?: {
        passes?: number;
    }) => MFXGLEffect[];
    gaussianBlur: ({ passes }?: {
        passes?: number;
    }) => MFXGLEffect[];
    emboss: ({ passes }?: {
        passes?: number;
    }) => MFXGLEffect[];
    convolution3x3: ({ passes, kernel, }: {
        passes?: number;
        kernel: Uniform<number[]>;
    }) => MFXGLEffect[];
};
