import * as React from 'react';
import { ExtendedInputElement } from '../ExtendedInputElement';
import { UpdateCallback } from '../IInputElement';
import { ValidationRule } from '../IValueInputElement';
import { InvalidValueChangeSubscription, ValueChangeSubscription } from '../Subscriptions';
import { IDynamicProps } from './IDynamicProps';
import { SingleValueInputElementWrapper } from './InternalPresentationComponents/SingleValueInputElementWrapper';
import { IOperativeProps } from './IOperativeProps';
import { ISingleValueInputElementConfiguration } from './ISingleInputElementConfiguration';
import { ISingleValueInputElement } from './ISingleValueInputElement';
import { ISingleValueInputElementProps } from './ISingleValueInputElementProps';
export declare class SingleValueInputElement<TValue, TOperativeProps, TDynamicProps = unknown> extends ExtendedInputElement<TValue, SingleValueInputElementWrapper<TValue, TOperativeProps, TDynamicProps>> implements ISingleValueInputElement<TValue, TOperativeProps, TDynamicProps> {
    private readonly _configuration;
    private readonly valueChangeSubscriptions;
    private readonly initialValueChangeSubscriptions;
    private readonly invalidValueChangeSubscriptions;
    private _dynamicProps;
    private _isInvalidated;
    constructor(config: ISingleValueInputElementConfiguration<TValue>, component: React.ComponentType<ISingleValueInputElementProps<TValue> & IOperativeProps<TOperativeProps> & IDynamicProps<TDynamicProps>>, props: TOperativeProps, update: UpdateCallback, ...validationRules: ValidationRule<TValue>[]);
    /** @inheritdoc */
    subscribeToValueChange(subscription: ValueChangeSubscription<TValue>): void;
    /** @inheritdoc */
    subscribeToInitialValueChange(subscription: ValueChangeSubscription<TValue>): void;
    /** @inheritdoc */
    subscribeToInvalidValueChange(subscription: InvalidValueChangeSubscription): void;
    /** @inheritdoc */
    protected setInternalValue(value: TValue, isInitial: boolean): void;
    /** @inheritdoc */
    protected resetInternalValue(): void;
    /** @inheritdoc */
    get hasChanges(): boolean;
    /** @inheritdoc */
    value: TValue;
    /** @inheritdoc */
    validationRules: ValidationRule<TValue>[];
    /** @inheritdoc */
    get isValid(): boolean;
    /** @inheritdoc */
    readonly componentToRender: React.ComponentType<ISingleValueInputElementProps<TValue> & IOperativeProps<TOperativeProps> & IDynamicProps<TDynamicProps>>;
    /** @inheritdoc */
    componentProps: TOperativeProps;
    /** @inheritdoc */
    getDynamicProps(): TDynamicProps;
    /** @inheritdoc */
    protected renderComponent(): JSX.Element;
    /** @inheritdoc */
    changeDynamicProps<K extends keyof TDynamicProps>(dynamicProps: Pick<TDynamicProps, K>): void;
    /** @inheritdoc */
    validate(): void;
    private setError;
    private valueIsValid;
    private invalidateInput;
}
