/**
 * LINE Messaging API
 * This document describes LINE Messaging API.
 *
 * The version of the OpenAPI document: 0.0.1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { Action } from "./action.js";
import { FlexComponent } from "./flexComponent.js";

import { FlexComponentBase } from "./models.js";

/**
 * @see <a href="https://developers.line.biz/en/reference/messaging-api/#f-image">https://developers.line.biz/en/reference/messaging-api/#f-image</a>
 */
export type FlexImage = FlexComponentBase & {
  type: "image";

  /**
   * Image URL (Max character limit: 2000) Protocol: HTTPS (TLS 1.2 or later) Image format: JPEG or PNG Maximum image size: 1024×1024 pixels Maximum file size: 10 MB (300 KB when the animated property is true)
   */
  url: string;
  /**
   * The ratio of the width or height of this component within the parent box.
   */
  flex?: number;
  /**
   * The minimum amount of space to include before this component in its parent container.
   */
  margin?: string;
  /**
   * Reference for offsetTop, offsetBottom, offsetStart, and offsetEnd. Specify one of the following values:  `relative`: Use the previous box as reference. `absolute`: Use the top left of parent element as reference. The default value is relative.
   */
  position?: FlexImage.PositionEnum;
  /**
   * Offset.
   */
  offsetTop?: string;
  /**
   * Offset.
   */
  offsetBottom?: string;
  /**
   * Offset.
   */
  offsetStart?: string;
  /**
   * Offset.
   */
  offsetEnd?: string;
  /**
   * Alignment style in horizontal direction.
   */
  align?: FlexImage.AlignEnum;
  /**
   * Alignment style in vertical direction.
   */
  gravity?: FlexImage.GravityEnum;
  /**
   * The maximum image width. This is md by default.
   * @default 'md'
   */
  size?: string;
  /**
   * Aspect ratio of the image. `{width}:{height}` format. Specify the value of `{width}` and `{height}` in the range from `1` to `100000`. However, you cannot set `{height}` to a value that is more than three times the value of `{width}`. The default value is `1:1`.
   */
  aspectRatio?: string;
  /**
   * The display style of the image if the aspect ratio of the image and that specified by the aspectRatio property do not match.
   */
  aspectMode?: FlexImage.AspectModeEnum;
  /**
   * Background color of the image. Use a hexadecimal color code.
   */
  backgroundColor?: string;
  action?: Action;
  /**
   * When this is `true`, an animated image (APNG) plays. You can specify a value of true up to 10 images in a single message. You can't send messages that exceed this limit. This is `false` by default. Animated images larger than 300 KB aren't played back.
   * @default false
   */
  animated?: boolean;
};

export namespace FlexImage {
  export type PositionEnum = "relative" | "absolute";

  export type AlignEnum = "start" | "end" | "center";

  export type GravityEnum = "top" | "bottom" | "center";

  export type AspectModeEnum = "fit" | "cover";
}
