/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { Border, Padding, RenderMode } from './field-types';
/**
 * Lists the QR Code encoding modes.
 *
 * The possible values are:
 * `"ISO_8859_1"`&mdash;Supports all characters from the [ISO/IEC 8859-1](https://en.wikipedia.org/wiki/ISO/IEC_8859-1) character set.
 * `"UTF_8"`&mdash;Supports all [Unicode](https://en.wikipedia.org/wiki/List_of_Unicode_characters) characters.
 */
export type QRCodeEncoding = 'ISO_8859_1' | 'UTF_8';
/**
 * Lists the QR Code error correction levels.
 *
 * * `"L"`&mdash;Approximately 7% of the codewords can be restored.
 * * `"M"`&mdash;Approximately 15% of the codewords can be restored.
 * * `"Q"`&mdash;Approximately 25% of the codewords can be restored.
 * * `"H"`&mdash;Approximately 30% of the codewords can be restored.
 */
export type QRCodeErrorCorrection = 'L' | 'M' | 'Q' | 'H';
/**
 * Provides the image overlay options for the QR Code.
 */
export interface QRCodeOverlay {
    /**
     * Sets the overlay height in pixels.
     */
    height?: number;
    /**
     * Sets the source image for the overlay.
     *
     * Required only when `type` is set to `'image'`.
     */
    imageUrl?: string;
    /**
     * Sets the overlay type.
     *
     * @default 'image'
     */
    type?: 'image' | 'swiss';
    /**
     * Sets the overlay width in pixels.
     */
    width?: number;
}
/**
 * Provides the QR Code options.
 */
export interface QRCodeOptions {
    /**
     * Sets the background color of the QR Code. Accepts a valid CSS color string, including hex and rgb.
     *
     * @default "white"
     */
    background?: string;
    /**
     * Sets the border of the QR Code.
     */
    border?: Border;
    /**
     * Sets the color of the QR Code. Accepts a valid CSS color string, including hex and rgb.
     *
     * @default "black"
     */
    color?: string;
    /**
     * Sets the encoding mode used to encode the value.
     *
     * > **Important** The UTF-8 encoding is not included in the specifications and is not supported by all readers.
     *
     * @default "ISO_8859_1"
     */
    encoding?: QRCodeEncoding;
    /**
     * Sets the error correction level to use.
     *
     * @default "L"
     */
    errorCorrection?: QRCodeErrorCorrection;
    /**
     * Sets an optional image overlay that is placed over the QR Code.
     *
     * > **Note** Always test if the code reads correctly with the applied overlay.
     * > Depending on the length of the value and the size of the overlay, you might need to raise the `errorCorrection` level to `"M"` or `"H"`.
     */
    overlay?: QRCodeOverlay;
    /**
     * Sets the padding of the QR Code. A numeric value sets all paddings.
     *
     * @default 0
     */
    padding?: Padding | number;
    /**
     * Sets the preferred rendering mode of the QR Code.
     *
     * @default "svg"
     */
    renderAs?: RenderMode;
    /**
     * Sets the size of a QR Code. Numeric values are treated as pixels.
     *
     * If you do not specify a size, the size is determined from the element width and height.
     * If the element has width or height of zero, a default value of 200 pixels is used.
     *
     * @default "200px"
     */
    size?: number | string;
    /**
     * Sets the value of the QR Code.
     */
    value: number | string;
}
