import { ApprovalParticipantSnapshot, ApprovalProcessSnapshot } from './approval-process';
export type { ApprovalMethod, ApprovalFlowStatus, ApprovalParticipantStatus, ApprovalParticipantRole, ApprovalProcessStatus, ApprovalFlowSnapshot, ApprovalParticipantSnapshot, ApprovalProcessSnapshot, } from './approval-process';
export type PlanOperationType = 'EDIT' | 'DELETE';
export type SharedPlanOperationStep = 'PENDING' | 'PENDING_APPROVALS' | 'PENDING_AUTHENTICATION' | 'PENDING_MODERATION' | 'ACCESS_GRANTED' | 'EXPIRED' | 'COMPLETED' | 'ABORTED' | 'FAILED';
export interface SharedPlanOperationProcessProps {
    id: string;
    planId: string;
    operationType: PlanOperationType;
    step: SharedPlanOperationStep;
    approvalProcess: ApprovalProcessSnapshot;
    operationWindowExpiresAt?: Date;
    createdAt: Date;
}
export declare class SharedPlanOperationProcess {
    private readonly props;
    constructor(props: SharedPlanOperationProcessProps);
    get id(): string;
    get planId(): string;
    get operationType(): PlanOperationType;
    get step(): SharedPlanOperationStep;
    get approvalProcess(): ApprovalProcessSnapshot;
    get operationWindowExpiresAt(): Date | undefined;
    get createdAt(): Date;
    get needsApproval(): boolean;
    get authenticatorParticipant(): ApprovalParticipantSnapshot | undefined;
    get moderatorParticipants(): ApprovalParticipantSnapshot[];
    get isAuthenticationComplete(): boolean;
    get isAccessGranted(): boolean;
    get isExpired(): boolean;
    static create(props: Omit<SharedPlanOperationProcessProps, 'step'>): SharedPlanOperationProcess;
    withStep(step: SharedPlanOperationStep): SharedPlanOperationProcess;
    withApprovalProcess(approvalProcess: ApprovalProcessSnapshot): SharedPlanOperationProcess;
    withAccessGranted(operationWindowExpiresAt?: Date): SharedPlanOperationProcess;
    toPrimitives(): SharedPlanOperationProcessProps;
    static fromPrimitives(raw: any): SharedPlanOperationProcess;
}
