import { Signal, WritableSignal } from '@angular/core';
import { Subject } from 'rxjs';
import { Accessor } from '../../accessor/interface';
import { ArrayAccessors } from '../../type-utils';
import { AbstractAccessor, AccessorConfig, AccessorCreateOptions } from '../abstract-accessor';
import { SignalProperties } from './interface';
export declare class SignalAccessor<TSignal extends WritableSignal<any> = WritableSignal<any>> extends AbstractAccessor<SignalProperties<TSignal>> {
    private valueSignal;
    arrayAccessors: WritableSignal<Array<Accessor<SignalProperties<TSignal>, SignalProperties<TSignal>>>>;
    protected signalObservable: Subject<{
        new: SignalProperties<TSignal>;
        previous: SignalProperties<TSignal>;
    }>;
    protected previous: Signal<SignalProperties<TSignal>>;
    constructor(valueSignal: TSignal, options?: AccessorConfig<SignalProperties<TSignal>>);
    getAccessors(): ArrayAccessors<any>;
    protected createAccessor<TKey extends keyof SignalProperties<TSignal>>(key: TKey, options: AccessorCreateOptions): Accessor<SignalProperties<TSignal>, SignalProperties<TSignal>[TKey]>;
    protected createRootAccessor(options: AccessorCreateOptions): Accessor<SignalProperties<TSignal>, any>;
}
