/* 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.core';
import {
  ElementLabels,
} from './models/labels';
import {
  Block,
} from './models/block';
import {
  ResolveLocation,
} from './models/resolve-location';
import {
  AudioTemplate,
} from './components/bce-element-audio/bce-element-audio-template';
import {
  CheckboxTemplate,
} from './components/bce-element-checkbox/bce-element-checkbox-template';
import {
  DownloadTemplate,
} from './components/bce-element-download/bce-element-download-template';
import {
  HeaderTemplate,
} from './components/bce-element-header/bce-element-header-template';
import {
  ImageTemplate,
} from './components/bce-element-image/bce-element-image-template';
import {
  InputTemplate,
} from './components/bce-element-input/bce-element-input-template';
import {
  LinkTemplate,
} from './components/bce-element-link/bce-element-link-template';
import {
  MatrixTemplate,
} from './components/bce-element-matrix/bce-element-matrix-template';
import {
  RadioTemplate,
} from './components/bce-element-radio/bce-element-radio-template';
import {
  SliderTemplate,
} from './components/bce-element-slider/bce-element-slider-template';
import {
  SortTemplate,
} from './components/bce-element-sort/bce-element-sort-template';
import {
  TableTemplate,
} from './components/bce-element-table/bce-element-table-template';
import {
  TextTemplate,
} from './components/bce-element-text/bce-element-text-template';
import {
  VideoTemplate,
} from './components/bce-element-video/bce-element-video-template';
import {
  Module,
  ModuleFlow,
  ModuleMetadata,
} from './models/module';
import {
  Reference,
} from './models/reference';
import {
  File,
} from './utils/file';

export namespace Components {
  interface BceBlockEditor {
    'addElement': (type: Block.Type) => Promise<void>;
    'blacklist'?: string;
    'getStoredFiles': () => Promise<string[]>;
    'labelSubtitle': string;
    'labelTitle': string;
    'labels': ElementLabels;
    'preview': boolean;
    'resolveLocation'?: ResolveLocation;
    'value': Block;
    'whitelist'?: string;
  }
  interface BceElement {
    'editor': boolean;
    'elementIcon': string;
    'hasFocus': boolean;
    'labels': ElementLabels;
    'name': string;
    'readonly'?: boolean;
    'resolveLocation'?: ResolveLocation;
    'template': Block.Element | string;
    'type': Block.Type;
    'value'?: any;
  }
  interface BceElementAudio {
    'resolveLocation': ResolveLocation;
    'template'?: Block.ElementAudio.Template;
  }
  interface BceElementAudioTemplate {
    'autoplay': boolean;
    'labelAutoplay': string;
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location': string;
    'placeholderLocation': string;
    'value'?: AudioTemplate;
  }
  interface BceElementCheckbox {
    'template'?: Block.ElementCheckbox.Template;
    'value'?: { index: number; text: string }[];
  }
  interface BceElementCheckboxTemplate {
    'answer': never[];
    'labelOCAddButton': string;
    'labelOCImage': string;
    'labelOCOther': string;
    'labelOCRemoveButton': string;
    'labelOrientation': string;
    'labelOrientationH': string;
    'labelOrientationV': string;
    'labelQuestion': string;
    'labelRequired': string;
    'optionIcon': string;
    'options': never[];
    'orientation': CheckboxTemplate['orientation'];
    'other': boolean;
    'placeholderOptions': string;
    'question': string;
    'required': boolean;
    'value'?: CheckboxTemplate;
  }
  interface BceElementDownloadTemplate {
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location': string;
    'placeholderLocation': string;
    'placeholderText': string;
    'text': string;
    'value'?: DownloadTemplate;
  }
  interface BceElementFab {
    'active': boolean;
    'color'?: string;
    'disabled': boolean;
    'icon': string;
  }
  interface BceElementHeader {
    'template'?: Block.ElementHeader.Template;
  }
  interface BceElementHeaderTemplate {
    'placeholderText': string;
    'text': string;
    'value'?: HeaderTemplate;
  }
  interface BceElementImage {
    'resolveLocation': ResolveLocation;
    'template'?: Block.ElementImage.Template;
  }
  interface BceElementImageTemplate {
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location': string;
    'placeholderLocation': string;
    'value'?: ImageTemplate;
  }
  interface BceElementInput {
    'template'?: Block.ElementInput.Template;
    'value': any;
  }
  interface BceElementInputTemplate {
    'answer': string;
    'hasAnswer': boolean;
    'labelAnswer': string;
    'labelHasAnswer': string;
    'labelMax': string;
    'labelMin': string;
    'labelMultiline': string;
    'labelQuestion': string;
    'labelRequired': string;
    'max': number | null;
    'min': number | null;
    'multiline': boolean;
    'placeholderAnswer': string;
    'question': string;
    'required': boolean;
    'value'?: InputTemplate;
  }
  interface BceElementLinkTemplate {
    'href': string;
    'icon': string;
    'labelHref': string;
    'labelIcon': string;
    'labelText': string;
    'placeholderHref': string;
    'placeholderIcon': string;
    'placeholderText': string;
    'text': string;
    'value'?: LinkTemplate;
  }
  interface BceElementMatrix {
    'template'?: Block.ElementMatrix.Template;
    'value': Array<number | null>;
  }
  interface BceElementMatrixTemplate {
    'columns': MatrixTemplate['columns'];
    'labelColumns': string;
    'labelOCAddButton': string;
    'labelOCImage': string;
    'labelOCOther': string;
    'labelOCRemoveButton': string;
    'labelQuestion': string;
    'labelRequired': string;
    'labelRows': string;
    'optionIcon': string;
    'placeholderColumns': string;
    'placeholderRows': string;
    'question': string;
    'required': boolean;
    'rows': MatrixTemplate['rows'];
    'value'?: MatrixTemplate;
  }
  interface BceElementRadio {
    'template'?: Block.ElementRadio.Template;
    'value'?: { index: number; text: string };
  }
  interface BceElementRadioTemplate {
    'answer': RadioTemplate['answer'];
    'labelOCAddButton': string;
    'labelOCImage': string;
    'labelOCOther': string;
    'labelOCRemoveButton': string;
    'labelOrientation': string;
    'labelOrientationH': string;
    'labelOrientationV': string;
    'labelQuestion': string;
    'labelRequired': string;
    'optionIcon': string;
    'options': never[];
    'orientation': RadioTemplate['orientation'];
    'other': boolean;
    'placeholderOptions': string;
    'question': string;
    'required': boolean;
    'value'?: RadioTemplate;
  }
  interface BceElementSlider {
    'template'?: Block.ElementSlider.Template;
    'value': any;
  }
  interface BceElementSliderTemplate {
    'labelMax': string;
    'labelMaxText': string;
    'labelMin': string;
    'labelMinText': string;
    'labelQuestion': string;
    'labelRequired': string;
    'labelStep': string;
    'max': number;
    'maxText': string;
    'min': number;
    'minText': string;
    'question': string;
    'required': boolean;
    'step': number;
    'value'?: SliderTemplate;
  }
  interface BceElementSortTemplate {
    'dual': boolean;
    'feedbackCorrect': string;
    'feedbackIncorrect': string;
    'labelDual': string;
    'labelFeedbackCorrect': string;
    'labelFeedbackIncorrect': string;
    'labelOCAddButton': string;
    'labelOCImage': string;
    'labelOCOther': string;
    'labelOCRemoveButton': string;
    'labelQuestion': string;
    'labelRequired': string;
    'optionIcon': string;
    'options': SortTemplate['options'];
    'placeholderFeedbackCorrect': string;
    'placeholderFeedbackIncorrect': string;
    'placeholderOptions': string;
    'question': string;
    'required': boolean;
    'value'?: SortTemplate;
  }
  interface BceElementTableTemplate {
    'columns': never[];
    'labelMaxRows': string;
    'labelOCAddButton': string;
    'labelOCImage': string;
    'labelOCOther': string;
    'labelOCRemoveButton': string;
    'labelOrientation': string;
    'labelOrientationH': string;
    'labelOrientationV': string;
    'labelQuestion': string;
    'labelRequired': string;
    'maxRows': number;
    'optionIcon': string;
    'orientation': TableTemplate['orientation'];
    'placeholderColumns': string;
    'question': string;
    'required': boolean;
    'value'?: TableTemplate;
  }
  interface BceElementText {
    'template'?: Block.ElementText.Template;
  }
  interface BceElementTextTemplate {
    'placeholderText': string;
    'text': string;
    'value'?: TextTemplate;
  }
  interface BceElementVideo {
    'resolveLocation': ResolveLocation;
    'template'?: Block.ElementVideo.Template;
  }
  interface BceElementVideoTemplate {
    'autoplay': boolean;
    'labelAutoplay': string;
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location': string;
    'placeholderLocation': string;
    'value'?: VideoTemplate;
  }
  interface BceFlowEditor {
    'createId'?: () => string;
    'current': string;
    'currentVersion': string;
    'existing'?: string[];
    'labelActionAdd': string;
    'labelActionDelete': string;
    'labelActionEnd': string;
    'labelActionOpen': string;
    'labelConditionOther': string;
    'labelConditionScreen': string;
    'labelOptionConditional': string;
    'labelOptionEnd': string;
    'labelOptionNext': string;
    'labelSubtitle': string;
    'labelTitle': string;
    'value': ModuleFlow;
  }
  interface BceFlowGraph {
    'addBlock': (target: Reference) => Promise<void>;
    'createId': () => string;
    'current': string;
    'deleteBlock': (target: Reference) => Promise<void>;
    'editable': boolean;
    'existing'?: string[];
    'unlink': (source: string, target: string) => Promise<void>;
    'value': ModuleFlow;
  }
  interface BceModuleEditor {
    'allowAdvanced': boolean;
    'categories': { value: string; label: string }[];
    'existing'?: string[];
    'getStoredFiles': () => Promise<string[]>;
    'labelAdvancedHide': string;
    'labelAdvancedShow': string;
    'labelCategory': string;
    'labelDescription': string;
    'labelGraphSubtitle': string;
    'labelGraphTitle': string;
    'labelImage': string;
    'labelName': string;
    'labelSubtitle': string;
    'labelTitle': string;
    'metadata': <T extends never>(key: T, value: ModuleMetadata[T]) => Promise<void>;
    'value': Module;
  }
  interface BceOptionCreator {
    'allowOther': boolean;
    'focusLast': (nextTick?: boolean) => Promise<void>;
    'icon'?: string;
    'label'?: string;
    'labelOCAddButton': string;
    'labelOCImage': string;
    'labelOCOther': string;
    'labelOCRemoveButton': string;
    'other': boolean;
    'placeholder'?: string;
    'value': Block.ElementOption[];
  }
  interface BceUploadInput {
    'delete': () => Promise<void>;
    'labelDeleteButton': string;
    'labelUploadButton': string;
    'placeholder'?: string;
    'upload': () => Promise<void>;
    'value': string;
  }
}

declare global {


  interface HTMLBceBlockEditorElement extends Components.BceBlockEditor, HTMLStencilElement {}
  var HTMLBceBlockEditorElement: {
    prototype: HTMLBceBlockEditorElement;
    new (): HTMLBceBlockEditorElement;
  };

  interface HTMLBceElementElement extends Components.BceElement, HTMLStencilElement {}
  var HTMLBceElementElement: {
    prototype: HTMLBceElementElement;
    new (): HTMLBceElementElement;
  };

  interface HTMLBceElementAudioElement extends Components.BceElementAudio, HTMLStencilElement {}
  var HTMLBceElementAudioElement: {
    prototype: HTMLBceElementAudioElement;
    new (): HTMLBceElementAudioElement;
  };

  interface HTMLBceElementAudioTemplateElement extends Components.BceElementAudioTemplate, HTMLStencilElement {}
  var HTMLBceElementAudioTemplateElement: {
    prototype: HTMLBceElementAudioTemplateElement;
    new (): HTMLBceElementAudioTemplateElement;
  };

  interface HTMLBceElementCheckboxElement extends Components.BceElementCheckbox, HTMLStencilElement {}
  var HTMLBceElementCheckboxElement: {
    prototype: HTMLBceElementCheckboxElement;
    new (): HTMLBceElementCheckboxElement;
  };

  interface HTMLBceElementCheckboxTemplateElement extends Components.BceElementCheckboxTemplate, HTMLStencilElement {}
  var HTMLBceElementCheckboxTemplateElement: {
    prototype: HTMLBceElementCheckboxTemplateElement;
    new (): HTMLBceElementCheckboxTemplateElement;
  };

  interface HTMLBceElementDownloadTemplateElement extends Components.BceElementDownloadTemplate, HTMLStencilElement {}
  var HTMLBceElementDownloadTemplateElement: {
    prototype: HTMLBceElementDownloadTemplateElement;
    new (): HTMLBceElementDownloadTemplateElement;
  };

  interface HTMLBceElementFabElement extends Components.BceElementFab, HTMLStencilElement {}
  var HTMLBceElementFabElement: {
    prototype: HTMLBceElementFabElement;
    new (): HTMLBceElementFabElement;
  };

  interface HTMLBceElementHeaderElement extends Components.BceElementHeader, HTMLStencilElement {}
  var HTMLBceElementHeaderElement: {
    prototype: HTMLBceElementHeaderElement;
    new (): HTMLBceElementHeaderElement;
  };

  interface HTMLBceElementHeaderTemplateElement extends Components.BceElementHeaderTemplate, HTMLStencilElement {}
  var HTMLBceElementHeaderTemplateElement: {
    prototype: HTMLBceElementHeaderTemplateElement;
    new (): HTMLBceElementHeaderTemplateElement;
  };

  interface HTMLBceElementImageElement extends Components.BceElementImage, HTMLStencilElement {}
  var HTMLBceElementImageElement: {
    prototype: HTMLBceElementImageElement;
    new (): HTMLBceElementImageElement;
  };

  interface HTMLBceElementImageTemplateElement extends Components.BceElementImageTemplate, HTMLStencilElement {}
  var HTMLBceElementImageTemplateElement: {
    prototype: HTMLBceElementImageTemplateElement;
    new (): HTMLBceElementImageTemplateElement;
  };

  interface HTMLBceElementInputElement extends Components.BceElementInput, HTMLStencilElement {}
  var HTMLBceElementInputElement: {
    prototype: HTMLBceElementInputElement;
    new (): HTMLBceElementInputElement;
  };

  interface HTMLBceElementInputTemplateElement extends Components.BceElementInputTemplate, HTMLStencilElement {}
  var HTMLBceElementInputTemplateElement: {
    prototype: HTMLBceElementInputTemplateElement;
    new (): HTMLBceElementInputTemplateElement;
  };

  interface HTMLBceElementLinkTemplateElement extends Components.BceElementLinkTemplate, HTMLStencilElement {}
  var HTMLBceElementLinkTemplateElement: {
    prototype: HTMLBceElementLinkTemplateElement;
    new (): HTMLBceElementLinkTemplateElement;
  };

  interface HTMLBceElementMatrixElement extends Components.BceElementMatrix, HTMLStencilElement {}
  var HTMLBceElementMatrixElement: {
    prototype: HTMLBceElementMatrixElement;
    new (): HTMLBceElementMatrixElement;
  };

  interface HTMLBceElementMatrixTemplateElement extends Components.BceElementMatrixTemplate, HTMLStencilElement {}
  var HTMLBceElementMatrixTemplateElement: {
    prototype: HTMLBceElementMatrixTemplateElement;
    new (): HTMLBceElementMatrixTemplateElement;
  };

  interface HTMLBceElementRadioElement extends Components.BceElementRadio, HTMLStencilElement {}
  var HTMLBceElementRadioElement: {
    prototype: HTMLBceElementRadioElement;
    new (): HTMLBceElementRadioElement;
  };

  interface HTMLBceElementRadioTemplateElement extends Components.BceElementRadioTemplate, HTMLStencilElement {}
  var HTMLBceElementRadioTemplateElement: {
    prototype: HTMLBceElementRadioTemplateElement;
    new (): HTMLBceElementRadioTemplateElement;
  };

  interface HTMLBceElementSliderElement extends Components.BceElementSlider, HTMLStencilElement {}
  var HTMLBceElementSliderElement: {
    prototype: HTMLBceElementSliderElement;
    new (): HTMLBceElementSliderElement;
  };

  interface HTMLBceElementSliderTemplateElement extends Components.BceElementSliderTemplate, HTMLStencilElement {}
  var HTMLBceElementSliderTemplateElement: {
    prototype: HTMLBceElementSliderTemplateElement;
    new (): HTMLBceElementSliderTemplateElement;
  };

  interface HTMLBceElementSortTemplateElement extends Components.BceElementSortTemplate, HTMLStencilElement {}
  var HTMLBceElementSortTemplateElement: {
    prototype: HTMLBceElementSortTemplateElement;
    new (): HTMLBceElementSortTemplateElement;
  };

  interface HTMLBceElementTableTemplateElement extends Components.BceElementTableTemplate, HTMLStencilElement {}
  var HTMLBceElementTableTemplateElement: {
    prototype: HTMLBceElementTableTemplateElement;
    new (): HTMLBceElementTableTemplateElement;
  };

  interface HTMLBceElementTextElement extends Components.BceElementText, HTMLStencilElement {}
  var HTMLBceElementTextElement: {
    prototype: HTMLBceElementTextElement;
    new (): HTMLBceElementTextElement;
  };

  interface HTMLBceElementTextTemplateElement extends Components.BceElementTextTemplate, HTMLStencilElement {}
  var HTMLBceElementTextTemplateElement: {
    prototype: HTMLBceElementTextTemplateElement;
    new (): HTMLBceElementTextTemplateElement;
  };

  interface HTMLBceElementVideoElement extends Components.BceElementVideo, HTMLStencilElement {}
  var HTMLBceElementVideoElement: {
    prototype: HTMLBceElementVideoElement;
    new (): HTMLBceElementVideoElement;
  };

  interface HTMLBceElementVideoTemplateElement extends Components.BceElementVideoTemplate, HTMLStencilElement {}
  var HTMLBceElementVideoTemplateElement: {
    prototype: HTMLBceElementVideoTemplateElement;
    new (): HTMLBceElementVideoTemplateElement;
  };

  interface HTMLBceFlowEditorElement extends Components.BceFlowEditor, HTMLStencilElement {}
  var HTMLBceFlowEditorElement: {
    prototype: HTMLBceFlowEditorElement;
    new (): HTMLBceFlowEditorElement;
  };

  interface HTMLBceFlowGraphElement extends Components.BceFlowGraph, HTMLStencilElement {}
  var HTMLBceFlowGraphElement: {
    prototype: HTMLBceFlowGraphElement;
    new (): HTMLBceFlowGraphElement;
  };

  interface HTMLBceModuleEditorElement extends Components.BceModuleEditor, HTMLStencilElement {}
  var HTMLBceModuleEditorElement: {
    prototype: HTMLBceModuleEditorElement;
    new (): HTMLBceModuleEditorElement;
  };

  interface HTMLBceOptionCreatorElement extends Components.BceOptionCreator, HTMLStencilElement {}
  var HTMLBceOptionCreatorElement: {
    prototype: HTMLBceOptionCreatorElement;
    new (): HTMLBceOptionCreatorElement;
  };

  interface HTMLBceUploadInputElement extends Components.BceUploadInput, HTMLStencilElement {}
  var HTMLBceUploadInputElement: {
    prototype: HTMLBceUploadInputElement;
    new (): HTMLBceUploadInputElement;
  };
  interface HTMLElementTagNameMap {
    'bce-block-editor': HTMLBceBlockEditorElement;
    'bce-element': HTMLBceElementElement;
    'bce-element-audio': HTMLBceElementAudioElement;
    'bce-element-audio-template': HTMLBceElementAudioTemplateElement;
    'bce-element-checkbox': HTMLBceElementCheckboxElement;
    'bce-element-checkbox-template': HTMLBceElementCheckboxTemplateElement;
    'bce-element-download-template': HTMLBceElementDownloadTemplateElement;
    'bce-element-fab': HTMLBceElementFabElement;
    'bce-element-header': HTMLBceElementHeaderElement;
    'bce-element-header-template': HTMLBceElementHeaderTemplateElement;
    'bce-element-image': HTMLBceElementImageElement;
    'bce-element-image-template': HTMLBceElementImageTemplateElement;
    'bce-element-input': HTMLBceElementInputElement;
    'bce-element-input-template': HTMLBceElementInputTemplateElement;
    'bce-element-link-template': HTMLBceElementLinkTemplateElement;
    'bce-element-matrix': HTMLBceElementMatrixElement;
    'bce-element-matrix-template': HTMLBceElementMatrixTemplateElement;
    'bce-element-radio': HTMLBceElementRadioElement;
    'bce-element-radio-template': HTMLBceElementRadioTemplateElement;
    'bce-element-slider': HTMLBceElementSliderElement;
    'bce-element-slider-template': HTMLBceElementSliderTemplateElement;
    'bce-element-sort-template': HTMLBceElementSortTemplateElement;
    'bce-element-table-template': HTMLBceElementTableTemplateElement;
    'bce-element-text': HTMLBceElementTextElement;
    'bce-element-text-template': HTMLBceElementTextTemplateElement;
    'bce-element-video': HTMLBceElementVideoElement;
    'bce-element-video-template': HTMLBceElementVideoTemplateElement;
    'bce-flow-editor': HTMLBceFlowEditorElement;
    'bce-flow-graph': HTMLBceFlowGraphElement;
    'bce-module-editor': HTMLBceModuleEditorElement;
    'bce-option-creator': HTMLBceOptionCreatorElement;
    'bce-upload-input': HTMLBceUploadInputElement;
  }
}

declare namespace LocalJSX {
  interface BceBlockEditor extends JSXBase.HTMLAttributes<HTMLBceBlockEditorElement> {
    'blacklist'?: string;
    'labelSubtitle'?: string;
    'labelTitle'?: string;
    'labels'?: ElementLabels;
    'onFile-delete'?: (event: CustomEvent<{ id: string; path: string }>) => void;
    'preview'?: boolean;
    'resolveLocation'?: ResolveLocation;
    'value'?: Block;
    'whitelist'?: string;
  }
  interface BceElement extends JSXBase.HTMLAttributes<HTMLBceElementElement> {
    'editor'?: boolean;
    'elementIcon'?: string;
    'hasFocus'?: boolean;
    'labels'?: ElementLabels;
    'name'?: string;
    'onDelete'?: (event: CustomEvent<any>) => void;
    'onDuplicate'?: (event: CustomEvent<any>) => void;
    'onTemplate'?: (event: CustomEvent<Block.Element>) => void;
    'readonly'?: boolean;
    'resolveLocation'?: ResolveLocation;
    'template': Block.Element | string;
    'type': Block.Type;
    'value'?: any;
  }
  interface BceElementAudio extends JSXBase.HTMLAttributes<HTMLBceElementAudioElement> {
    'resolveLocation'?: ResolveLocation;
    'template'?: Block.ElementAudio.Template;
  }
  interface BceElementAudioTemplate extends JSXBase.HTMLAttributes<HTMLBceElementAudioTemplateElement> {
    'autoplay'?: boolean;
    'labelAutoplay'?: string;
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location'?: string;
    'placeholderLocation'?: string;
    'value'?: AudioTemplate;
  }
  interface BceElementCheckbox extends JSXBase.HTMLAttributes<HTMLBceElementCheckboxElement> {
    'template'?: Block.ElementCheckbox.Template;
    'value'?: { index: number; text: string }[];
  }
  interface BceElementCheckboxTemplate extends JSXBase.HTMLAttributes<HTMLBceElementCheckboxTemplateElement> {
    'answer'?: never[];
    'labelOCAddButton'?: string;
    'labelOCImage'?: string;
    'labelOCOther'?: string;
    'labelOCRemoveButton'?: string;
    'labelOrientation'?: string;
    'labelOrientationH'?: string;
    'labelOrientationV'?: string;
    'labelQuestion'?: string;
    'labelRequired'?: string;
    'optionIcon'?: string;
    'options'?: never[];
    'orientation'?: CheckboxTemplate['orientation'];
    'other'?: boolean;
    'placeholderOptions'?: string;
    'question'?: string;
    'required'?: boolean;
    'value'?: CheckboxTemplate;
  }
  interface BceElementDownloadTemplate extends JSXBase.HTMLAttributes<HTMLBceElementDownloadTemplateElement> {
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location'?: string;
    'placeholderLocation'?: string;
    'placeholderText'?: string;
    'text'?: string;
    'value'?: DownloadTemplate;
  }
  interface BceElementFab extends JSXBase.HTMLAttributes<HTMLBceElementFabElement> {
    'active'?: boolean;
    'color'?: string;
    'disabled'?: boolean;
    'icon'?: string;
  }
  interface BceElementHeader extends JSXBase.HTMLAttributes<HTMLBceElementHeaderElement> {
    'template'?: Block.ElementHeader.Template;
  }
  interface BceElementHeaderTemplate extends JSXBase.HTMLAttributes<HTMLBceElementHeaderTemplateElement> {
    'placeholderText'?: string;
    'text'?: string;
    'value'?: HeaderTemplate;
  }
  interface BceElementImage extends JSXBase.HTMLAttributes<HTMLBceElementImageElement> {
    'resolveLocation'?: ResolveLocation;
    'template'?: Block.ElementImage.Template;
  }
  interface BceElementImageTemplate extends JSXBase.HTMLAttributes<HTMLBceElementImageTemplateElement> {
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location'?: string;
    'placeholderLocation'?: string;
    'value'?: ImageTemplate;
  }
  interface BceElementInput extends JSXBase.HTMLAttributes<HTMLBceElementInputElement> {
    'template'?: Block.ElementInput.Template;
    'value': any;
  }
  interface BceElementInputTemplate extends JSXBase.HTMLAttributes<HTMLBceElementInputTemplateElement> {
    'answer'?: string;
    'hasAnswer'?: boolean;
    'labelAnswer'?: string;
    'labelHasAnswer'?: string;
    'labelMax'?: string;
    'labelMin'?: string;
    'labelMultiline'?: string;
    'labelQuestion'?: string;
    'labelRequired'?: string;
    'max'?: number | null;
    'min'?: number | null;
    'multiline'?: boolean;
    'placeholderAnswer'?: string;
    'question'?: string;
    'required'?: boolean;
    'value'?: InputTemplate;
  }
  interface BceElementLinkTemplate extends JSXBase.HTMLAttributes<HTMLBceElementLinkTemplateElement> {
    'href'?: string;
    'icon'?: string;
    'labelHref'?: string;
    'labelIcon'?: string;
    'labelText'?: string;
    'placeholderHref'?: string;
    'placeholderIcon'?: string;
    'placeholderText'?: string;
    'text'?: string;
    'value'?: LinkTemplate;
  }
  interface BceElementMatrix extends JSXBase.HTMLAttributes<HTMLBceElementMatrixElement> {
    'template'?: Block.ElementMatrix.Template;
    'value': Array<number | null>;
  }
  interface BceElementMatrixTemplate extends JSXBase.HTMLAttributes<HTMLBceElementMatrixTemplateElement> {
    'columns'?: MatrixTemplate['columns'];
    'labelColumns'?: string;
    'labelOCAddButton'?: string;
    'labelOCImage'?: string;
    'labelOCOther'?: string;
    'labelOCRemoveButton'?: string;
    'labelQuestion'?: string;
    'labelRequired'?: string;
    'labelRows'?: string;
    'optionIcon'?: string;
    'placeholderColumns'?: string;
    'placeholderRows'?: string;
    'question'?: string;
    'required'?: boolean;
    'rows'?: MatrixTemplate['rows'];
    'value'?: MatrixTemplate;
  }
  interface BceElementRadio extends JSXBase.HTMLAttributes<HTMLBceElementRadioElement> {
    'template'?: Block.ElementRadio.Template;
    'value'?: { index: number; text: string };
  }
  interface BceElementRadioTemplate extends JSXBase.HTMLAttributes<HTMLBceElementRadioTemplateElement> {
    'answer'?: RadioTemplate['answer'];
    'labelOCAddButton'?: string;
    'labelOCImage'?: string;
    'labelOCOther'?: string;
    'labelOCRemoveButton'?: string;
    'labelOrientation'?: string;
    'labelOrientationH'?: string;
    'labelOrientationV'?: string;
    'labelQuestion'?: string;
    'labelRequired'?: string;
    'optionIcon'?: string;
    'options'?: never[];
    'orientation'?: RadioTemplate['orientation'];
    'other'?: boolean;
    'placeholderOptions'?: string;
    'question'?: string;
    'required'?: boolean;
    'value'?: RadioTemplate;
  }
  interface BceElementSlider extends JSXBase.HTMLAttributes<HTMLBceElementSliderElement> {
    'template'?: Block.ElementSlider.Template;
    'value': any;
  }
  interface BceElementSliderTemplate extends JSXBase.HTMLAttributes<HTMLBceElementSliderTemplateElement> {
    'labelMax'?: string;
    'labelMaxText'?: string;
    'labelMin'?: string;
    'labelMinText'?: string;
    'labelQuestion'?: string;
    'labelRequired'?: string;
    'labelStep'?: string;
    'max'?: number;
    'maxText'?: string;
    'min'?: number;
    'minText'?: string;
    'question'?: string;
    'required'?: boolean;
    'step'?: number;
    'value'?: SliderTemplate;
  }
  interface BceElementSortTemplate extends JSXBase.HTMLAttributes<HTMLBceElementSortTemplateElement> {
    'dual'?: boolean;
    'feedbackCorrect'?: string;
    'feedbackIncorrect'?: string;
    'labelDual'?: string;
    'labelFeedbackCorrect'?: string;
    'labelFeedbackIncorrect'?: string;
    'labelOCAddButton'?: string;
    'labelOCImage'?: string;
    'labelOCOther'?: string;
    'labelOCRemoveButton'?: string;
    'labelQuestion'?: string;
    'labelRequired'?: string;
    'optionIcon'?: string;
    'options'?: SortTemplate['options'];
    'placeholderFeedbackCorrect'?: string;
    'placeholderFeedbackIncorrect'?: string;
    'placeholderOptions'?: string;
    'question'?: string;
    'required'?: boolean;
    'value'?: SortTemplate;
  }
  interface BceElementTableTemplate extends JSXBase.HTMLAttributes<HTMLBceElementTableTemplateElement> {
    'columns'?: never[];
    'labelMaxRows'?: string;
    'labelOCAddButton'?: string;
    'labelOCImage'?: string;
    'labelOCOther'?: string;
    'labelOCRemoveButton'?: string;
    'labelOrientation'?: string;
    'labelOrientationH'?: string;
    'labelOrientationV'?: string;
    'labelQuestion'?: string;
    'labelRequired'?: string;
    'maxRows'?: number;
    'optionIcon'?: string;
    'orientation'?: TableTemplate['orientation'];
    'placeholderColumns'?: string;
    'question'?: string;
    'required'?: boolean;
    'value'?: TableTemplate;
  }
  interface BceElementText extends JSXBase.HTMLAttributes<HTMLBceElementTextElement> {
    'template'?: Block.ElementText.Template;
  }
  interface BceElementTextTemplate extends JSXBase.HTMLAttributes<HTMLBceElementTextTemplateElement> {
    'placeholderText'?: string;
    'text'?: string;
    'value'?: TextTemplate;
  }
  interface BceElementVideo extends JSXBase.HTMLAttributes<HTMLBceElementVideoElement> {
    'resolveLocation'?: ResolveLocation;
    'template'?: Block.ElementVideo.Template;
  }
  interface BceElementVideoTemplate extends JSXBase.HTMLAttributes<HTMLBceElementVideoTemplateElement> {
    'autoplay'?: boolean;
    'labelAutoplay'?: string;
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'location'?: string;
    'placeholderLocation'?: string;
    'value'?: VideoTemplate;
  }
  interface BceFlowEditor extends JSXBase.HTMLAttributes<HTMLBceFlowEditorElement> {
    'createId'?: () => string;
    'current'?: string;
    'currentVersion'?: string;
    'existing'?: string[];
    'labelActionAdd'?: string;
    'labelActionDelete'?: string;
    'labelActionEnd'?: string;
    'labelActionOpen'?: string;
    'labelConditionOther'?: string;
    'labelConditionScreen'?: string;
    'labelOptionConditional'?: string;
    'labelOptionEnd'?: string;
    'labelOptionNext'?: string;
    'labelSubtitle'?: string;
    'labelTitle'?: string;
    'onComplete-module'?: (event: CustomEvent<any>) => void;
    'onNode'?: (event: CustomEvent<Reference>) => void;
    'value'?: ModuleFlow;
  }
  interface BceFlowGraph extends JSXBase.HTMLAttributes<HTMLBceFlowGraphElement> {
    'createId'?: () => string;
    'current'?: string;
    'editable'?: boolean;
    'existing'?: string[];
    'onDelete'?: (event: CustomEvent<Reference>) => void;
    'onNode'?: (event: CustomEvent<Reference>) => void;
    'value'?: ModuleFlow;
  }
  interface BceModuleEditor extends JSXBase.HTMLAttributes<HTMLBceModuleEditorElement> {
    'allowAdvanced'?: boolean;
    'categories'?: { value: string; label: string }[];
    'existing'?: string[];
    'labelAdvancedHide'?: string;
    'labelAdvancedShow'?: string;
    'labelCategory'?: string;
    'labelDescription'?: string;
    'labelGraphSubtitle'?: string;
    'labelGraphTitle'?: string;
    'labelImage'?: string;
    'labelName'?: string;
    'labelSubtitle'?: string;
    'labelTitle'?: string;
    'value'?: Module;
  }
  interface BceOptionCreator extends JSXBase.HTMLAttributes<HTMLBceOptionCreatorElement> {
    'allowOther'?: boolean;
    'icon'?: string;
    'label'?: string;
    'labelOCAddButton'?: string;
    'labelOCImage'?: string;
    'labelOCOther'?: string;
    'labelOCRemoveButton'?: string;
    'onFile'?: (event: CustomEvent<File>) => void;
    'onFile-delete'?: (event: CustomEvent<{ id: string; path: string }>) => void;
    'onOther'?: (event: CustomEvent<boolean>) => void;
    'other'?: boolean;
    'placeholder'?: string;
    'value'?: Block.ElementOption[];
  }
  interface BceUploadInput extends JSXBase.HTMLAttributes<HTMLBceUploadInputElement> {
    'labelDeleteButton'?: string;
    'labelUploadButton'?: string;
    'onFile'?: (event: CustomEvent<File>) => void;
    'onFile-delete'?: (event: CustomEvent<{ id: string; path: string }>) => void;
    'placeholder'?: string;
    'value'?: string;
  }

  interface IntrinsicElements {
    'bce-block-editor': BceBlockEditor;
    'bce-element': BceElement;
    'bce-element-audio': BceElementAudio;
    'bce-element-audio-template': BceElementAudioTemplate;
    'bce-element-checkbox': BceElementCheckbox;
    'bce-element-checkbox-template': BceElementCheckboxTemplate;
    'bce-element-download-template': BceElementDownloadTemplate;
    'bce-element-fab': BceElementFab;
    'bce-element-header': BceElementHeader;
    'bce-element-header-template': BceElementHeaderTemplate;
    'bce-element-image': BceElementImage;
    'bce-element-image-template': BceElementImageTemplate;
    'bce-element-input': BceElementInput;
    'bce-element-input-template': BceElementInputTemplate;
    'bce-element-link-template': BceElementLinkTemplate;
    'bce-element-matrix': BceElementMatrix;
    'bce-element-matrix-template': BceElementMatrixTemplate;
    'bce-element-radio': BceElementRadio;
    'bce-element-radio-template': BceElementRadioTemplate;
    'bce-element-slider': BceElementSlider;
    'bce-element-slider-template': BceElementSliderTemplate;
    'bce-element-sort-template': BceElementSortTemplate;
    'bce-element-table-template': BceElementTableTemplate;
    'bce-element-text': BceElementText;
    'bce-element-text-template': BceElementTextTemplate;
    'bce-element-video': BceElementVideo;
    'bce-element-video-template': BceElementVideoTemplate;
    'bce-flow-editor': BceFlowEditor;
    'bce-flow-graph': BceFlowGraph;
    'bce-module-editor': BceModuleEditor;
    'bce-option-creator': BceOptionCreator;
    'bce-upload-input': BceUploadInput;
  }
}

export { LocalJSX as JSX };


declare module "@stencil/core" {
  export namespace JSX {
    interface IntrinsicElements extends LocalJSX.IntrinsicElements {}
  }
}


