import { ObjectUpdateType } from '../ObjectUpdateType';
import { System } from '../system';
import { Callback } from '../types/Callback';
import { Dict } from '../types/Dict';
import { J } from '../types/interface/J';
import { V } from '../types/interface/V';
import { Unlisten } from '../types/Unlisten';
import { Component__, ComponentEE } from './Component';
import { ION, Opt } from './Unit';
export type Stateful_EE<I extends Dict<any> = any> = {
    set: [keyof I, I[keyof I]];
};
export type StatefulEvents<_EE extends Dict<any[]>> = ComponentEE<_EE & Stateful_EE> & Stateful_EE;
export declare class Stateful<I extends Dict<any> = any, O extends Dict<any> = any, _J extends Dict<any> = {}, _EE extends StatefulEvents<_EE> = StatefulEvents<Stateful_EE>> extends Component__<I, O, _EE> implements J<I>, V {
    __: string[];
    protected _defaultState: Partial<Record<keyof I, any>>;
    protected _state: Partial<Record<keyof I, any>>;
    constructor({ i, o }: ION<I, O>, opt: Opt, system: System, id: string);
    subscribe(path: string[], name: any, listener: (type: ObjectUpdateType, path: string[], key: string, data: any) => void): Unlisten;
    _set_from_input: boolean;
    onDataInputData<K extends keyof I>(name: K, data: any): void;
    onDataInputDrop<K extends keyof I>(name: K): void;
    onRefInputData(name: any, data: any): void;
    onRefInputDrop(name: any): void;
    get<K extends keyof I>(name: K): any;
    read(callback: Callback<any>): void;
    write(data: any, callback: Callback): void;
    set<K extends keyof I>(name: K, data: any, auto?: boolean): void;
    hasKey<K extends keyof I>(name: K): boolean;
    delete<K extends keyof I>(name: K): Promise<void>;
    deepSet(path: string[], data: any): void;
    deepGet(path: string[]): any;
    deepDelete(path: string[]): void;
    deepHas(path: string[]): boolean;
    keys(): string[];
    setPinIgnored(): void;
    snapshotSelf(): Dict<any>;
    restoreSelf(state: Dict<any>): void;
}
