import * as i0 from '@angular/core';
import { OnDestroy, OnInit, PipeTransform } from '@angular/core';
import * as i3 from '@colijnit/corecomponents_v12';
import { SimpleGridColumnTemplateType } from '@colijnit/corecomponents_v12';
import { Options } from '@colijnit/ioneconnector/build/model/options';
import { LanguageCode } from '@colijnit/ioneconnector/build/enum/language-code.enum';
import { MainApi } from '@colijnit/mainapi';
import { BehaviorSubject, Observable } from 'rxjs';
import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
import * as i4 from '@angular/common';

declare enum ModelCreationRenderStatus {
    Failed = "failed",
    Preprocessing = "preprocessing",
    Generating = "generating",
    Finished = "finished"
}

declare enum FileUploadCommonType {
    ReferenceFile = "THREE_D_LINK",
    ThreeDFile = "THREE_D_ZIP",
    Test = "TEST",
    ModelCreationImage = "THREE_D_AI_IMAGE",
    ModelCreationVideo = "THREE_D_AI_VIDEO"
}

declare class ModelCreationJobStatus {
    description: string;
    internalJobId: string;
    progress_status: string;
    upload_date: string;
    uuid: string;
}

declare class ModelCreationRequestResponse {
    status: string;
    uploadId: string;
    quality: string;
    caseName: string;
    explanation: string;
}

declare class ModelCreationSettings extends Options {
}

declare class DictionaryService {
    get language(): string;
    private _dictionaryPromise;
    private _dictionaries;
    private _language;
    private readonly _placeholder;
    setDictionary(language: LanguageCode): Promise<void>;
    /**
     * Returns the localized text for the given dictionary key.
     * @param {string} key
     * @param {boolean} [upperCaseFirst = true] False for first letter lowercase, true for first letter uppercase for returned dict val
     * @param {string[]} replacementTexts Rest params for replacement of '|~' in returned dict value
     * @returns {string} The translated text for given dictionary key
     */
    get(key: string, upperCaseFirst?: boolean, ...replacementTexts: string[]): string;
    private _dictionaryLoaded;
    static ɵfac: i0.ɵɵFactoryDeclaration<DictionaryService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DictionaryService>;
}

declare class ModelCreationSettingsService {
    private _dictionaryService;
    set settings(value: ModelCreationSettings);
    get settings(): ModelCreationSettings;
    private _settings;
    constructor(_dictionaryService: DictionaryService);
    createSettingsFromObject(obj: any): Promise<void>;
    initialize(options: any): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ModelCreationSettingsService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ModelCreationSettingsService>;
}

declare class FileUploadCommonResponse {
    status: string;
    uploadId: string;
    offset: number;
    progress: number;
    hash: string;
}

declare class ModelCreationConnectorAdapterService {
    private _optionsService;
    mainConnector: MainApi;
    constructor(_optionsService: ModelCreationSettingsService);
    connect(): Promise<void>;
    getSessionId(): Promise<string>;
    getDataSessionId(): Promise<string>;
    getRequestUpload(uploadType: string, fileName: string, fileSize: number, fileHash: string, uploadId?: string): Promise<FileUploadCommonResponse>;
    uploadFilePart(uploadId: string, uploadType: string, partOffset: number, partSize: number, partContent: any, partHash: string): Promise<FileUploadCommonResponse>;
    getFileUploadStatus(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    getFileUploadComplete(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    cancelFileUpload(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    initializeModelCreationRenderRequest(uploadType: string, caseName: string, quality: string, explanation: string, fileName: string, fileSize: number, fileHash: string): Promise<ModelCreationRequestResponse>;
    getModelCreationRenderStatus(uploadId?: string): Promise<ModelCreationJobStatus[]>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ModelCreationConnectorAdapterService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ModelCreationConnectorAdapterService>;
}

declare class ModelCreationConnectorService {
    private _adapterService;
    connectionInitialized: BehaviorSubject<boolean>;
    constructor(_adapterService: ModelCreationConnectorAdapterService);
    connect(): Promise<void>;
    getSessionId(): Promise<string>;
    getDataSessionId(): Promise<string>;
    getRequestUpload(uploadType: string, fileName: string, fileSize: number, fileHash: string, uploadId?: string): Promise<FileUploadCommonResponse>;
    uploadFilePart(uploadId: string, uploadType: string, partOffset: number, partSize: number, partContent: any, partHash: string): Promise<FileUploadCommonResponse>;
    getFileUploadStatus(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    getFileUploadComplete(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    cancelFileUpload(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    initializeModelCreationRenderRequest(uploadType: string, caseName: string, quality: string, explanation: string, fileName: string, fileSize: number, fileHash: string): Promise<ModelCreationRequestResponse>;
    getModelCreationRenderStatus(uploadId?: string): Promise<ModelCreationJobStatus[]>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ModelCreationConnectorService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ModelCreationConnectorService>;
}

declare class ModelCreationService {
    private _connectorService;
    private _settingsService;
    showLoader: boolean;
    constructor(_connectorService: ModelCreationConnectorService, _settingsService: ModelCreationSettingsService);
    init(options: any): Promise<void>;
    initRenderRequest(uploadType: string, file: File, caseName: string, quality: string, explanation: string): Promise<ModelCreationRequestResponse>;
    getRenderStatus(uploadId?: string): Promise<ModelCreationJobStatus[]>;
    getRenderFile(uploadId: string): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ModelCreationService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ModelCreationService>;
}

declare class FileUploadCommonService {
    private _connectorService;
    private _settingsService;
    private readonly CHUNK_SIZE;
    constructor(_connectorService: ModelCreationConnectorService, _settingsService: ModelCreationSettingsService);
    requestUpload(uploadType: string, file: File, uploadId?: string): Promise<FileUploadCommonResponse>;
    uploadFileParts(uploadId: string, uploadType: string, file: File): Observable<FileUploadCommonResponse>;
    private _uploadFilePart;
    private _uploadFilePartForm;
    getUploadStatus(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    getUploadComplete(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    cancelUpload(uploadId: string, uploadType: string): Promise<FileUploadCommonResponse>;
    static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadCommonService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<FileUploadCommonService>;
}

/** AUTO GENERATED FILE. DO NOT CHANGE.. OR YOU WILL SUFFER THE CONSEQUENCES OF YOUR ACTIONS **/
declare enum Icon {
    Camera = "camera",
    ImageLight = "image_light",
    LayerGroupRegular = "layer_group_regular",
    TrashBin = "TrashBin"
}

declare class IconCacheService {
    private _sanitizer;
    /**
     * All the icons as a large JSON object, from the all-icons.json file.
     * The object has property keys that are the icon names, and property values with the data string of the actual svg icon.
     */
    get iconCache(): {
        [iconName: string]: SafeHtml;
    };
    private _iconCache;
    constructor(_sanitizer: DomSanitizer);
    getIcon(iconName: Icon | string): SafeHtml;
    getIconAsBase64(iconName: Icon): SafeHtml;
    getRawIcon(iconName: Icon): string;
    setIconCache(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<IconCacheService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<IconCacheService>;
}

declare class FileUploadCommonServiceInput implements OnDestroy {
    iconCacheService: IconCacheService;
    private _uploadService;
    readonly icon: typeof Icon;
    uploadId: string;
    uploadType: FileUploadCommonType;
    acceptedFileTypes: string;
    showClass(): boolean;
    file: File | null;
    isUploading: boolean;
    uploadProgress: number;
    dragOver: boolean;
    uploadStatus: string;
    private _subs;
    constructor(iconCacheService: IconCacheService, _uploadService: FileUploadCommonService);
    ngOnDestroy(): void;
    handleUpload(): Promise<void>;
    pollUploadStatus(interval?: number): Observable<FileUploadCommonResponse>;
    cancelUpload(): void;
    onDragOver(event: DragEvent): void;
    onDragLeave(event: DragEvent): void;
    onDrop(event: DragEvent): void;
    onFileSelected(event: Event): void;
    resetFile(): void;
    private _resetUploadState;
    private _setFile;
    private _isAcceptedFileType;
    static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadCommonServiceInput, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<FileUploadCommonServiceInput, "co-file-upload-common-service-input", never, { "uploadId": { "alias": "uploadId"; "required": false; }; "uploadType": { "alias": "uploadType"; "required": false; }; "acceptedFileTypes": { "alias": "acceptedFileTypes"; "required": false; }; }, {}, never, ["*"], false, never>;
}

declare enum ModelCreationQuality {
    Low = "low",
    Medium = "medium",
    High = "high"
}

declare class ModelCreationPageComponent implements OnInit {
    iconCacheService: IconCacheService;
    modelCreationService: ModelCreationService;
    private _uploadService;
    readonly SimpleGridColumnTemplateType: typeof SimpleGridColumnTemplateType;
    readonly icon: typeof Icon;
    readonly renderStatus: typeof ModelCreationRenderStatus;
    readonly uploadType: typeof FileUploadCommonType;
    readonly qualityType: typeof ModelCreationQuality;
    set viewInputs(content: any);
    showClass(): boolean;
    get canUpload(): boolean;
    fileInputs: FileUploadCommonServiceInput[];
    isUploading: boolean;
    quality: ModelCreationQuality;
    caseName: string;
    explanation: string;
    collection: ModelCreationJobStatus[];
    constructor(iconCacheService: IconCacheService, modelCreationService: ModelCreationService, _uploadService: FileUploadCommonService);
    ngOnInit(): void;
    handleDownload(uploadId: string): Promise<void>;
    handleUploads(): Promise<void>;
    cancelUploads(): Promise<void>;
    private _requestUploads;
    private _resetUploadState;
    static ɵfac: i0.ɵɵFactoryDeclaration<ModelCreationPageComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ModelCreationPageComponent, "co-model-creation-page", never, {}, {}, never, never, false, never>;
}

declare class LocalizePipe implements PipeTransform {
    private _dictionaryService;
    constructor(_dictionaryService: DictionaryService);
    transform(value: string, upperCaseFirst?: boolean, replace?: string | string[]): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<LocalizePipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<LocalizePipe, "localize", false>;
}

declare class FileSizePipe implements PipeTransform {
    private readonly units;
    transform(bytes: number | null | undefined, decimalPlaces?: number): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<FileSizePipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<FileSizePipe, "fileSize", false>;
}

declare class AppendPipe implements PipeTransform {
    transform(value: string, append?: string): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<AppendPipe, never>;
    static ɵpipe: i0.ɵɵPipeDeclaration<AppendPipe, "append", false>;
}

declare class PipeModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<PipeModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PipeModule, [typeof LocalizePipe, typeof FileSizePipe, typeof AppendPipe], [typeof i4.CommonModule], [typeof LocalizePipe, typeof FileSizePipe, typeof AppendPipe]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PipeModule>;
}

declare class FileUploadCommonServiceInputModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<FileUploadCommonServiceInputModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<FileUploadCommonServiceInputModule, [typeof FileUploadCommonServiceInput], [typeof i3.IconModule, typeof PipeModule, typeof i3.AppendPipeModule, typeof i4.PercentPipe], [typeof FileUploadCommonServiceInput]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<FileUploadCommonServiceInputModule>;
}

declare class ModelCreationPageModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<ModelCreationPageModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<ModelCreationPageModule, [typeof ModelCreationPageComponent], [typeof i4.CommonModule, typeof i3.IconModule, typeof i3.SimpleGridModule, typeof i3.InputTextModule, typeof i3.InputRadioButtonModule, typeof PipeModule, typeof FileUploadCommonServiceInputModule, typeof i3.ButtonModule, typeof i3.LoaderModule], [typeof ModelCreationPageComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<ModelCreationPageModule>;
}

export { FileUploadCommonService, FileUploadCommonServiceInput, FileUploadCommonServiceInputModule, FileUploadCommonType, ModelCreationPageComponent, ModelCreationPageModule, ModelCreationQuality, ModelCreationRenderStatus, ModelCreationService, ModelCreationSettingsService };
