import ProcessStep, { ProcessStepPrimitiveProps } from '../../../../../personal-configuration/modules/protection-plan/domain/models/proccess-step';
import { SharedPlanShare, SharedPlanShareProps } from './shared-plan-share';
import { CustodianSharePair } from '../services/shared-plan-shares-generator';
export type SharedPlanConfigurationStepId = 'SHARES_CREATION' | 'SHARES_DISTRIBUTION' | "FINALIZE";
export interface StepErrorEntry {
    message: string;
    description?: string;
}
export interface SharedPlanConfigurationProcessProps {
    id: string;
    planId: string;
    steps: ProcessStep<any>[];
    activeStep: number;
    stepErrors?: Record<string, StepErrorEntry>;
    stepsAttempts?: Record<string, number>;
    createdAt: Date;
    symmetricKey?: string;
    shares?: SharedPlanShare[];
    custodianPair?: CustodianSharePair;
}
export interface SharedPlanConfigurationProcessPrimitiveProps {
    id: string;
    planId: string;
    steps: ProcessStepPrimitiveProps[];
    activeStep: number;
    stepErrors?: Record<string, StepErrorEntry | string>;
    stepsAttempts?: Record<string, number>;
    createdAt: Date;
    symmetricKey?: string;
    shares?: SharedPlanShareProps[];
    custodianPair?: CustodianSharePair;
}
export declare class SharedPlanConfigurationProcess {
    private props;
    constructor(props: SharedPlanConfigurationProcessProps);
    get id(): string;
    get planId(): string;
    get steps(): ProcessStep<any>[];
    get createdAt(): Date;
    get symmetricKey(): string | undefined;
    get shares(): SharedPlanShare[] | undefined;
    get custodianPair(): CustodianSharePair | undefined;
    setCustodianPair(pair: CustodianSharePair): void;
    setSymmetricKey(key: string): void;
    setShares(shares: SharedPlanShare[]): void;
    get activeStepIndex(): number;
    get currentStep(): ProcessStep<any>;
    get isCompleted(): boolean;
    get hasErrors(): boolean;
    static create(planId: string): SharedPlanConfigurationProcess;
    static fromPrimitives(props: SharedPlanConfigurationProcessPrimitiveProps): SharedPlanConfigurationProcess;
    start(): void;
    completeStep(step: ProcessStep<any>): void;
    setStepError(id: string, entry: StepErrorEntry): void;
    getStepError(id: string): StepErrorEntry | undefined;
    cleanStepError(id: string): void;
    updateStepAttempt(id: string): void;
    stepCompleted(id: string): boolean | undefined;
    toPrimitives(): SharedPlanConfigurationProcessPrimitiveProps;
}
