import ProcessStep, { ProcessStepPrimitiveProps } from '../../../protection-plan/domain/models/proccess-step';
export interface AppProcessProps<ChildStepProps> {
    id: string;
    steps: ProcessStep<ChildStepProps>[];
    activeStep: number;
}
export interface AppProcessPrimitiveProps<StepProps> extends Omit<AppProcessProps<StepProps>, 'steps'> {
    steps: ProcessStepPrimitiveProps[];
}
export default class AppProcess<ChildProcessProps, ChildStepProps> {
    protected props: AppProcessProps<ChildStepProps> & ChildProcessProps;
    constructor(props: AppProcessProps<ChildStepProps> & ChildProcessProps);
    get id(): string;
    get completedStepCount(): number;
    get pendingStepCount(): number;
    get inProgressStep(): ProcessStep<ChildStepProps> | undefined;
    get stepCount(): number;
    get steps(): ProcessStep<ChildStepProps>[];
    get isCompleted(): boolean;
    get currentStep(): ProcessStep<ChildStepProps>;
    static fromPrimitives<ChildStepProps>(props: AppProcessPrimitiveProps<ChildStepProps>): AppProcess<{
        steps: ProcessStep<unknown>[];
        id: string;
        activeStep: number;
    }, unknown>;
    findStep(id: string): ProcessStep<ChildStepProps> | undefined;
    addStep(step: ProcessStep<ChildStepProps>): void;
    toPrimitives(): AppProcessPrimitiveProps<ChildStepProps>;
}
