/* eslint-disable */
/* tslint:disable */
/**
 * This is an autogenerated file created by the Stencil compiler.
 * It contains typing information for all components that exist in this project.
 */
import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
export namespace Components {
    interface FileUploadComponent {
    }
    interface MyComponent {
        /**
          * The first name
         */
        "first": string;
        /**
          * The last name
         */
        "last": string;
        /**
          * The middle name
         */
        "middle": string;
    }
    interface UploadFileComponent {
        /**
          * @default [     '.pdf', '.doc', '.docx', '.jpg', '.jpeg', '.png', '.xlsx', '.xls',   ]
         */
        "allowedExtensions": string | string[];
        /**
          * @default 'Aires'
         */
        "displayName": string;
        /**
          * @default 'Aire'
         */
        "fileType": string;
        "getSelectedFileObjects": () => Promise<Array<{ id: number; file: File; addedAt: string; }>>;
        "getSelectedFiles": () => Promise<File[]>;
        /**
          * @default 8 * 1024 * 1024
         */
        "maxFileSize": number | string;
        /**
          * @default 'FormAire'
         */
        "moduleName": string;
    }
}
export interface UploadFileComponentCustomEvent<T> extends CustomEvent<T> {
    detail: T;
    target: HTMLUploadFileComponentElement;
}
declare global {
    interface HTMLFileUploadComponentElement extends Components.FileUploadComponent, HTMLStencilElement {
    }
    var HTMLFileUploadComponentElement: {
        prototype: HTMLFileUploadComponentElement;
        new (): HTMLFileUploadComponentElement;
    };
    interface HTMLMyComponentElement extends Components.MyComponent, HTMLStencilElement {
    }
    var HTMLMyComponentElement: {
        prototype: HTMLMyComponentElement;
        new (): HTMLMyComponentElement;
    };
    interface HTMLUploadFileComponentElementEventMap {
        "filesselected": {
    // ← SIEMPRE manda TODOS los archivos actuales
    files: Array<{ id: number; file: File; addedAt: string }>;
    plainFiles: File[];
    totalSize: number;
    count: number;
    reason: 'add' | 'remove' | 'clear';
  };
        "fileschanged": {
    files: Array<{ id: number; file: File; addedAt: string }>;
    plainFiles: File[];
    totalSize: number;
    count: number;
  };
    }
    interface HTMLUploadFileComponentElement extends Components.UploadFileComponent, HTMLStencilElement {
        addEventListener<K extends keyof HTMLUploadFileComponentElementEventMap>(type: K, listener: (this: HTMLUploadFileComponentElement, ev: UploadFileComponentCustomEvent<HTMLUploadFileComponentElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
        addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
        addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
        addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
        removeEventListener<K extends keyof HTMLUploadFileComponentElementEventMap>(type: K, listener: (this: HTMLUploadFileComponentElement, ev: UploadFileComponentCustomEvent<HTMLUploadFileComponentElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
        removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
        removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
        removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
    }
    var HTMLUploadFileComponentElement: {
        prototype: HTMLUploadFileComponentElement;
        new (): HTMLUploadFileComponentElement;
    };
    interface HTMLElementTagNameMap {
        "file-upload-component": HTMLFileUploadComponentElement;
        "my-component": HTMLMyComponentElement;
        "upload-file-component": HTMLUploadFileComponentElement;
    }
}
declare namespace LocalJSX {
    interface FileUploadComponent {
    }
    interface MyComponent {
        /**
          * The first name
         */
        "first"?: string;
        /**
          * The last name
         */
        "last"?: string;
        /**
          * The middle name
         */
        "middle"?: string;
    }
    interface UploadFileComponent {
        /**
          * @default [     '.pdf', '.doc', '.docx', '.jpg', '.jpeg', '.png', '.xlsx', '.xls',   ]
         */
        "allowedExtensions"?: string | string[];
        /**
          * @default 'Aires'
         */
        "displayName"?: string;
        /**
          * @default 'Aire'
         */
        "fileType"?: string;
        /**
          * @default 8 * 1024 * 1024
         */
        "maxFileSize"?: number | string;
        /**
          * @default 'FormAire'
         */
        "moduleName"?: string;
        "onFileschanged"?: (event: UploadFileComponentCustomEvent<{
    files: Array<{ id: number; file: File; addedAt: string }>;
    plainFiles: File[];
    totalSize: number;
    count: number;
  }>) => void;
        "onFilesselected"?: (event: UploadFileComponentCustomEvent<{
    // ← SIEMPRE manda TODOS los archivos actuales
    files: Array<{ id: number; file: File; addedAt: string }>;
    plainFiles: File[];
    totalSize: number;
    count: number;
    reason: 'add' | 'remove' | 'clear';
  }>) => void;
    }
    interface IntrinsicElements {
        "file-upload-component": FileUploadComponent;
        "my-component": MyComponent;
        "upload-file-component": UploadFileComponent;
    }
}
export { LocalJSX as JSX };
declare module "@stencil/core" {
    export namespace JSX {
        interface IntrinsicElements {
            "file-upload-component": LocalJSX.FileUploadComponent & JSXBase.HTMLAttributes<HTMLFileUploadComponentElement>;
            "my-component": LocalJSX.MyComponent & JSXBase.HTMLAttributes<HTMLMyComponentElement>;
            "upload-file-component": LocalJSX.UploadFileComponent & JSXBase.HTMLAttributes<HTMLUploadFileComponentElement>;
        }
    }
}
