/*
 * Copyright (c) 2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License"),
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * @file
 * @kit ArkUI
 */

import type image from './@ohos.multimedia.image';
import { BusinessError, Callback } from './@ohos.base';
import type common2D from './@ohos.graphics.common2D';
import type componentUtils from './@ohos.arkui.componentUtils';
import { UIContext } from './@ohos.arkui.UIContext';
import type Want from './@ohos.app.ability.Want';
import { Resource } from './global/resource';
import { ResourceStr } from './@ohos.arkui.component';

/**
 * Module for AI-generated images using UI Component.
 *
 * @namespace imageGeneration
 * @syscap SystemCapability.ArkUI.ArkUI.Full
 * @systemapi
 * @stagemodelonly
 * @since 23 static
 */
declare namespace imageGeneration {

  /**
   * Provides stream output result type definition.
   *
   * @enum { int } Constants
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  enum PartialResultType {
    /**
     * Indicates the action for partial result.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    PARTIAL = 0,
    /**
     * Indicates the action for complete result.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    COMPLETED = 1,
    /**
     * Indicates the action for partial fail result.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    PARTIAL_FAIL = 2,
  }

  /**
   * Style types supported by AI image generation models, like Graffiti, Watercolor.
   *
   * @interface ImageStyle
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface ImageStyle {
    /**
     * The style icon information which will display in style list.
     *
     * @type { image.PixelMap | string | Resource }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    icon: image.PixelMap | string | Resource;

    /**
     * The style name information which will display in style list.
     *
     * @type { ResourceStr }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    name: ResourceStr;
  }

  /**
   * Configuration parameter options for AI-generated image tasks.
   *
   * @interface GenerateImageTaskParams
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GenerateImageTaskParams {
    /**
     * image information used for AI-generated image tasks.
     *
     * @type { Array<ImageItem> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    images: Array<ImageItem>;
    /**
     * Location reference map for multi-image generated tasks.
     *
     * @type { ?image.PixelMap }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    positionImage?: image.PixelMap;

    /**
     * Path information for lasso selection in AI-generated image tasks.
     *
     * @type { ?Array<common2D.Point> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    selectPath?: Array<common2D.Point>;

    /**
     * Description information for AI-generated image tasks.
     *
     * @type { string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    prompt: string;

    /**
     * the style of AI-generated image in one task.
     *
     * @type { ?string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    style?: string;

    /**
     * the size information of AI-generated image in one task.
     *
     * @type { image.Size }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    imageSize: image.Size;
    /**
     * the number of AI-generated image in one task.
     *
     * @type { ?int }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    imageCount?: int;
  }

  /**
   * Configuration stream result for AI-generated image tasks.
   *
   * @interface GenerateImageTaskPartialResult
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GenerateImageTaskPartialResult {
    /**
     * The type information used for AI-generated image task.
     *
     * @type { PartialResultType }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    type: PartialResultType;

    /**
     * Sequence number of the image corresponding to AI-generated image task, available in partial and partial error result.
     *
     * @type { ?int }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    imageIndex?: int;

    /**
     * image data of the image corresponding to AI-generated image task, available in partial result.
     *
     * @type { ?string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    imageData?: string;

    /**
     * Total number of the image corresponding to AI-generated image task, available in completed result.
     *
     * @type { ?int }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    totalCount?: int;

    /**
     * Information of the partial error corresponding to AI-generated image task, available in partial error result.
     *
     * @type { ?BusinessError }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    partialFail?: BusinessError;
  }

  /**
   * Configuration result for AI-generated image tasks.
   *
   * @interface GenerateImageTaskResult
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GenerateImageTaskResult {
    /**
     * The image result corresponding to AI-generated image task.
     *
     * @type { Array<string> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    imageData: Array<string>;
  }

  /**
   * AI Image Model Abstract Interface.
   *
   * @interface ImageGenerationModel
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface ImageGenerationModel {
    /**
     * Get the types of image styles supported by the AI model.
     *
     * @returns { Array<ImageStyle> } image style information.
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    getModelSupportStyles(): Array<ImageStyle>;

    /**
     * Request AI image generation task to get the generated image.
     *
     * @param { int } sessionId - The session id for requesting an AI image generation task.
     *     <br>Value: range:[0, +∞]
     * @param { GenerateImageTaskOptions } params - Parameters for requesting an AI image generation task.
     * @param { Callback<GenerateImageTaskPartialResult> } callback - the callback used to return the GenerateImageTaskPartialResult.
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    requestImageGeneration(sessionId: int, params: GenerateImageTaskParams,
      callback: Callback<GenerateImageTaskPartialResult>): void;

    /**
     * Cancel AI image generation task.
     *
     * @param { int } sessionId - The session id for cancel an AI image generation task.
     *     <br>Value: range: [0, +∞]
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    cancelImageGeneration(sessionId: int): void;

    /**
     * User use complaint menu to complain the result of an AI-generated image task.
     *
     * @param { int } sessionId - The session id of AI image generation task.
     *     <br>Value: range: [0, +∞]
     * @param { GenerateImageTaskParams } request - The origin request for AI-generated image task.
     * @param { GenerateImageTaskResult } result - The result for AI-generated image task.
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    onComplain(sessionId: int, request: GenerateImageTaskParams, result: GenerateImageTaskResult): void;
  }

  /**
   * Configuration stream result for AI-generated text tasks.
   *
   * @interface GenerateTextTaskPartialResult
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GenerateTextTaskPartialResult {
    /**
     * The type information used for AI-generated text task.
     *
     * @type { PartialResultType }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    type: PartialResultType;

    /**
     * Think information in AI-generated text task, available in partial result.
     *
     * @type { ?string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    reasoningContent?: string;

    /**
     * Final data in AI-generated text task, available in partial result.
     *
     * @type { ?string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    content?: string;

    /**
     * Information of the partial error corresponding to AI-generated text task, available in partial error result.
     *
     * @type { ?BusinessError }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    partialFail?: BusinessError;
  }

  /**
   * Configuration result for AI-generated text tasks.
   *
   * @interface GenerateTextTaskResult
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GenerateTextTaskResult {
    /**
     * Think information in AI-generated text task.
     *
     * @type { string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    reasoningContent: string;

    /**
     * Final data in AI-generated text task.
     *
     * @type { string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    content: string;
  }

  /**
   * AI Text Model Abstract Interface.
   *
   * @interface TextGenerationModel
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface TextGenerationModel {
    /**
     * Request AI text generation task to get the generated text.
     *
     * @param { int } sessionId - The session id for requesting an AI text generation task.
     *     <br>Value: range: [0, +∞]
     * @param { string } value - Parameters for requesting an AI text generation task.
     * @param { Callback<GenerateTextTaskPartialResult> } callback - the callback used to return the GenerateTextTaskPartialResult.
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    requestTextGeneration(sessionId: int, value: string,
      callback: Callback<GenerateTextTaskPartialResult>): void;
    /**
     * Cancel AI text generation task.
     *
     * @param { int } sessionId - The session id for cancel an AI text generation task.
     *     <br>Value: range: [0, +∞]
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    cancelTextGeneration(sessionId: int): void;
    /**
     * User use complaint menu to complain the result of an AI-generated text task.
     *
     * @param { int } sessionId - The session id of AI text generation task.
     *     <br>Value: range: [0, +∞]
     * @param { string } request - The origin request for AI-generated text task.
     * @param { GenerateTextTaskResult } result - The result for AI-generated text task.
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    onComplain(sessionId: int, request: string, result: GenerateTextTaskResult): void;
  }

  /**
   * Image information for AI-generated images.
   *
   * @interface ImageItem
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface ImageItem {
    /**
     * Image decoding information for preview in the page of ImageGeneratorDialog.
     *
     * <p>**NOTE**:
     * Displayed within the canvas in the ImageGeneratorDialog; if not provided, the image will be decoded from the url.
     * </p>
     *
     * @type { ?image.PixelMap }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    image?: image.PixelMap;

    /**
     * Original image path information for image generation;
     *
     * <p>**NOTE**:
     * for high-resolution scenarios, it is best to provide the original image path; if not provided, the image.PixelMap
     * will be used for image generation.
     * </p>
     *
     * @type { ?ResourceStr }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    url?: ResourceStr;

    /**
     * The size and position of the container used to display images in the preview canvas.
     *
     * <p>**NOTE**:
     * it is recommended to be provided in multi-image fusion scenarios to achieve better results.
     * </p>
     *
     * @type { ?common2D.Rect }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    rect?: common2D.Rect;

    /**
     * The rotation of the container used to display images in the preview canvas.
     *
     * <p>**NOTE**:
     * it is recommended to be provided in multi-image fusion scenarios to achieve better results.
     * </p>
     *
     * @type { ?componentUtils.Rotation2D }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    rotation?: componentUtils.Rotation2D;

    /**
     * In scenarios with multiple images, information about image rendering hierarchy.
     *
     * <p>**NOTE**:
     * it is recommended to be provided in multi-image fusion scenarios to achieve better results.
     * </p>
     *
     * @type { ?int }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    zIndex?: int;

    /**
     * whether the image type is a hand-drawn line art.
     *
     * <p>**NOTE**:
     * it is recommended to be provided in Hand-drawn line art scenarios to achieve better results.
     * </p>
     *
     * @type { ?boolean }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    isHandwrite?: boolean;
  }

  /**
   * Statistics Related to AI Image Generation Tasks.
   *
   * @interface TaskStatistic
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface TaskStatistic {
    /**
     * The style used in AI image generation tasks.
     *
     * @type { string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    style: string;

    /**
     * Whether the image AI generation task is a sticker generation task.
     *
     * @type { boolean }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    isSticker: boolean;

    /**
     * Number of images used for AI image generation tasks.
     *
     * @type { int }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    imageCount: int;

    /**
     * Time taken for AI image generation task in seconds.
     *
     * @type { double }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    generationTime: double;
  }

  /**
   * The result of AI-generated images
   *
   * @interface GeneratorResult
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GeneratorResult {
    /**
     * Decoded data of AI-generated images.
     *
     * @type { ?image.PixelMap }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    image?: image.PixelMap;
    /**
     * The path information of AI-generated images.
     *
     * @type { ?string }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    url?: string;

    /**
     * Statistics of AI-generated image tasks.
     *
     * @type { TaskStatistic }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    statistic: TaskStatistic;
  }

  /**
   * Custom icon object in the generation result page of ImageGeneratorDialog.
   *
   * @interface GeneratorResultPageIcon
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GeneratorResultPageIcon {
    /**
     * Icon image information.
     *
     * @type { image.PixelMap | string | Resource }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    image: image.PixelMap | string | Resource;
    /**
     * Icon text description.
     *
     * @type { ResourceStr }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    text: ResourceStr;
    /**
     * Icon click event callback.
     *
     * @type { Callback<GeneratorResult> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    callback: Callback<GeneratorResult>;
  }
  /**
   * The result of import operation for custom import icon.
   *
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  interface CustomImportResult {
    /**
     * Array of image items for import operation.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    images?: Array<ImageItem>;
    /**
     * Text content for import operation.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    content?: ResourceStr;
  }

  /**
   * Async callback type for custom import operation.
   *
   * @returns { Promise<CustomImportResult> } Import images and text
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  type CustomImportCallback = () => Promise<CustomImportResult>;

  /**
   * Customize the import icon, which is used to add images and text from the application side.
   *
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  interface CustomImportIcon {
    /**
     * Icon image information.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    image: image.PixelMap | ResourceStr;
    /**
     * Icon text description.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    text: ResourceStr;
    /**
     * Async callback function for import operation.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    callback: CustomImportCallback;
  }

  /**
   * Parameters used to open the ImageGeneratorDialog.
   *
   * @interface GeneratorDialogOptions
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  interface GeneratorDialogOptions {
    /**
     * Initial image parameters used for AI-generated image tasks.
     *
     * @type { ?Array<ImageItem> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    images?: Array<ImageItem>;
    /**
     * Initial text information used for AI-generated image tasks.
     *
     * @type { ?ResourceStr }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    content?: ResourceStr;
    /**
     * Custom icons used on the AI generated image results page.
     *
     * @type { ?Array<GeneratorResultPageIcon> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    customIcons?: Array<GeneratorResultPageIcon>;
    /**
     * Model used for AI generate image tasks.
     *
     * @type { ?ImageGenerationModel }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    imageGenerationModel?: ImageGenerationModel;
    /**
     * Text polishing model used in AI generate image tasks.
     *
     * @type { ?TextGenerationModel }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    textGenerationModel?: TextGenerationModel;
    /**
     * Callback triggered when the ImageGeneratorDialog changes in size or position.
     *
     * @type { ?Callback<common2D.Rect> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 23 static
     */
    onAreaDidChange?: Callback<common2D.Rect>;
    /**
     * The following configuration parameters are used to customize the imported icon.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    customImportIcon?: CustomImportIcon;
     /**
 	    * Information for LiveView in AI image generation.
 	    *
 	    * @type { ?LiveViewInfo }
 	    * @syscap SystemCapability.ArkUI.ArkUI.Full
 	    * @systemapi
 	    * @stagemodelonly
 	    * @since 26.0.0 static
 	    */
 	  liveViewInfo?: LiveViewInfo;
    /**
     * Indicates whether to enable minimize during image generation.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    minimizeDuringGeneration?: boolean;
   /**
     * Whether to recover from cache for AI image generation.
     * The persistent cache file is used to store configuration parameters for AI image generation.
     *
     * @type { ?boolean }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    recoverFromCache?: boolean;
   }

   /**
   	 * Information for LiveView in AI image generation.
 	 *
 	 * @interface LiveViewInfo
 	 * @syscap SystemCapability.ArkUI.ArkUI.Full
 	 * @systemapi
 	 * @stagemodelonly
 	 * @since 26.0.0 static
 	 */
 	interface LiveViewInfo {
 	  /**
 	   * Get the Want object for LiveView.
 	   *
 	   * @returns { Want } Returns the Want object.
 	   * @syscap SystemCapability.ArkUI.ArkUI.Full
 	   * @systemapi
 	   * @stagemodelonly
 	   * @since 26.0.0 static
 	   */
 	  getWant(): Want;

 	  /**
 	   * Get the long-term task ID for LiveView.
 	   *
 	   * @returns { int } Returns the long-term task ID.
 	   * @syscap SystemCapability.ArkUI.ArkUI.Full
 	   * @systemapi
 	   * @stagemodelonly
 	   * @since 26.0.0 static
 	   */
 	  getLongTermTaskId(): int;

 	  /**
 	   * Check whether LiveView is needed.
 	   *
 	   * @returns { boolean } Returns true if LiveView is needed, false otherwise.
 	   * @syscap SystemCapability.ArkUI.ArkUI.Full
 	   * @systemapi
 	   * @stagemodelonly
 	   * @since 26.0.0 static
 	   */
 	  isLiveViewNeeded(): boolean;
 	}

  /**
   * Open the AI image generation task popup and perform AI image generation operations.
   *
   * @param { UIContext } uiContext - the context of dialog for ui display.
   * @param { GeneratorDialogOptions } [options] - Generate image task parameters.
   * @returns { Promise<Array<GeneratorResult>> } - Returns the result of generated image.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 23 static
   */
  function showGeneratorDialog(uiContext: UIContext, options?: GeneratorDialogOptions): Promise<Array<GeneratorResult>>;
  /**
   * Close the AI image generation task popup.
   *
   * @param { UIContext } uiContext - the context of dialog for ui display.
   * @returns { Promise<void> } - Returns the result of close operation.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  function closeGeneratorDialog(uiContext: UIContext): Promise<void>;
  /**
   * Hide the AI image generation task popup.
   *
   * @param { UIContext } uiContext The context of dialog for ui display.
   * @returns { Promise<void> } Returns the result of close operation.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  function hideGeneratorDialog(uiContext: UIContext): Promise<void>;
  /**
   * Restore the AI image generation task popup.
   *
   * @param { UIContext } uiContext The context of dialog for ui display.
   * @returns { Promise<void> } Returns the result of close operation.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  function restoreGeneratorDialog(uiContext: UIContext): Promise<void>;
  /**
   * Parameters used to open the NodeGraphComponent.
   *
   * @interface GeneratorNodeGraphOptions
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  interface GeneratorNodeGraphOptions {
    /**
     * Custom icons used on the AI generated image results page.
     *
     * @type { ?Array<GeneratorResultPageIcon> }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    customIcons?: Array<GeneratorResultPageIcon>;
    /**
     * Model used for AI generate image tasks.
     *
     * @type { ?ImageGenerationModel }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    imageGenerationModel?: ImageGenerationModel;
    /**
     * Text polishing model used in AI generate image tasks.
     *
     * @type { ?TextGenerationModel }
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    textGenerationModel?: TextGenerationModel;
    /**
     * The following configuration parameters are used to customize the imported icon.
     *
     * @syscap SystemCapability.ArkUI.ArkUI.Full
     * @systemapi
     * @stagemodelonly
     * @since 26.0.0 static
     */
    customImportIcon?: CustomImportIcon;
     /**
 	    * Information for LiveView in AI image generation.
 	    *
 	    * @type { ?LiveViewInfo }
 	    * @syscap SystemCapability.ArkUI.ArkUI.Full
 	    * @systemapi
 	    * @stagemodelonly
 	    * @since 26.0.0 static
 	    */
 	    liveViewInfo?: LiveViewInfo;    
  }

  /**
   * Open the AI node graph Sheet.
   *
   * @param { UIContext } uiContext - the context of dialog for ui display.
   * @param { GeneratorNodeGraphOptions } [options] - node graph task parameters.
   * @returns { Promise<void> } - Returns the result.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  function openGeneratorNodeGraph(uiContext: UIContext, options?: GeneratorNodeGraphOptions): Promise<void>;

  /**
   * Close the AI node graph Sheet.
   *
   * @param { UIContext } uiContext - the context of dialog for ui display.
   * @returns { Promise<void> } - Returns the result.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  function closeGeneratorNodeGraph(uiContext: UIContext): Promise<void>;
  /**
   * Hide the AI node graph Sheet.
   *
   * @param { UIContext } uiContext The context of dialog for ui display.
   * @returns { Promise<void> } Returns the result of hide operation.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  function hideGeneratorNodeGraph(uiContext: UIContext): Promise<void>;
  /**
   * Restore the AI node graph Sheet.
   *
   * @param { UIContext } uiContext The context of dialog for ui display.
   * @returns { Promise<void> } Returns the result of restore operation.
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  function restoreGeneratorNodeGraph(uiContext: UIContext): Promise<void>;
  /**
   * Whether to recover from cache for AI image generation.
   * The persistent cache file is used to store configuration parameters for AI image generation.
   *
   * @type { ?boolean }
   * @syscap SystemCapability.ArkUI.ArkUI.Full
   * @systemapi
   * @stagemodelonly
   * @since 26.0.0 static
   */
  recoverFromCache?: boolean;
}

export default imageGeneration;