import type { EventEmitter } from '../../stencil-public-runtime'; import type { JSXBase } from '../../stencil-public-runtime'; type Callback = (value?: T) => void; export type StrictFields = { [K in keyof T]-?: NonNullable; }; export type InternalOf

= { [K in keyof P as K extends `__input_${string}` | '__propInternal__' ? never : K]: P[K]; }; type ExternalOf

= { [K in keyof P as K extends `__input_${string}` | '__propInternal__' ? never : K]: `__input_${K & string}` extends keyof P ? NonNullable : P[K]; }; type PropsDefinition = { Optional?: Record; Required?: Record; }; export interface ComponentApi { Callbacks?: Record unknown>; Emitters?: Record; Listeners?: Record; Methods?: Record unknown>; Props?: PropsDefinition; Refs?: Record; States?: Record; } type PropsEntry = T['Props'] extends PropsDefinition ? T['Props'][K] extends Record ? T['Props'][K] : Record : Record; type RequiredProps = PropsEntry; type OptionalProps = PropsEntry; type AllProps = RequiredProps & OptionalProps; export type ResolvedProps = InternalOf> & Partial>>; export type ResolvedInputProps = ExternalOf> & Partial>>; type ApiField = T[K] extends Record ? T[K] : Record; type ExtractCallbacks = ApiField; type ExtractEmitters = ApiField; type ExtractListeners = ApiField; type ExtractMethods = ApiField; type ExtractRefs = ApiField; type ExtractStates = InternalOf>; type InternalProps = InternalOf>; type ExternalProps = ExternalOf>; type PromiseMethod = { [K in keyof Methods]: Methods[K] extends (...args: infer A) => infer R ? (...args: A) => Promise> : Methods[K]; }; type ComponentPropsRequired = { [K in keyof Props as `_${Lowercase}`]: Props[K]; }; type ComponentPropsOptional = { [K in keyof Props as `_${Lowercase}`]?: Props[K]; }; type ComponentProps = ComponentPropsRequired>> & ComponentPropsOptional>>; type ComponentWatchers = { [K in keyof Props as `watch${Capitalize}`]: Callback; }; type ComponentEmitters = { [K in keyof Emitters as `${Lowercase}`]: EventEmitter; }; type ComponentListeners = { [K in keyof Listeners as `on${Capitalize}`]: (event: Listeners[K]) => void; }; export type WebComponentInterface = { componentWillLoad(): void; } & ComponentProps & StrictFields> & ComponentWatchers> & ComponentEmitters> & PromiseMethod> & ComponentListeners>; type ComponentCallbacks = { [K in keyof Callbacks as `handle${Capitalize}`]: Callbacks[K]; }; type ComponentRefs = { [K in keyof Refs as `ref${Capitalize}`]: (element?: Refs[K]) => void; }; type FunctionalComponentEmitters = { [K in keyof Emitters as `on${Capitalize}`]: EventEmitter; }; export type FunctionalComponentProps = StrictFields> & StrictFields> & ComponentCallbacks> & ComponentRefs> & FunctionalComponentEmitters> & Partial, keyof InternalProps | keyof ExtractStates>>; type ControllerCallbackHandlers = { [K in keyof Callbacks as `handle${Capitalize}`]: (element?: Callbacks[K]) => void; }; type ControllerListeners = { [K in keyof Listeners as `on${Capitalize}`]: (event: Listeners[K]) => void; }; type ControllerRefSetters = { [K in keyof Refs as `set${Capitalize}Ref`]: (element?: Refs[K]) => void; }; export type ControllerInterface = { componentWillLoad(props: ResolvedInputProps): void; getProps(): StrictFields>; } & ComponentWatchers> & ControllerCallbackHandlers> & ControllerListeners> & ExtractMethods & ControllerRefSetters>; export {};