/**
 * MiniMax Node - Version 1
 * Discriminator: resource=video, operation=imageToVideo
 */


interface Credentials {
  minimaxApi: CredentialReference;
}

/** Generate a video from an image, with optional last frame and subject reference */
export type LcMinimaxV1VideoImageToVideoParams = {
  resource: 'video';
  operation: 'imageToVideo';
/**
 * The model to use for video generation
 * @default MiniMax-Hailuo-2.3
 */
    modelId?: 'I2V-01' | 'I2V-01-Director' | 'I2V-01-live' | 'MiniMax-Hailuo-02' | 'MiniMax-Hailuo-2.3' | 'MiniMax-Hailuo-2.3-Fast' | Expression<string>;
/**
 * How to provide the first frame image
 * @default url
 */
    imageInputType?: 'url' | 'binary' | Expression<string>;
/**
 * Public URL of the image to use as first frame (JPG, JPEG, PNG, WebP, &lt;20MB)
 * @displayOptions.show { imageInputType: ["url"] }
 */
    imageUrl: string | Expression<string>;
/**
 * Input Data Field Name
 * @hint The name of the input field containing the binary image data
 * @displayOptions.show { imageInputType: ["binary"] }
 * @default data
 */
    binaryPropertyName?: string | Expression<string>;
/**
 * Optional text description of the video (max 2000 characters). Camera movements can be controlled using [command] syntax.
 */
    prompt?: string | Expression<string>;
/**
 * Duration of the generated video
 * @default 6
 */
    duration?: 6 | 10 | Expression<number>;
/**
 * Resolution of the generated video. Available options depend on the model.
 * @default 768P
 */
    resolution?: '512P' | '720P' | '768P' | '1080P' | Expression<string>;
/**
 * Whether to download the generated video as binary data. When disabled, only the video URL is returned.
 * @default true
 */
    downloadVideo?: boolean | Expression<boolean>;
/**
 * Options
 * @default {}
 */
    options?: {
    /** Whether to automatically optimize the prompt
     * @default true
     */
    promptOptimizer?: boolean | Expression<boolean>;
    /** Provide a last frame image to generate a first-and-last-frame video. Only supported by MiniMax-Hailuo-2.3 and MiniMax-Hailuo-02.
     * @default none
     */
    lastFrameInputType?: 'none' | 'url' | 'binary' | Expression<string>;
    /** Last Frame Image URL
     * @displayOptions.show { lastFrameInputType: ["url"] }
     */
    lastFrameImageUrl?: string | Expression<string>;
    /** Last Frame Data Field Name
     * @displayOptions.show { lastFrameInputType: ["binary"] }
     * @default lastFrame
     */
    lastFrameBinaryPropertyName?: string | Expression<string>;
    /** Provide a face photo for facial consistency in the generated video. Only supported by MiniMax-Hailuo-2.3.
     * @default none
     */
    subjectReferenceInputType?: 'none' | 'url' | 'binary' | Expression<string>;
    /** Subject Reference Image URL
     * @displayOptions.show { subjectReferenceInputType: ["url"] }
     */
    subjectReferenceImageUrl?: string | Expression<string>;
    /** Subject Reference Data Field Name
     * @displayOptions.show { subjectReferenceInputType: ["binary"] }
     * @default subjectReference
     */
    subjectReferenceBinaryPropertyName?: string | Expression<string>;
  };
};

export interface LcMinimaxV1VideoImageToVideoSubnodeConfig {
  tools?: ToolInstance[];
}

export type LcMinimaxV1VideoImageToVideoNode = {
  type: '@n8n/n8n-nodes-langchain.minimax';
  version: 1;
  credentials?: Credentials;
  isTrigger: true;
  config: NodeConfig<LcMinimaxV1VideoImageToVideoParams> & { subnodes?: LcMinimaxV1VideoImageToVideoSubnodeConfig };
};