/* 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.core';
import {
  FormChangedEventPayload,
} from './components/pwc-dynamic-form/FormChangedEventPayload';
import {
  FormValuesType,
} from './components/pwc-dynamic-form/FormValuesType';
import {
  ButtonItemConfig,
} from './components/pwc-dynamic-form-buttons/ButtonItemConfig';
import {
  ContentItemConfig,
} from './components/pwc-dynamic-form-field/ContentItemConfig';
import {
  FieldChangedEventPayload,
} from './components/pwc-dynamic-form-field/FieldChangedEventPayload';

export namespace Components {
  interface PwcDynamicForm {
    'getFieldValues': () => Promise<FormValuesType>;
  }
  interface PwcDynamicFormButtons {
    'items': string | ButtonItemConfig[];
  }
  interface PwcDynamicFormContent {
    'getFieldRefs': () => Promise<HTMLPwcDynamicFormFieldElement[]>;
    'items': string | ContentItemConfig[];
  }
  interface PwcDynamicFormField {
    'config': ContentItemConfig;
    'getValue': () => Promise<string | boolean | string[]>;
  }
}

declare global {


  interface HTMLPwcDynamicFormElement extends Components.PwcDynamicForm, HTMLStencilElement {}
  var HTMLPwcDynamicFormElement: {
    prototype: HTMLPwcDynamicFormElement;
    new (): HTMLPwcDynamicFormElement;
  };

  interface HTMLPwcDynamicFormButtonsElement extends Components.PwcDynamicFormButtons, HTMLStencilElement {}
  var HTMLPwcDynamicFormButtonsElement: {
    prototype: HTMLPwcDynamicFormButtonsElement;
    new (): HTMLPwcDynamicFormButtonsElement;
  };

  interface HTMLPwcDynamicFormContentElement extends Components.PwcDynamicFormContent, HTMLStencilElement {}
  var HTMLPwcDynamicFormContentElement: {
    prototype: HTMLPwcDynamicFormContentElement;
    new (): HTMLPwcDynamicFormContentElement;
  };

  interface HTMLPwcDynamicFormFieldElement extends Components.PwcDynamicFormField, HTMLStencilElement {}
  var HTMLPwcDynamicFormFieldElement: {
    prototype: HTMLPwcDynamicFormFieldElement;
    new (): HTMLPwcDynamicFormFieldElement;
  };
  interface HTMLElementTagNameMap {
    'pwc-dynamic-form': HTMLPwcDynamicFormElement;
    'pwc-dynamic-form-buttons': HTMLPwcDynamicFormButtonsElement;
    'pwc-dynamic-form-content': HTMLPwcDynamicFormContentElement;
    'pwc-dynamic-form-field': HTMLPwcDynamicFormFieldElement;
  }
}

declare namespace LocalJSX {
  interface PwcDynamicForm {
    'onFormChanged'?: (event: CustomEvent<FormChangedEventPayload>) => void;
  }
  interface PwcDynamicFormButtons {
    'items'?: string | ButtonItemConfig[];
  }
  interface PwcDynamicFormContent {
    'items'?: string | ContentItemConfig[];
  }
  interface PwcDynamicFormField {
    'config'?: ContentItemConfig;
    'onFieldChanged'?: (event: CustomEvent<FieldChangedEventPayload>) => void;
  }

  interface IntrinsicElements {
    'pwc-dynamic-form': PwcDynamicForm;
    'pwc-dynamic-form-buttons': PwcDynamicFormButtons;
    'pwc-dynamic-form-content': PwcDynamicFormContent;
    'pwc-dynamic-form-field': PwcDynamicFormField;
  }
}

export { LocalJSX as JSX };


declare module "@stencil/core" {
  export namespace JSX {
    interface IntrinsicElements {
      'pwc-dynamic-form': LocalJSX.PwcDynamicForm & JSXBase.HTMLAttributes<HTMLPwcDynamicFormElement>;
      'pwc-dynamic-form-buttons': LocalJSX.PwcDynamicFormButtons & JSXBase.HTMLAttributes<HTMLPwcDynamicFormButtonsElement>;
      'pwc-dynamic-form-content': LocalJSX.PwcDynamicFormContent & JSXBase.HTMLAttributes<HTMLPwcDynamicFormContentElement>;
      'pwc-dynamic-form-field': LocalJSX.PwcDynamicFormField & JSXBase.HTMLAttributes<HTMLPwcDynamicFormFieldElement>;
    }
  }
}


