import { Injector } from '@angular/core';
import { Logger } from '@anglr/common';
import { RelationsComponentEndpoints, RelationsComponentManager, RelationsComponentStateDebugInfo, RelationsDataTransferDebugInfo, RelationsDataTransferIdDebugInfo, RelationsDataTransferInstructionImpl, RelationsDebugger, RelationsProcessorComponent, RelationsProcessorComponentData, RelationsProcessorInputOutputData, RelationsStepDebugInfo } from '@anglr/dynamic/relations';
import { Dictionary } from '@jscrpt/common';
import { Observable, Subject } from 'rxjs';
import * as i0 from "@angular/core";
/**
 * Service used for debugging relations
 */
export declare class RelationsDebuggerImpl extends RelationsDebugger {
    /**
     * Instance of Angular injector
     */
    protected injector: Injector;
    /**
     * Instance of logger used for logging
     */
    protected logger: Logger | undefined | null;
    /**
     * Instance of relations component manager
     */
    protected ɵrelationsComponentManager: RelationsComponentManager | undefined | null;
    /**
     * Used for emitting changes in current step index
     */
    protected stepChangeSubject: Subject<void>;
    /**
     * Current step index for previewing of data
     */
    protected currentStepIndex: number;
    /**
     * Registered components by id and their internal ids for each step
     */
    protected components: Dictionary<string[]>[];
    /**
     * Array of steps recorded by debugger
     */
    protected steps: RelationsStepDebugInfo[];
    /**
     * Definition of component endpoints
     */
    protected componentDefs: Dictionary<RelationsComponentEndpoints>;
    /**
     * Gets instance of relations component manager
     */
    protected get relationsComponentManager(): RelationsComponentManager;
    /**
     * Occurs when current step index changes
     */
    get stepChange(): Observable<void>;
    /**
     * @inheritdoc
     */
    initialize(relations: Dictionary<RelationsProcessorComponentData>, backwardRelations: Dictionary<RelationsProcessorInputOutputData[]>): void;
    /**
     * @inheritdoc
     */
    registerComponent(id: string, component: RelationsProcessorComponent): void;
    /**
     * @inheritdoc
     */
    unregisterComponent(id: string, component: RelationsProcessorComponent): void;
    /**
     * @inheritdoc
     */
    transferData(transfer: RelationsDataTransferInstructionImpl & Partial<RelationsDataTransferIdDebugInfo>, options: RelationsDataTransferDebugInfo): void;
    /**
     * @inheritdoc
     */
    getCurrentComponents(): Dictionary<string[]>;
    /**
     * Gets component definition
     * @param id - Id of component which definition will be obtained
     */
    getComponentDef(id: string): RelationsComponentEndpoints | null;
    /**
     * @inheritdoc
     */
    getComponentState(id: string): RelationsComponentStateDebugInfo[];
    /**
     * @inheritdoc
     */
    getComponentRelationsOptions(id: string): unknown;
    /**
     * @inheritdoc
     */
    getLastStep(): RelationsStepDebugInfo | null;
    /**
     * @inheritdoc
     */
    getFirstStep(): RelationsStepDebugInfo | null;
    /**
     * @inheritdoc
     */
    getNextStep(): RelationsStepDebugInfo | null;
    /**
     * @inheritdoc
     */
    getPreviousStep(): RelationsStepDebugInfo | null;
    /**
     * @inheritdoc
     */
    getCurrentStep(): RelationsStepDebugInfo | null;
    /**
     * @inheritdoc
     */
    clearSteps(): void;
    /**
     * Reads component state
     * @param id - Id of component which state is read
     */
    protected readComponentState(id: string): void;
    /**
     * Sets component relations options
     * @param id - Id of component which state is read
     * @param relationsOptions - Instance of relations options to be set
     */
    protected setComponentRelationsOptions(id: string, relationsOptions: unknown): void;
    /**
     * Gets last step
     */
    protected getLastStepData(): RelationsStepDebugInfo | undefined | null;
    /**
     * Gets last components
     */
    protected getLastComponents(): Dictionary<string[]>;
    /**
     * Tries to get endpoints for component
     * @param id - Id of component whose endpoints are going to be obtained
     * @param component - Component which endpoints are going to be obtained
     */
    protected tryToGetEndpoints(id: string, component: RelationsProcessorComponent): void;
    /**
     * Adds input for component def
     * @param id - Id of component whose input definition will be added
     * @param input - Input name to be added
     */
    protected addInputDef(id: string, input: string): void;
    /**
     * Adds output for component def
     * @param id - Id of component whose output definition will be added
     * @param output - Output name to be added
     */
    protected addOutputDef(id: string, output: string): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<RelationsDebuggerImpl, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<RelationsDebuggerImpl>;
}
//# sourceMappingURL=relationsDebugger.service.d.ts.map