/// <reference types="emscripten" />
import { NumberWithUnit, Color, NumberWithUnitJSON, ColorJSON, SizeWithUnitAndAspect, SizeWithUnitAndAspectJSON } from './Common.js';
import { Serializable } from './private/Serializable.js';

type ViewfinderTypeNone = "none";
type ViewfinderTypeLaserLine = "laserline";
type ViewfinderTypeRectangular = "rectangular";
type ViewfinderTypeAimer = "aimer";
type ViewfinderTypeTargetAimer = "targetAimer";
type ViewfinderType = ViewfinderTypeAimer | ViewfinderTypeLaserLine | ViewfinderTypeNone | ViewfinderTypeRectangular | ViewfinderTypeTargetAimer;
interface ViewfinderJSON {
    type: ViewfinderType;
}
declare enum RectangularViewfinderStyle {
    Rounded = "rounded",
    Square = "square"
}
declare enum RectangularViewfinderLineStyle {
    Light = "light",
    Bold = "bold"
}
/**
 * @deprecated The LaserlineViewfinderStyle is deprecated and will be removed in the future.
 */
declare enum LaserlineViewfinderStyle {
    Animated = "animated"
}
interface PrivateLaserlineViewfinderDefault {
    style: LaserlineViewfinderStyle;
    width: NumberWithUnit;
    enabledColor: Color;
    disabledColor: Color;
}
/**
 * @deprecated The LaserlineViewfinderStyleJSON is deprecated and will be removed in the future.
 */
interface LaserlineViewfinderStyleJSON extends ViewfinderJSON {
    type: ViewfinderTypeLaserLine;
    style: string;
    width: NumberWithUnitJSON;
    enabledColor: ColorJSON;
    disabledColor: ColorJSON;
}
interface PrivateRectangularViewfinderDefault {
    color: Color;
    style: RectangularViewfinderStyle;
    lineStyle: RectangularViewfinderLineStyle;
    dimming: number;
    animation: RectangularViewfinderAnimation | null;
    size: SizeWithUnitAndAspect;
}
interface RectangularViewfinderJSON extends ViewfinderJSON {
    type: ViewfinderTypeRectangular;
    color: ColorJSON;
    style: string;
    lineStyle: string;
    dimming: number;
    animation: RectangularViewfinderAnimationJSON | null;
    size: SizeWithUnitAndAspectJSON;
    disabledColor: ColorJSON;
}
interface RectangularViewfinderAnimationJSON {
    readonly looping: boolean;
}
interface AimerViewfinderJSON extends ViewfinderJSON {
    type: ViewfinderTypeAimer;
    frameColor: ColorJSON;
    dotColor: ColorJSON;
}
interface PrivateRectangularViewfinderAnimation {
    fromJSON: (json: RectangularViewfinderAnimationJSON) => RectangularViewfinderAnimation;
}
declare class RectangularViewfinderAnimation implements Serializable<RectangularViewfinderAnimationJSON> {
    private readonly _isLooping;
    constructor(isLooping: boolean);
    get isLooping(): boolean;
    private static fromJSON;
    toJSONObject(): RectangularViewfinderAnimationJSON;
}

export { type AimerViewfinderJSON, LaserlineViewfinderStyle, type LaserlineViewfinderStyleJSON, type PrivateLaserlineViewfinderDefault, type PrivateRectangularViewfinderAnimation, type PrivateRectangularViewfinderDefault, RectangularViewfinderAnimation, type RectangularViewfinderJSON, RectangularViewfinderLineStyle, RectangularViewfinderStyle, type ViewfinderJSON, type ViewfinderType, type ViewfinderTypeAimer, type ViewfinderTypeLaserLine, type ViewfinderTypeNone, type ViewfinderTypeRectangular, type ViewfinderTypeTargetAimer };
