/* tslint:disable */
/* auto-generated angular directive proxies */
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Output, NgZone } from '@angular/core';

import { ProxyCmp } from './angular-component-lib/utils';

import type { Components } from 'hxy-stencil-ai-chat/components';

import { defineCustomElement as defineAiChat } from 'hxy-stencil-ai-chat/components/ai-chat.js';
import { defineCustomElement as defineInternalEchartsRenderer } from 'hxy-stencil-ai-chat/components/internal-echarts-renderer.js';
import { defineCustomElement as defineInternalMarkdownRenderer } from 'hxy-stencil-ai-chat/components/internal-markdown-renderer.js';
import { defineCustomElement as defineInternalMessageInput } from 'hxy-stencil-ai-chat/components/internal-message-input.js';
import { defineCustomElement as defineInternalTextRenderer } from 'hxy-stencil-ai-chat/components/internal-text-renderer.js';
@ProxyCmp({
  defineCustomElementFn: defineAiChat,
  inputs: ['aiAvatar', 'customRenderers', 'inputDisabled', 'inputPlaceholder', 'maxInputLength', 'messages', 'multilineInput', 'showAiAvatar', 'showInput', 'showTimestamp', 'showUserAvatar', 'userAvatar']
})
@Component({
  selector: 'ai-chat',
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: '<ng-content></ng-content>',
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
  inputs: ['aiAvatar', 'customRenderers', 'inputDisabled', 'inputPlaceholder', 'maxInputLength', 'messages', 'multilineInput', 'showAiAvatar', 'showInput', 'showTimestamp', 'showUserAvatar', 'userAvatar'],
  outputs: ['messageClick', 'messageLongPress', 'messageSend'],
})
export class AiChat {
  protected el: HTMLAiChatElement;
  @Output() messageClick = new EventEmitter<CustomEvent<IAiChatChatMessage>>();
  @Output() messageLongPress = new EventEmitter<CustomEvent<IAiChatChatMessage>>();
  @Output() messageSend = new EventEmitter<CustomEvent<{ content: string; timestamp: number }>>();
  constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
    c.detach();
    this.el = r.nativeElement;
  }
}


import type { ChatMessage as IAiChatChatMessage } from 'hxy-stencil-ai-chat/components';

export declare interface AiChat extends Components.AiChat {
  /**
   * 消息点击事件
   */
  messageClick: EventEmitter<CustomEvent<IAiChatChatMessage>>;
  /**
   * 消息长按事件
   */
  messageLongPress: EventEmitter<CustomEvent<IAiChatChatMessage>>;
  /**
   * 消息发送事件
   */
  messageSend: EventEmitter<CustomEvent<{ content: string; timestamp: number }>>;
}


@ProxyCmp({
  defineCustomElementFn: defineInternalEchartsRenderer,
  inputs: ['content', 'height', 'responsive', 'showLoading', 'theme', 'width']
})
@Component({
  selector: 'internal-echarts-renderer',
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: '<ng-content></ng-content>',
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
  inputs: ['content', 'height', 'responsive', 'showLoading', 'theme', 'width'],
})
export class InternalEchartsRenderer {
  protected el: HTMLInternalEchartsRendererElement;
  constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
    c.detach();
    this.el = r.nativeElement;
  }
}


export declare interface InternalEchartsRenderer extends Components.InternalEchartsRenderer {}


@ProxyCmp({
  defineCustomElementFn: defineInternalMarkdownRenderer,
  inputs: ['content', 'enableFootnotes', 'enableTables', 'enableTaskLists', 'highlightCode']
})
@Component({
  selector: 'internal-markdown-renderer',
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: '<ng-content></ng-content>',
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
  inputs: ['content', 'enableFootnotes', 'enableTables', 'enableTaskLists', 'highlightCode'],
})
export class InternalMarkdownRenderer {
  protected el: HTMLInternalMarkdownRendererElement;
  constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
    c.detach();
    this.el = r.nativeElement;
  }
}


export declare interface InternalMarkdownRenderer extends Components.InternalMarkdownRenderer {}


@ProxyCmp({
  defineCustomElementFn: defineInternalMessageInput,
  inputs: ['disabled', 'maxLength', 'multiline', 'placeholder', 'sendButtonText', 'showCharCount']
})
@Component({
  selector: 'internal-message-input',
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: '<ng-content></ng-content>',
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
  inputs: ['disabled', 'maxLength', 'multiline', 'placeholder', 'sendButtonText', 'showCharCount'],
  outputs: ['messageSend', 'inputChange', 'inputFocus', 'inputBlur'],
})
export class InternalMessageInput {
  protected el: HTMLInternalMessageInputElement;
  @Output() messageSend = new EventEmitter<CustomEvent<{ content: string; timestamp: number }>>();
  @Output() inputChange = new EventEmitter<CustomEvent<string>>();
  @Output() inputFocus = new EventEmitter<CustomEvent<void>>();
  @Output() inputBlur = new EventEmitter<CustomEvent<void>>();
  constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
    c.detach();
    this.el = r.nativeElement;
  }
}


export declare interface InternalMessageInput extends Components.InternalMessageInput {

  messageSend: EventEmitter<CustomEvent<{ content: string; timestamp: number }>>;

  inputChange: EventEmitter<CustomEvent<string>>;

  inputFocus: EventEmitter<CustomEvent<void>>;

  inputBlur: EventEmitter<CustomEvent<void>>;
}


@ProxyCmp({
  defineCustomElementFn: defineInternalTextRenderer,
  inputs: ['autoLink', 'content', 'highlightCode', 'preserveWhitespace']
})
@Component({
  selector: 'internal-text-renderer',
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: '<ng-content></ng-content>',
  // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
  inputs: ['autoLink', 'content', 'highlightCode', 'preserveWhitespace'],
})
export class InternalTextRenderer {
  protected el: HTMLInternalTextRendererElement;
  constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
    c.detach();
    this.el = r.nativeElement;
  }
}


export declare interface InternalTextRenderer extends Components.InternalTextRenderer {}


