import { Role } from '../../types/internal/user/Role';
import { PermissionCheckStatus } from '../../types/internal/permissions/PermissionCheckStatus';
import { HmppsUser } from '../../types/internal/user/HmppsUser';
import Prisoner from '../../data/hmppsPrisonerSearch/interfaces/Prisoner';
export type PrisonerPermissionStatusFunction = (user: HmppsUser, prisoner: Prisoner) => PermissionCheckStatus;
export interface PrisonerPermissionConditions {
    allRolesRequired?: Role[];
    atLeastOneRoleRequiredFrom?: Role[];
    overridingCondition?: PrisonerPermissionStatusFunction;
    ifRestrictedPatient: PrisonerPermissionStatusFunction;
    ifReleasedPrisoner: PrisonerPermissionStatusFunction;
    ifTransferringPrisoner: PrisonerPermissionStatusFunction;
    ifPrisonNotInCaseload: PrisonerPermissionStatusFunction;
    ifPrisonInCaseload: PrisonerPermissionStatusFunction;
}
export declare function getPermissionStatus(user: HmppsUser, prisoner: Prisoner, conditions: PrisonerPermissionConditions): PermissionCheckStatus;
