import { LitElement } from 'lit'; import { Environment } from '../utilities/environment.js'; type EventTypeRequiresDetail = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? never : Partial extends GlobalEventHandlersEventMap[T]['detail'] ? never : T : never : never; type EventTypeDoesNotRequireDetail = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? T : Partial extends GlobalEventHandlersEventMap[T]['detail'] ? T : never : T : T; type EventTypesWithRequiredDetail = { [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail]: true; }; type EventTypesWithoutRequiredDetail = { [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail]: true; }; type WithRequired = T & { [P in K]-?: T[P]; }; type TerraEventInit = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? CustomEventInit : Partial extends GlobalEventHandlersEventMap[T]['detail'] ? CustomEventInit : WithRequired, 'detail'> : CustomEventInit : CustomEventInit; type GetCustomEventType = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent ? GlobalEventHandlersEventMap[T] : CustomEvent : CustomEvent; export default class TerraElement extends LitElement { #private; dir: string; lang: string; environment?: Environment; bearerToken?: string; isVisible: boolean; connectedCallback(): void; disconnectedCallback(): void; /** * Called when the component is visible on the page * Example: if the component is in a dialog, this will be triggered the first time the dialog opens */ firstVisible(): void; /** Emits a custom event with more convenient defaults. */ emit(name: EventTypeDoesNotRequireDetail, options?: TerraEventInit | undefined): GetCustomEventType; emit(name: EventTypeRequiresDetail, options: TerraEventInit): GetCustomEventType; static version: any; static define(name: string, elementConstructor?: typeof TerraElement, options?: ElementDefinitionOptions): void; static dependencies: Record; constructor(); } export interface TerraFormControl extends TerraElement { name: string; value: unknown; disabled?: boolean; defaultValue?: unknown; defaultChecked?: boolean; form?: string; pattern?: string; min?: number | string | Date; max?: number | string | Date; step?: number | 'any'; required?: boolean; minlength?: number; maxlength?: number; readonly validity: ValidityState; readonly validationMessage: string; checkValidity: () => boolean; getForm: () => HTMLFormElement | null; reportValidity: () => boolean; setCustomValidity: (message: string) => void; } export {};