import type { ValueOf } from 'clientnode'; import type BasePropertyTypes from 'clientnode/property-types'; import type { ForwardRefExoticComponent, ReactElement, ReactNode, RefAttributes, MutableRefObject as RefObject } from 'react'; import type { ComponentAdapter, ValidationMapping } from 'web-component-wrapper/type'; import type { BaseModel, ModelState as BaseModelState, Properties as BaseProperties, State as BaseState, StaticWebComponent } from '../../type'; import type { Properties as TextInputProperties, Props as TextInputProps } from '../TextInput/type'; export interface PropertiesItem { model?: { state?: TS; value?: T; }; value?: T; } export interface CreateOptions { index: number; properties: IP; values?: Array | null; } export interface CreateItemOptions, IP> extends CreateOptions { item: Partial

; } export interface CreatePrototypeOptions, IP> extends CreateItemOptions { lastValue: null | T | undefined; } export interface ModelState extends BaseModelState { invalidMaximumNumber: boolean; invalidMinimumNumber: boolean; } export interface Model = PropertiesItem> extends BaseModel | null> { default?: Array

| null; maximumNumber: number; minimumNumber: number; state?: ModelState; writable: boolean; } export interface ChildrenOptions, IP> { index: number; inputsProperties: IP; properties: Partial

; } export interface Properties = BaseProperties> extends ModelState, Omit | null>, 'onChangeValue'> { default?: T; addIcon: string; removeIcon: string; children: (options: ChildrenOptions) => ReactNode; createItem: (options: CreateItemOptions) => P; createPrototype: (options: CreatePrototypeOptions) => P; maximumNumber: number; minimumNumber: number; model: Model; onChangeValue: (values: Array | null, event: unknown, properties: this) => void; value: Array

| null; writable: boolean; } export type PartialModel = BaseProperties> = Partial, 'state'> & { state?: Partial; }>; export type Props = BaseProperties> = Partial, 'model' | 'value'>> & { model?: PartialModel; value?: Array> | Array | null; }; export type DefaultProperties = TextInputProps> = Partial, 'default' | 'model' | 'value'>> & { model: Model; }; export type PropertyTypes = BaseProperties> = { [key in keyof Properties

]: ValueOf; }; export type State = BaseState>; export type Adapter = BaseProperties> = ComponentAdapter, State>; export type AdapterWithReferences = BaseProperties, RefType = unknown> = Adapter & { references: Array>; }; export interface Component extends Omit, 'propTypes'>, StaticWebComponent { = TextInputProperties>(props: Props & RefAttributes>): ReactElement; } export declare const propertyTypes: ValidationMapping; export declare const renderProperties: Array; export declare const defaultModel: Model>; export declare const defaultProperties: DefaultProperties;