/**
 * Anthropic Chat Model Node - Version 1
 * Language Model Anthropic
 */


export interface LcLmChatAnthropicV1Params {
/**
 * The model which will generate the completion. &lt;a href="https://docs.anthropic.com/claude/docs/models-overview"&gt;Learn more&lt;/a&gt;.
 * @builderHint Default to claude-sonnet-4-6 (latest Sonnet); use claude-opus-4-7 when the user needs the most capable model. Never use Claude Sonnet 4.5, Claude 3.x, Claude 2, or LEGACY options — those are superseded and are not valid choices. When extended thinking is needed on Opus 4.7+, set Thinking Mode to Adaptive and choose an Effort level. The legacy Manual thinking mode is rejected by Opus 4.7.
 * @default claude-2
 */
    model?: 'claude-3-5-sonnet-20241022' | 'claude-3-opus-20240229' | 'claude-3-5-sonnet-20240620' | 'claude-3-sonnet-20240229' | 'claude-3-5-haiku-20241022' | 'claude-3-haiku-20240307' | 'claude-2' | 'claude-2.1' | 'claude-instant-1.2' | 'claude-instant-1' | Expression<string>;
/**
 * Additional options to add
 * @default {}
 */
    options?: {
    /** The maximum number of tokens to generate in the completion
     * @default 4096
     */
    maxTokensToSample?: number | Expression<number>;
    /** Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.
     * @displayOptions.hide { thinking: [true], thinkingMode: ["adaptive", "manual"] }
     * @default 0.7
     */
    temperature?: number | Expression<number>;
    /** Used to remove "long tail" low probability responses. Defaults to -1, which disables it.
     * @displayOptions.hide { thinking: [true], thinkingMode: ["adaptive", "manual"] }
     * @default -1
     */
    topK?: number | Expression<number>;
    /** Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered. We generally recommend altering this or temperature but not both.
     * @displayOptions.hide { thinking: [true], thinkingMode: ["adaptive", "manual"] }
     * @default 1
     */
    topP?: number | Expression<number>;
    /** Whether to enable thinking mode for the model
     * @default false
     */
    thinking?: boolean | Expression<boolean>;
    /** The maximum number of tokens to use for thinking
     * @displayOptions.show { thinking: [true] }
     * @default 1024
     */
    thinkingBudget?: number | Expression<number>;
    /** How extended thinking should be configured for the model
     * @default disabled
     */
    thinkingMode?: 'disabled' | 'adaptive' | 'manual' | Expression<string>;
    /** Effort level for adaptive thinking
     * @displayOptions.show { thinkingMode: ["adaptive"], /model.value: [{"_cnd":{"includes":"opus"}}] }
     * @default medium
     */
    effort?: 'low' | 'medium' | 'high' | 'xhigh' | 'max' | Expression<string>;
    /** Effort level for adaptive thinking
     * @displayOptions.show { thinkingMode: ["adaptive"], /model.value: [{"_cnd":{"regex":"^(?!.*opus).*"}}] }
     * @default medium
     */
    effort?: 'low' | 'medium' | 'high' | Expression<string>;
    /** Maximum tokens used for thinking. Manual mode is rejected by Opus 4.7+.
     * @displayOptions.show { thinkingMode: ["manual"] }
     * @default 1024
     */
    thinkingBudget?: number | Expression<number>;
  };
}

export interface LcLmChatAnthropicV1Credentials {
  anthropicApi: CredentialReference;
}

interface LcLmChatAnthropicV1NodeBase {
  type: '@n8n/n8n-nodes-langchain.lmChatAnthropic';
  version: 1;
  credentials?: LcLmChatAnthropicV1Credentials;
}

export type LcLmChatAnthropicV1ParamsNode = LcLmChatAnthropicV1NodeBase & {
  config: NodeConfig<LcLmChatAnthropicV1Params>;
};

export type LcLmChatAnthropicV1Node = LcLmChatAnthropicV1ParamsNode;