import { AssignmentReasonEnum } from '../../../../prisma/enums';
export declare enum RRReassignmentType {
    ROUND_ROBIN = "round_robin",
    MANUAL = "manual"
}
export default class AssignmentReasonRecorder {
    /**
     * We should use decorators to wrap the methods with withReporting
     * but we can't don't have support for static methods in decorators
     * so this is a workaround to wrap the methods with withReporting.
     */
    static routingFormRoute: (args_0: {
        bookingId: number;
        routingFormResponseId: number;
        organizerId: number;
        teamId: number;
        isRerouting: boolean;
        reroutedByEmail?: string | null;
    }) => Promise<{
        reasonEnum: "ROUTING_FORM_ROUTING" | "REROUTED";
        reasonString: string;
    } | undefined>;
    static _routingFormRoute({ bookingId, routingFormResponseId, organizerId, teamId, isRerouting, reroutedByEmail, }: {
        bookingId: number;
        routingFormResponseId: number;
        organizerId: number;
        teamId: number;
        isRerouting: boolean;
        reroutedByEmail?: string | null;
    }): Promise<{
        reasonEnum: "ROUTING_FORM_ROUTING" | "REROUTED";
        reasonString: string;
    } | undefined>;
    static CRMOwnership: (args_0: {
        bookingId: number;
        crmAppSlug: string;
        teamMemberEmail: string;
        recordType: string;
        routingFormResponseId: number;
    }) => Promise<{
        reasonEnum: AssignmentReasonEnum;
        reasonString: string;
    } | undefined>;
    static _CRMOwnership({ bookingId, crmAppSlug, teamMemberEmail, recordType, routingFormResponseId, }: {
        bookingId: number;
        crmAppSlug: string;
        teamMemberEmail: string;
        recordType: string;
        routingFormResponseId: number;
    }): Promise<{
        reasonEnum: AssignmentReasonEnum;
        reasonString: string;
    } | undefined>;
    static roundRobinReassignment: (args_0: {
        bookingId: number;
        reassignById: number;
        reassignReason?: string;
        reassignmentType: RRReassignmentType;
    }) => Promise<{
        reasonEnum: "REASSIGNED" | "RR_REASSIGNED";
        reasonString: string;
    }>;
    static _roundRobinReassignment({ bookingId, reassignById, reassignReason, reassignmentType, }: {
        bookingId: number;
        reassignById: number;
        reassignReason?: string;
        reassignmentType: RRReassignmentType;
    }): Promise<{
        reasonEnum: "REASSIGNED" | "RR_REASSIGNED";
        reasonString: string;
    }>;
}
//# sourceMappingURL=AssignmentReasonRecorder.d.ts.map