export interface PagedResult<T> {
    items: T[];
    totalCount: number;
    page: number;
    pageSize: number;
    totalPages: number;
    hasPrevious: boolean;
    hasNext: boolean;
}
export interface UserListDto {
    id: string;
    email: string;
    firstName: string;
    lastName: string;
    fullName: string;
    isActive: boolean;
    userType: string;
    roles: string[];
    lastLoginAt: string | null;
    createdAt: string;
    entraObjectId: string | null;
    lastEntraSyncAt: string | null;
    entraUserPurpose: string | null;
    membershipSource: 'Direct' | 'Group' | 'Both';
    primaryGroupId: string | null;
    primaryGroupName: string | null;
}
export interface UserDetailDto {
    id: string;
    email: string;
    firstName: string;
    lastName: string;
    fullName: string;
    isActive: boolean;
    userType: string;
    roles: RoleDto[];
    lastLoginAt: string | null;
    createdAt: string;
    updatedAt: string | null;
    isLocked: boolean;
    lockoutEnd: string | null;
    lastUnlockReason: number | null;
    lockedBy: string | null;
    lockedAt: string | null;
    isTemporarilyLocked: boolean;
    temporaryLockoutEnd: string | null;
    entraObjectId: string | null;
    authProvider: string | null;
    lastEntraSyncAt: string | null;
    entraUserPurpose: string | null;
    departmentId: string | null;
    departmentName: string | null;
    jobTitleId: string | null;
    jobTitleName: string | null;
    companyId: string | null;
    companyName: string | null;
    officeId: string | null;
    officeName: string | null;
    employeeId: string | null;
    employeeType: string | null;
    employeeHireDate: string | null;
    employeeOrgData: string | null;
    managerId: string | null;
    managerName: string | null;
    sponsors: string | null;
    phoneNumber: string | null;
    mobilePhone: string | null;
    faxNumber: string | null;
    streetAddress: string | null;
    city: string | null;
    state: string | null;
    postalCode: string | null;
    country: string | null;
    otherEmails: string | null;
    proxyAddresses: string | null;
    imAddresses: string | null;
    mailNickname: string | null;
    emailConfirmed: boolean;
    hasCompletedOnboarding: boolean;
    mustChangePassword: boolean;
}
export interface UserHistoryDto {
    id: string;
    actionCode: number;
    actionName: string;
    fieldChanged: string | null;
    oldValue: string | null;
    newValue: string | null;
    changedByUserId: string | null;
    changedByUserName: string | null;
    createdAt: string;
}
export interface UpdateProfileRequest {
    firstName?: string;
    lastName?: string;
}
export interface UpdateOrganizationRequest {
    departmentId?: string | null;
    departmentName?: string | null;
    jobTitleId?: string | null;
    jobTitleName?: string | null;
    companyId?: string | null;
    companyName?: string | null;
    officeId?: string | null;
    officeName?: string | null;
    managerId?: string | null;
}
export interface UpdateJobInfoRequest {
    employeeId?: string | null;
    employeeType?: string | null;
    employeeHireDate?: string | null;
    employeeOrgData?: string | null;
}
export interface UpdatePhonesRequest {
    phoneNumber?: string | null;
    mobilePhone?: string | null;
    faxNumber?: string | null;
}
export interface UpdateAddressRequest {
    streetAddress?: string | null;
    city?: string | null;
    state?: string | null;
    postalCode?: string | null;
    country?: string | null;
}
export interface UpdateContactRequest {
    otherEmails?: string | null;
    proxyAddresses?: string | null;
    imAddresses?: string | null;
    mailNickname?: string | null;
}
export interface ReferenceItemDto {
    id: string;
    code: string;
    name: string;
}
export interface ReferenceListDto {
    id: string;
    code: string;
    name: string;
    description: string | null;
    isActive: boolean;
    isFromEntra: boolean;
    entraValue: string | null;
    userCount: number;
    createdAt: string;
    tenantId: string | null;
    tenantName: string | null;
}
export interface OfficeListDto extends ReferenceListDto {
    address: string | null;
    city: string | null;
    country: string | null;
}
export interface CreateReferenceRequest {
    code: string;
    name: string;
    description?: string;
}
export interface CreateOfficeRequest extends CreateReferenceRequest {
    address?: string;
    city?: string;
    country?: string;
}
export interface UpdateReferenceRequest {
    name: string;
    description?: string;
}
export interface UpdateOfficeRequest extends UpdateReferenceRequest {
    address?: string;
    city?: string;
    country?: string;
}
export interface OrganizationReferencesDto {
    departments: ReferenceItemDto[];
    companies: ReferenceItemDto[];
    jobTitles: ReferenceItemDto[];
    offices: ReferenceItemDto[];
    managers: ReferenceItemDto[];
}
export declare const UnlockReason: {
    readonly PasswordResetMalfunction: 1;
    readonly FalsePositive: 2;
    readonly UrgentBusinessNeed: 3;
    readonly TechnicalSystemError: 4;
    readonly SupportTicketVerified: 5;
};
export type UnlockReason = typeof UnlockReason[keyof typeof UnlockReason];
export interface UnlockAccountRequest {
    reason: UnlockReason;
    mustChangePassword: boolean;
}
export interface CreateUserRequest {
    email: string;
    password: string;
    firstName: string;
    lastName: string;
    roleIds?: string[];
}
export interface UpdateUserRequest {
    email?: string;
    firstName: string;
    lastName: string;
    roleIds?: string[];
}
export type RoleCategory = 'Global' | 'Admin' | 'Manager' | 'Contributor' | 'Viewer' | 'Custom';
export interface RoleDto {
    id: string;
    name: string;
    shortName: string;
    category: RoleCategory;
    description: string | null;
}
export interface RoleListDto {
    id: string;
    name: string;
    shortName: string;
    code: string | null;
    category: RoleCategory;
    description: string | null;
    isSystem: boolean;
    usersCount: number;
    permissionsCount: number;
    createdAt: string;
}
export interface RoleDetailDto {
    id: string;
    name: string;
    shortName: string;
    code: string | null;
    category: RoleCategory;
    description: string | null;
    isSystem: boolean;
    parentRoleId: string | null;
    users: RoleUserDto[];
    permissions: RolePermissionDto[];
    groups: RoleGroupDto[];
    createdAt: string;
    updatedAt: string | null;
}
export interface RoleUserDto {
    id: string;
    email: string;
    fullName: string;
}
export interface RolePermissionDto {
    id: string;
    path: string;
    description: string | null;
}
export interface RoleGroupDto {
    id: string;
    name: string;
    description: string | null;
    membersCount: number;
}
export interface CreateRoleRequest {
    name: string;
    shortName?: string;
    category?: RoleCategory;
    description?: string;
    parentRoleId?: string;
    permissionIds?: string[];
}
export interface UpdateRoleRequest {
    name: string;
    shortName?: string;
    category?: RoleCategory;
    description?: string;
    parentRoleId?: string;
    permissionIds?: string[];
}
export interface RoleTranslationDto {
    id: string;
    languageCode: string;
    name: string;
    shortName: string;
    description: string | null;
}
export interface UpdateRoleTranslationRequest {
    name: string;
    shortName: string;
    description?: string;
}
export interface PermissionListDto {
    id: string;
    path: string;
    level: string;
    action: string | null;
    isWildcard: boolean;
    description: string | null;
    rolesCount: number;
}
export interface PermissionDetailDto {
    id: string;
    path: string;
    level: string;
    action: string | null;
    isWildcard: boolean;
    description: string | null;
    contextId: string | null;
    applicationId: string | null;
    moduleId: string | null;
    sectionId: string | null;
    resourceId: string | null;
    roles: PermissionRoleDto[];
    users: PermissionUserDto[];
    entraGroups: PermissionEntraGroupDto[];
    createdAt: string;
}
export interface PermissionRoleDto {
    id: string;
    name: string;
    isSystem: boolean;
}
export interface PermissionUserDto {
    id: string;
    email: string;
    firstName: string;
    lastName: string;
    roleNames: string[];
}
export interface PermissionEntraGroupDto {
    id: string;
    displayName: string;
    isSecurityGroup: boolean;
    memberCount: number;
    roleNames: string[];
}
export interface PermissionTreeDto {
    contexts: PermissionContextNode[];
}
export interface PermissionContextNode {
    id: string;
    code: string;
    label: string;
    permissionPath: string;
    applications: PermissionApplicationNode[];
}
export interface PermissionApplicationNode {
    id: string;
    code: string;
    label: string;
    permissionPath: string;
    modules: PermissionModuleNode[];
}
export interface PermissionModuleNode {
    id: string;
    code: string;
    label: string;
    permissionPath: string;
    sections: PermissionSectionNode[];
}
export interface PermissionSectionNode {
    id: string;
    code: string;
    label: string;
    permissionPath: string;
    resources: PermissionResourceNode[];
}
export interface PermissionResourceNode {
    id: string;
    code: string;
    label: string;
    permissionPath: string;
}
export interface MatrixRoleDto {
    id: string;
    name: string;
    shortName: string;
    category: RoleCategory;
    description: string | null;
    isSystem: boolean;
    permissionIds: string[];
}
export interface PermissionMatrixDto {
    roles: MatrixRoleDto[];
    permissions: PermissionListDto[];
    tree: PermissionTreeDto;
}
export interface ApplicationListDto {
    id: string;
    code: string;
    label: string;
    description: string | null;
    icon: string | null;
    iconType: string;
    route: string | null;
    displayOrder: number;
    isActive: boolean;
    contextId: string;
    contextCode: string;
    contextLabel: string;
    modulesCount: number;
}
export interface ApplicationDetailDto {
    id: string;
    code: string;
    label: string;
    description: string | null;
    icon: string | null;
    iconType: string;
    route: string | null;
    displayOrder: number;
    isActive: boolean;
    contextId: string;
    contextCode: string | null;
    contextLabel: string | null;
    modules: ApplicationModuleDto[];
    createdAt: string;
    updatedAt: string | null;
}
export interface ApplicationModuleDto {
    id: string;
    code: string;
    label: string;
    description: string | null;
    icon: string | null;
    iconType: string;
    route: string | null;
    displayOrder: number;
    isActive: boolean;
    sectionsCount: number;
}
export interface ContextDto {
    id: string;
    code: string;
    label: string;
    icon: string | null;
    iconType: string;
}
export interface UpdateApplicationRequest {
    label: string;
    description?: string;
    icon?: string;
    iconType?: string;
    route?: string;
    displayOrder: number;
}
export interface UpdateModuleRequest {
    label: string;
    description?: string;
    icon?: string;
    iconType?: string;
    route?: string;
    displayOrder: number;
}
export interface ModuleSectionDto {
    id: string;
    code: string;
    label: string;
    description: string | null;
    icon: string | null;
    iconType: string;
    route: string | null;
    displayOrder: number;
    isActive: boolean;
}
export interface ReorderItemDto {
    id: string;
    displayOrder: number;
}
export interface ReorderRequest {
    items: ReorderItemDto[];
}
export interface ApplicationTenantDto {
    tenantId: string;
    tenantName: string;
    tenantSlug: string;
    tenantType: string;
    tenantStatus: string;
    accessLevel: string;
    assignedAt: string;
    assignedBy: string | null;
}
export interface AvailableTenantForAppDto {
    id: string;
    name: string;
    slug: string;
    type: string;
}
export interface AvailableTenantsResponse {
    tenants: AvailableTenantForAppDto[];
    isInDefaultPersonalTemplate: boolean;
}
export type ApplicationAccessLevel = 'FullAccess' | 'RequestAccess' | 'Disabled';
export interface BulkAssignTenantsRequest {
    tenantIds: string[];
    accessLevel?: ApplicationAccessLevel;
    accessMode?: 'full' | 'custom';
    moduleIds?: string[];
    sectionIds?: string[];
    mergeMode?: 'merge' | 'replace';
}
export interface BulkAssignResultItem {
    tenantId: string;
    tenantName: string;
    success: boolean;
    error?: string;
}
export interface BulkAssignTenantsResponse {
    successCount: number;
    failedCount: number;
    results: BulkAssignResultItem[];
}
export interface BulkAssignAppsRequest {
    applicationIds: string[];
    accessLevel: ApplicationAccessLevel;
    accessMode: 'full' | 'custom';
    moduleIds?: string[];
    sectionIds?: string[];
}
export interface BulkAssignAppsResultItem {
    applicationId: string;
    applicationName: string;
    success: boolean;
    errorMessage?: string;
}
export interface BulkAssignAppsResponse {
    successCount: number;
    failedCount: number;
    results: BulkAssignAppsResultItem[];
}
export interface SessionDto {
    id: string;
    loginAt: string;
    logoutAt: string | null;
    ipAddress: string | null;
    userAgent: string | null;
    deviceFingerprint: string | null;
    deviceType: 'Unknown' | 'Desktop' | 'Mobile' | 'Tablet';
    country: string | null;
    city: string | null;
    isActive: boolean;
    duration: string | null;
}
export interface UserSessionsDto {
    activeSessions: SessionDto[];
    history: SessionDto[];
}
export interface LoginDayStats {
    date: string;
    successful: number;
    failed: number;
}
export interface DeviceStats {
    device: string;
    count: number;
}
export interface LocationStats {
    location: string;
    count: number;
}
export interface UserActivityDto {
    totalSuccessfulLogins: number;
    totalFailedLogins: number;
    lastSuccessfulLoginAt: string | null;
    lastSuccessfulLoginIp: string | null;
    lastFailedLoginAt: string | null;
    lastFailedLoginIp: string | null;
    lastFailedLoginReason: string | null;
    loginsByDay: LoginDayStats[];
    deviceStats: DeviceStats[];
    locationStats: LocationStats[];
}
export interface UserDashboardOverviewDto {
    totalUsers: number;
    activeUsers: number;
    inactiveUsers: number;
    newUsers: number;
    totalSessions: number;
    failedLogins: number;
    usersLoggedInRecently: number;
    totalRoles: number;
    totalPermissions: number;
}
export interface UserStatusCountDto {
    status: string;
    count: number;
}
export interface UserRoleDistributionDto {
    roleName: string;
    count: number;
}
export interface UserTypeDistributionDto {
    userType: string;
    count: number;
}
export interface LoginActivityStatsDto {
    totalSuccessful: number;
    totalFailed: number;
    byDay: LoginDayActivityDto[];
}
export interface LoginDayActivityDto {
    date: string;
    successful: number;
    failed: number;
}
export interface UserTrendDto {
    date: string;
    newUsers: number;
    logins: number;
}
export interface RecentUserDto {
    id: string;
    email: string;
    fullName: string;
    createdAt: string;
    lastLoginAt: string | null;
    isActive: boolean;
    userType: string;
}
export interface SecurityAlertDto {
    userId: string;
    email: string;
    fullName: string;
    failedAttempts: number;
    lastAttemptAt: string;
    ipAddresses: string[];
}
export interface ActiveSessionsStatsDto {
    totalActiveSessions: number;
    byBrowser: BrowserStatsDto[];
    byCountry: CountryStatsDto[];
}
export interface BrowserStatsDto {
    browser: string;
    count: number;
}
export interface CountryStatsDto {
    country: string;
    count: number;
}
export interface LatestActiveSessionDto {
    userId: string;
    fullName: string;
    duration: string;
    loginAt: string;
}
export type PreferencesScope = 'tenant' | 'global' | 'system';
export interface PreferencesScopeInfo {
    effectiveScope: PreferencesScope;
    hasTenantOverride: boolean;
    hasGlobalPreferences: boolean;
    currentTenantId: string | null;
}
export interface BorderRadiusDto {
    card: string;
    button: string;
    badge: string;
    input: string;
    modal: string;
    menuItem: string;
}
export interface UserPreferencesWithScopeDto {
    theme: string;
    language: string;
    timeZone: string | null;
    emailNotifications: boolean;
    pushNotifications: boolean;
    accentColorKey: string;
    borderRadius: BorderRadiusDto;
    itemPaletteKey: string;
    scope: PreferencesScopeInfo;
}
export type TenantStatus = 'Pending' | 'Active' | 'Suspended' | 'Archived';
export type TenantType = 'Personal' | 'Business';
export interface TenantListDto {
    id: string;
    name: string;
    slug: string;
    type: TenantType;
    status: TenantStatus;
    description: string | null;
    organisationId: string | null;
    organisationName: string | null;
    membersCount: number;
    applicationsCount: number;
    createdAt: string;
}
export interface TenantDetailDto {
    id: string;
    name: string;
    slug: string;
    type: TenantType;
    status: TenantStatus;
    description: string | null;
    organisationId: string | null;
    organisationName: string | null;
    createdAt: string;
    createdBy: string | null;
    updatedAt: string | null;
    updatedBy: string | null;
    activatedAt: string | null;
    suspendedAt: string | null;
    archivedAt: string | null;
    memberCount: number;
}
export interface TenantMemberDto {
    /** User ID - use this as memberId for API calls (backend: "memberId is actually the userId") */
    userId: string;
    userEmail: string | null;
    userDisplayName: string | null;
    isOwner: boolean;
    joinedAt: string;
    roles: TenantMemberRoleDto[];
    /** How the user has access to this tenant: Direct, Group, or Both */
    membershipSource: 'Direct' | 'Group' | 'Both';
    /** The primary group granting access (if via group) */
    primaryGroupId: string | null;
    /** The name of the primary group granting access (if via group) */
    primaryGroupName: string | null;
}
export interface TenantMemberRoleDto {
    roleId: string;
    roleName: string;
    assignedAt: string;
    assignedBy: string | null;
}
export interface TenantMemberCustomRoleDto {
    id: string;
    name: string;
    shortName: string;
    code: string | null;
    category: string;
    description: string | null;
    isSystem: boolean;
    permissions: TenantMemberCustomRolePermissionDto[];
    createdAt: string;
    updatedAt: string | null;
}
export interface TenantMemberCustomRolePermissionDto {
    id: string;
    path: string;
    description: string | null;
}
export interface TenantGroupDto {
    groupId: string;
    name: string;
    description: string | null;
    isActive: boolean;
    isSecurityGroup: boolean;
    isSyncedFromEntra: boolean;
    entraObjectId: string | null;
    memberCount: number;
    roleCount: number;
    isDirect: boolean;
    linkedViaGroupId: string | null;
    linkedViaGroupName: string | null;
    addedAt: string | null;
    addedBy: string | null;
}
export interface AvailableGroupDto {
    groupId: string;
    name: string;
    description: string | null;
    isSecurityGroup: boolean;
    isSyncedFromEntra: boolean;
    memberCount: number;
}
export interface TenantApplicationDto {
    applicationId: string;
    label: string;
    code: string;
    description: string | null;
    icon: string | null;
    accessLevel: ApplicationAccessLevel;
    assignedAt: string;
    assignedBy: string | null;
    assignedModuleCount: number;
    assignedSectionCount: number;
    totalModuleCount: number;
    totalSectionCount: number;
}
export interface AvailableApplicationDto {
    id: string;
    label: string;
    code: string;
    description: string | null;
    icon: string | null;
    isAssigned: boolean;
}
export interface TenantRoleDto {
    id: string;
    name: string;
    shortName: string;
    code: string | null;
    category: string;
    description: string | null;
    isSystem: boolean;
    applicationId: string | null;
    applicationName: string | null;
    permissionsCount: number;
    assignedMembersCount: number;
}
export interface TenantModuleDto {
    moduleId: string;
    label: string;
    code: string;
    description: string | null;
    icon: string | null;
    accessLevel: string;
    assignedAt: string;
    assignedBy: string | null;
}
export interface AvailableModuleDto {
    id: string;
    label: string;
    code: string;
    description: string | null;
    icon: string | null;
    applicationLabel: string;
    isAssigned: boolean;
}
export interface TenantSectionDto {
    sectionId: string;
    label: string;
    code: string;
    description: string | null;
    icon: string | null;
    accessLevel: string;
    assignedAt: string;
    assignedBy: string | null;
}
export interface AvailableSectionDto {
    id: string;
    label: string;
    code: string;
    description: string | null;
    icon: string | null;
    moduleLabel: string;
    isAssigned: boolean;
}
export interface ModuleWithSectionsDto {
    moduleId: string;
    label: string;
    code: string;
    icon: string | null;
    isAssigned: boolean;
    accessLevel: string | null;
    sections: SectionAssignmentDto[];
}
export interface SectionAssignmentDto {
    sectionId: string;
    label: string;
    code: string;
    icon: string | null;
    isAssigned: boolean;
    accessLevel: string | null;
}
export interface CreateTenantB2CRequest {
    name: string;
    slug: string;
    description?: string;
    templateId?: string;
}
export interface TenantTemplateDto {
    id: string;
    code: string;
    name: string;
    description: string | null;
    targetTenantType: TenantType;
    isDefault: boolean;
    isActive: boolean;
    tenantCount: number;
    applicationCount: number;
    createdAt: string;
}
export interface TenantTemplateDetailDto {
    id: string;
    code: string;
    name: string;
    description: string | null;
    targetTenantType: TenantType;
    isDefault: boolean;
    isActive: boolean;
    createdAt: string;
    applications: TemplateApplicationDto[];
    modules: TemplateModuleDto[];
    sections: TemplateSectionDto[];
}
export interface TemplateApplicationDto {
    applicationId: string;
    label: string;
    code: string;
    icon: string | null;
    accessLevel: string;
    displayOrder: number;
}
export interface TemplateModuleDto {
    moduleId: string;
    label: string;
    code: string;
    icon: string | null;
    displayOrder: number;
}
export interface TemplateSectionDto {
    sectionId: string;
    label: string;
    code: string;
    icon: string | null;
    displayOrder: number;
}
export interface CreateTenantTemplateRequest {
    code: string;
    name: string;
    description?: string;
    targetTenantType: TenantType;
}
export interface UpdateTenantTemplateRequest {
    name: string;
    description?: string;
}
export interface BulkAssignTemplateAppsRequest {
    applicationIds: string[];
    accessLevel?: string;
}
export interface TenantBasicDto {
    id: string;
    slug: string;
    name: string;
    createdAt: string;
}
export type BusinessIdentifierType = 'SIREN' | 'SIRET' | 'UID_CHE' | 'HRB' | 'HRA' | 'BCE_KBO' | 'KVK' | 'CIF' | 'PartitaIVA' | 'CRN' | 'VAT' | 'ABN' | 'Other';
export interface CreateAddressRequest {
    street: string;
    street2?: string;
    postalCode: string;
    city: string;
    state?: string;
    country: string;
    countryCode: string;
}
export interface CreateOrganisationRequest {
    name: string;
    legalName?: string;
    countryCode: string;
    businessIdentifierType: BusinessIdentifierType;
    businessIdentifier: string;
    vatNumber?: string;
    address: CreateAddressRequest;
    phone?: string;
    email?: string;
    website?: string;
}
export type VerificationStatus = 'Pending' | 'Verified' | 'Rejected';
export interface OrganisationListItemDto {
    id: string;
    name: string;
    legalName: string | null;
    countryCode: string;
    businessIdentifier: string;
    businessIdentifierType: BusinessIdentifierType;
    verificationStatus: VerificationStatus;
    verifiedAt: string | null;
    createdAt: string;
}
export interface AddressDto {
    street: string;
    street2: string | null;
    postalCode: string;
    city: string;
    state: string | null;
    country: string;
    countryCode: string;
}
export interface OrganisationDto {
    id: string;
    name: string;
    legalName: string | null;
    countryCode: string;
    businessIdentifier: string;
    businessIdentifierType: BusinessIdentifierType;
    vatNumber: string | null;
    address: AddressDto | null;
    phone: string | null;
    email: string | null;
    website: string | null;
    verificationStatus: VerificationStatus;
    verifiedAt: string | null;
    verificationNotes: string | null;
    verifiedBy: string | null;
    createdAt: string;
    createdBy: string | null;
    updatedAt: string | null;
    updatedBy: string | null;
}
export interface CreateTenantB2BRequest {
    name: string;
    slug: string;
    description?: string;
    organisation?: CreateOrganisationRequest;
}
export interface CompanyLookupResponse {
    identifier: string;
    name: string;
    legalName: string | null;
    legalForm: string | null;
    street: string | null;
    street2: string | null;
    postalCode: string | null;
    city: string | null;
    state: string | null;
    country: string | null;
    countryCode: string | null;
    vatNumber: string | null;
    phone: string | null;
    email: string | null;
    website: string | null;
    status: string | null;
    registryUrl: string | null;
}
export interface UpdateTenantRequest {
    name: string;
    description?: string;
}
export interface AddTenantMemberRequest {
    userId: string;
    isOwner?: boolean;
}
export interface AssignTenantRoleRequest {
    roleId: string;
}
export interface MultitenantConfigResponse {
    enableB2B: boolean;
    enableB2C: boolean;
}
export type MembershipSource = 'Direct' | 'Group' | 'Both';
export interface GroupPathDto {
    groupId: string;
    groupName: string;
    isDirect: boolean;
    lineage: string;
}
export interface UserTenantDto {
    id: string;
    name: string;
    slug: string;
    type: TenantType;
    status: TenantStatus;
    isOwner: boolean;
    isDefault: boolean;
    organisationName: string | null;
    membershipSource: MembershipSource;
    groupPaths: GroupPathDto[] | null;
}
export interface UserGroupRoleDto {
    name: string;
    code: string | null;
}
export interface UserGroupDto {
    id: string;
    name: string;
    description: string | null;
    isActive: boolean;
    isSecurityGroup: boolean;
    isSyncedFromEntra: boolean;
    roles: UserGroupRoleDto[];
    addedAt: string;
    addedBy: string | null;
}
export type RoleSource = 'Direct' | 'Group' | 'Custom';
export type PermissionLevel = 'Context' | 'Application' | 'Module' | 'Section' | 'Resource';
export type PermissionAction = 'Access' | 'Read' | 'Create' | 'Update' | 'Delete' | 'Export' | 'Import' | 'Approve' | 'Reject' | 'Assign' | 'Execute';
export interface UserApplicationAccessDto {
    applicationId: string;
    applicationLabel: string;
    applicationCode: string;
    contextLabel: string;
    contextCode: string;
    icon: string | null;
    iconType: string | null;
    route: string | null;
    hasFullAccess: boolean;
    roles: UserAppRoleDto[];
    permissions: UserAppPermissionDto[];
}
export interface UserAppRoleDto {
    roleId: string;
    roleName: string;
    roleShortName: string | null;
    category: RoleCategory;
    source: RoleSource;
}
export interface UserAppPermissionDto {
    path: string;
    action: PermissionAction | null;
    level: PermissionLevel;
    moduleName: string | null;
}
export interface UserConsolidatedRoleDto {
    roleId: string;
    roleName: string;
    roleShortName: string | null;
    tenantId: string | null;
    tenantName: string | null;
    source: RoleSource;
    sourceGroupId: string | null;
    sourceGroupName: string | null;
    permissionIds: string[];
}
export type SettingSource = 'Database' | 'AppSettings' | 'Environment' | 'Computed';
export type SettingValueType = 'String' | 'Int' | 'Bool' | 'Json' | 'TimeSpan' | 'Decimal';
export interface SettingDto {
    category: string;
    key: string;
    value: string;
    defaultValue: string;
    valueType: SettingValueType;
    description: string | null;
    isEditable: boolean;
    isSensitive: boolean;
    displayOrder: number;
}
export interface SettingViewModel {
    category: string;
    key: string;
    value: string;
    displayValue: string;
    defaultValue: string | null;
    valueType: SettingValueType;
    description: string | null;
    isEditable: boolean;
    isSensitive: boolean;
    displayOrder: number;
    source: SettingSource;
    modifiedByUserName: string | null;
    modifiedAt: string | null;
}
export interface SettingHistoryDto {
    id: string;
    oldValue: string;
    newValue: string;
    changedByUserName: string | null;
    changedAt: string;
}
/**
 * Creates the Admin API service with an optional tenant context.
 * When tenantSlug is provided, all API calls will include the X-Tenant-Slug header.
 * This is needed for Super Admins viewing tenant-specific pages without "switching" to that tenant.
 */
declare const createAdminApi: (tenantSlug?: string) => {
    users: {
        getAll: (params?: {
            page?: number;
            pageSize?: number;
            search?: string;
            isActive?: boolean;
            entraOnly?: boolean;
            roleId?: string;
            userType?: string;
            sortBy?: string;
            sortDesc?: boolean;
            globalScope?: boolean;
        }) => Promise<PagedResult<UserListDto>>;
        getById: (id: string) => Promise<UserDetailDto>;
        create: (data: CreateUserRequest) => Promise<UserDetailDto>;
        update: (id: string, data: UpdateUserRequest) => Promise<UserDetailDto>;
        sendPasswordResetLink: (id: string) => Promise<{
            message: string;
        }>;
        resetPasswordDirect: (id: string, temporaryPassword?: string) => Promise<{
            message: string;
            temporaryPassword: string;
            mustChangePassword: boolean;
        }>;
        activate: (id: string) => Promise<unknown>;
        deactivate: (id: string) => Promise<unknown>;
        unlock: (id: string, data: UnlockAccountRequest) => Promise<{
            message: string;
            mustChangePassword: boolean;
        }>;
        clearFailedAttempts: (id: string) => Promise<{
            message: string;
            clearedCount: number;
        }>;
        delete: (id: string) => Promise<unknown>;
        getSessions: (id: string) => Promise<UserSessionsDto>;
        endAllSessions: (id: string) => Promise<unknown>;
        endSession: (userId: string, sessionId: string) => Promise<unknown>;
        getActivity: (id: string) => Promise<UserActivityDto>;
        getCustomRole: (id: string) => Promise<RoleDetailDto | null>;
        createCustomRole: (id: string) => Promise<RoleDetailDto>;
        deleteCustomRole: (id: string) => Promise<unknown>;
        getHistory: (id: string, limit?: number) => Promise<UserHistoryDto[]>;
        restoreFromHistory: (userId: string, historyId: string) => Promise<{
            message: string;
            field: string;
            restoredValue: string;
        }>;
        getOrganizationReferences: () => Promise<OrganizationReferencesDto>;
        references: {
            getCompanies: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<ReferenceListDto[]>;
            getDepartments: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<ReferenceListDto[]>;
            getJobTitles: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<ReferenceListDto[]>;
            getOffices: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<OfficeListDto[]>;
            createCompany: (data: CreateReferenceRequest, tenantId?: string) => Promise<ReferenceListDto>;
            createDepartment: (data: CreateReferenceRequest, tenantId?: string) => Promise<ReferenceListDto>;
            createJobTitle: (data: CreateReferenceRequest, tenantId?: string) => Promise<ReferenceListDto>;
            createOffice: (data: CreateOfficeRequest, tenantId?: string) => Promise<OfficeListDto>;
            updateCompany: (id: string, data: UpdateReferenceRequest) => Promise<unknown>;
            updateDepartment: (id: string, data: UpdateReferenceRequest) => Promise<unknown>;
            updateJobTitle: (id: string, data: UpdateReferenceRequest) => Promise<unknown>;
            updateOffice: (id: string, data: UpdateOfficeRequest) => Promise<unknown>;
            activateCompany: (id: string) => Promise<unknown>;
            activateDepartment: (id: string) => Promise<unknown>;
            activateJobTitle: (id: string) => Promise<unknown>;
            activateOffice: (id: string) => Promise<unknown>;
            deactivateCompany: (id: string) => Promise<unknown>;
            deactivateDepartment: (id: string) => Promise<unknown>;
            deactivateJobTitle: (id: string) => Promise<unknown>;
            deactivateOffice: (id: string) => Promise<unknown>;
            deleteCompany: (id: string) => Promise<unknown>;
            deleteDepartment: (id: string) => Promise<unknown>;
            deleteJobTitle: (id: string) => Promise<unknown>;
            deleteOffice: (id: string) => Promise<unknown>;
        };
        updateProfile: (id: string, data: UpdateProfileRequest) => Promise<unknown>;
        updateOrganization: (id: string, data: UpdateOrganizationRequest) => Promise<unknown>;
        updateJobInfo: (id: string, data: UpdateJobInfoRequest) => Promise<unknown>;
        updatePhones: (id: string, data: UpdatePhonesRequest) => Promise<unknown>;
        updateAddress: (id: string, data: UpdateAddressRequest) => Promise<unknown>;
        updateContact: (id: string, data: UpdateContactRequest) => Promise<unknown>;
        getTenants: (id: string) => Promise<UserTenantDto[]>;
        getGroups: (id: string) => Promise<UserGroupDto[]>;
        getConsolidatedRoles: (id: string, tenantId?: string) => Promise<UserConsolidatedRoleDto[]>;
        getApplicationAccess: (id: string, tenantId?: string) => Promise<UserApplicationAccessDto[]>;
    };
    roles: {
        getAll: (params?: {
            search?: string;
            excludeCategories?: string;
            minPermissionsCount?: number;
        }) => Promise<RoleListDto[]>;
        /** Get roles that can be assigned to groups/users (excludes Custom category and roles with 0 permissions) */
        getAssignable: () => Promise<RoleListDto[]>;
        /** Get roles scoped to a specific application (for access request approval) */
        getByApplication: (applicationId: string) => Promise<RoleListDto[]>;
        getById: (id: string) => Promise<RoleDetailDto>;
        create: (data: CreateRoleRequest) => Promise<RoleDetailDto>;
        update: (id: string, data: UpdateRoleRequest) => Promise<RoleDetailDto>;
        delete: (id: string) => Promise<unknown>;
        assignUser: (roleId: string, userId: string) => Promise<unknown>;
        removeUser: (roleId: string, userId: string) => Promise<unknown>;
        getGroups: (roleId: string) => Promise<RoleGroupDto[]>;
        assignGroup: (roleId: string, groupId: string) => Promise<unknown>;
        removeGroup: (roleId: string, groupId: string) => Promise<unknown>;
        getTranslations: (roleId: string) => Promise<RoleTranslationDto[]>;
        upsertTranslation: (roleId: string, languageCode: string, data: UpdateRoleTranslationRequest) => Promise<RoleTranslationDto>;
        deleteTranslation: (roleId: string, languageCode: string) => Promise<unknown>;
    };
    permissions: {
        getAll: (params?: {
            search?: string;
            level?: string;
        }) => Promise<PermissionListDto[]>;
        getById: (id: string) => Promise<PermissionDetailDto>;
        getTree: () => Promise<PermissionTreeDto>;
        getMatrix: () => Promise<PermissionMatrixDto>;
        delete: (id: string) => Promise<unknown>;
    };
    applications: {
        getAll: (params?: {
            contextId?: string;
            isActive?: boolean;
        }) => Promise<ApplicationListDto[]>;
        getById: (id: string) => Promise<ApplicationDetailDto>;
        getContexts: () => Promise<ContextDto[]>;
        update: (id: string, data: UpdateApplicationRequest) => Promise<ApplicationDetailDto>;
        activate: (id: string) => Promise<unknown>;
        deactivate: (id: string) => Promise<unknown>;
        getModules: (appId: string) => Promise<ApplicationModuleDto[]>;
        updateModule: (appId: string, moduleId: string, data: UpdateModuleRequest) => Promise<ApplicationModuleDto>;
        getModuleSections: (appId: string, moduleId: string) => Promise<ModuleSectionDto[]>;
        reorderModules: (appId: string, items: ReorderItemDto[]) => Promise<unknown>;
        reorderSections: (appId: string, moduleId: string, items: ReorderItemDto[]) => Promise<unknown>;
        getTenants: (appId: string) => Promise<ApplicationTenantDto[]>;
        getAvailableTenants: (appId: string) => Promise<AvailableTenantsResponse>;
        assignToTenant: (appId: string, tenantId: string, accessLevel?: ApplicationAccessLevel) => Promise<ApplicationTenantDto>;
        removeFromTenant: (appId: string, tenantId: string) => Promise<unknown>;
        updateTenantAccessLevel: (appId: string, tenantId: string, accessLevel: ApplicationAccessLevel) => Promise<unknown>;
        bulkAssignTenants: (appId: string, request: BulkAssignTenantsRequest) => Promise<BulkAssignTenantsResponse>;
    };
    dashboard: {
        getOverview: (days?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<UserDashboardOverviewDto>;
        getByStatus: (config?: {
            signal?: AbortSignal;
        }) => Promise<UserStatusCountDto[]>;
        getByRole: (config?: {
            signal?: AbortSignal;
        }) => Promise<UserRoleDistributionDto[]>;
        getByType: (config?: {
            signal?: AbortSignal;
        }) => Promise<UserTypeDistributionDto[]>;
        getLoginActivity: (days?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<LoginActivityStatsDto>;
        getTrends: (days?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<UserTrendDto[]>;
        getRecentUsers: (limit?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<RecentUserDto[]>;
        getSecurityAlerts: (threshold?: number, hours?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<SecurityAlertDto[]>;
        getActiveSessions: (config?: {
            signal?: AbortSignal;
        }) => Promise<ActiveSessionsStatsDto>;
        getLatestActiveSessions: (limit?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<LatestActiveSessionDto[]>;
    };
    settings: {
        getAll: () => Promise<SettingViewModel[]>;
        getByCategory: (category: string) => Promise<SettingViewModel[]>;
        get: (category: string, key: string) => Promise<SettingDto>;
        update: (category: string, key: string, value: string) => Promise<SettingDto>;
        reset: (category: string, key: string) => Promise<SettingDto>;
        getHistory: (category: string, key: string) => Promise<SettingHistoryDto[]>;
        getCategories: () => Promise<string[]>;
    };
    tenants: {
        getConfig: () => Promise<MultitenantConfigResponse>;
        getAll: (params?: {
            search?: string;
            status?: TenantStatus;
            type?: TenantType;
        }) => Promise<TenantListDto[]>;
        getById: (id: string) => Promise<TenantDetailDto>;
        createB2C: (data: CreateTenantB2CRequest) => Promise<TenantDetailDto>;
        createB2B: (data: CreateTenantB2BRequest) => Promise<TenantDetailDto>;
        update: (id: string, data: UpdateTenantRequest) => Promise<TenantDetailDto>;
        delete: (id: string) => Promise<unknown>;
        activate: (id: string) => Promise<unknown>;
        suspend: (id: string) => Promise<unknown>;
        archive: (id: string) => Promise<unknown>;
        checkSlugAvailable: (slug: string) => Promise<{
            available: boolean;
        }>;
        getMembers: (tenantId: string) => Promise<TenantMemberDto[]>;
        getMember: (tenantId: string, memberId: string) => Promise<TenantMemberDto>;
        addMember: (tenantId: string, data: AddTenantMemberRequest) => Promise<TenantMemberDto>;
        removeMember: (tenantId: string, userId: string) => Promise<unknown>;
        setMemberDefault: (tenantId: string, userId: string) => Promise<unknown>;
        transferOwnership: (tenantId: string, toUserId: string) => Promise<unknown>;
        assignRole: (tenantId: string, tenantUserId: string, roleId: string) => Promise<unknown>;
        removeRole: (tenantId: string, tenantUserId: string, roleId: string) => Promise<unknown>;
        assignMemberRoles: (tenantId: string, tenantUserId: string, roleIds: string[]) => Promise<unknown>;
        getMemberCustomRole: (tenantId: string, memberId: string) => Promise<TenantMemberCustomRoleDto | null>;
        createMemberCustomRole: (tenantId: string, memberId: string) => Promise<TenantMemberCustomRoleDto>;
        deleteMemberCustomRole: (tenantId: string, memberId: string) => Promise<unknown>;
        getTenantRoles: (tenantId: string) => Promise<TenantRoleDto[]>;
        getGroups: (tenantId: string) => Promise<TenantGroupDto[]>;
        getAvailableGroups: (tenantId: string) => Promise<AvailableGroupDto[]>;
        addGroupToTenant: (tenantId: string, groupId: string) => Promise<unknown>;
        removeGroupFromTenant: (tenantId: string, groupId: string) => Promise<unknown>;
        getApplications: (tenantId: string) => Promise<TenantApplicationDto[]>;
        getAvailableApplications: (tenantId: string) => Promise<AvailableApplicationDto[]>;
        assignApplication: (tenantId: string, applicationId: string) => Promise<TenantApplicationDto>;
        removeApplication: (tenantId: string, applicationId: string) => Promise<unknown>;
        bulkAssignApplications: (tenantId: string, request: BulkAssignAppsRequest) => Promise<BulkAssignAppsResponse>;
        toggleApplication: (tenantId: string, applicationId: string, isActive: boolean) => Promise<unknown>;
        updateApplicationAccessLevel: (tenantId: string, applicationId: string, accessLevel: ApplicationAccessLevel) => Promise<unknown>;
        getModules: (tenantId: string) => Promise<TenantModuleDto[]>;
        getAvailableModules: (tenantId: string) => Promise<AvailableModuleDto[]>;
        assignModule: (tenantId: string, moduleId: string) => Promise<TenantModuleDto>;
        removeModule: (tenantId: string, moduleId: string) => Promise<unknown>;
        toggleModule: (tenantId: string, moduleId: string, isActive: boolean) => Promise<unknown>;
        getSections: (tenantId: string) => Promise<TenantSectionDto[]>;
        getAvailableSections: (tenantId: string) => Promise<AvailableSectionDto[]>;
        assignSection: (tenantId: string, sectionId: string) => Promise<TenantSectionDto>;
        removeSection: (tenantId: string, sectionId: string) => Promise<unknown>;
        toggleSection: (tenantId: string, sectionId: string, isActive: boolean) => Promise<unknown>;
        getModulesWithSections: (tenantId: string, applicationId: string) => Promise<ModuleWithSectionsDto[]>;
        linkOrganisation: (tenantId: string, organisationId: string) => Promise<unknown>;
        unlinkOrganisation: (tenantId: string) => Promise<unknown>;
    };
    templates: {
        getAll: () => Promise<TenantTemplateDto[]>;
        getById: (id: string) => Promise<TenantTemplateDetailDto>;
        create: (data: CreateTenantTemplateRequest) => Promise<TenantTemplateDto>;
        update: (id: string, data: UpdateTenantTemplateRequest) => Promise<TenantTemplateDto>;
        delete: (id: string) => Promise<unknown>;
        assignApplication: (templateId: string, appId: string) => Promise<unknown>;
        removeApplication: (templateId: string, appId: string) => Promise<unknown>;
        bulkAssignApplications: (templateId: string, request: BulkAssignTemplateAppsRequest) => Promise<unknown>;
        getTenants: (templateId: string) => Promise<TenantBasicDto[]>;
    };
    organisations: {
        getAvailable: (search?: string) => Promise<OrganisationListItemDto[]>;
        getById: (id: string) => Promise<OrganisationDto>;
        create: (data: CreateOrganisationRequest) => Promise<OrganisationDto>;
        /** Lookup company info from official registry (e.g., Zefix for Switzerland) */
        lookup: (countryCode: string, identifier: string) => Promise<CompanyLookupResponse>;
    };
    myTenants: {
        getAll: (search?: string) => Promise<UserTenantDto[]>;
        getDefault: () => Promise<UserTenantDto | null>;
        setDefault: (tenantId: string) => Promise<unknown>;
        clearDefault: () => Promise<unknown>;
        getFavorites: () => Promise<string[]>;
        addFavorite: (tenantId: string) => Promise<string[]>;
        removeFavorite: (tenantId: string) => Promise<string[]>;
        recordRecent: (tenantId: string) => Promise<unknown>;
    };
    preferences: {
        /** Get preferences with scope info (effective scope, has tenant override, etc.) */
        get: () => Promise<UserPreferencesWithScopeDto>;
        /** Get global preferences only (TenantId = null), ignoring tenant-specific overrides */
        getGlobal: () => Promise<UserPreferencesWithScopeDto>;
        /** Get preferences for a specific tenant (for editing without switching context) */
        getForTenant: (tenantId: string) => Promise<UserPreferencesWithScopeDto>;
        /** Get list of tenant IDs that have theme overrides */
        getThemeOverrides: () => Promise<string[]>;
        /** Delete tenant-specific preferences, reverting to global */
        deleteTenantOverride: () => Promise<UserPreferencesWithScopeDto>;
        /** Create tenant-specific preferences from current effective preferences */
        applyToTenant: () => Promise<UserPreferencesWithScopeDto>;
    };
};
export declare const adminApi: {
    users: {
        getAll: (params?: {
            page?: number;
            pageSize?: number;
            search?: string;
            isActive?: boolean;
            entraOnly?: boolean;
            roleId?: string;
            userType?: string;
            sortBy?: string;
            sortDesc?: boolean;
            globalScope?: boolean;
        }) => Promise<PagedResult<UserListDto>>;
        getById: (id: string) => Promise<UserDetailDto>;
        create: (data: CreateUserRequest) => Promise<UserDetailDto>;
        update: (id: string, data: UpdateUserRequest) => Promise<UserDetailDto>;
        sendPasswordResetLink: (id: string) => Promise<{
            message: string;
        }>;
        resetPasswordDirect: (id: string, temporaryPassword?: string) => Promise<{
            message: string;
            temporaryPassword: string;
            mustChangePassword: boolean;
        }>;
        activate: (id: string) => Promise<unknown>;
        deactivate: (id: string) => Promise<unknown>;
        unlock: (id: string, data: UnlockAccountRequest) => Promise<{
            message: string;
            mustChangePassword: boolean;
        }>;
        clearFailedAttempts: (id: string) => Promise<{
            message: string;
            clearedCount: number;
        }>;
        delete: (id: string) => Promise<unknown>;
        getSessions: (id: string) => Promise<UserSessionsDto>;
        endAllSessions: (id: string) => Promise<unknown>;
        endSession: (userId: string, sessionId: string) => Promise<unknown>;
        getActivity: (id: string) => Promise<UserActivityDto>;
        getCustomRole: (id: string) => Promise<RoleDetailDto | null>;
        createCustomRole: (id: string) => Promise<RoleDetailDto>;
        deleteCustomRole: (id: string) => Promise<unknown>;
        getHistory: (id: string, limit?: number) => Promise<UserHistoryDto[]>;
        restoreFromHistory: (userId: string, historyId: string) => Promise<{
            message: string;
            field: string;
            restoredValue: string;
        }>;
        getOrganizationReferences: () => Promise<OrganizationReferencesDto>;
        references: {
            getCompanies: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<ReferenceListDto[]>;
            getDepartments: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<ReferenceListDto[]>;
            getJobTitles: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<ReferenceListDto[]>;
            getOffices: (params?: {
                tenantId?: string;
                search?: string;
                isActive?: boolean;
                source?: "entra" | "manual";
            }) => Promise<OfficeListDto[]>;
            createCompany: (data: CreateReferenceRequest, tenantId?: string) => Promise<ReferenceListDto>;
            createDepartment: (data: CreateReferenceRequest, tenantId?: string) => Promise<ReferenceListDto>;
            createJobTitle: (data: CreateReferenceRequest, tenantId?: string) => Promise<ReferenceListDto>;
            createOffice: (data: CreateOfficeRequest, tenantId?: string) => Promise<OfficeListDto>;
            updateCompany: (id: string, data: UpdateReferenceRequest) => Promise<unknown>;
            updateDepartment: (id: string, data: UpdateReferenceRequest) => Promise<unknown>;
            updateJobTitle: (id: string, data: UpdateReferenceRequest) => Promise<unknown>;
            updateOffice: (id: string, data: UpdateOfficeRequest) => Promise<unknown>;
            activateCompany: (id: string) => Promise<unknown>;
            activateDepartment: (id: string) => Promise<unknown>;
            activateJobTitle: (id: string) => Promise<unknown>;
            activateOffice: (id: string) => Promise<unknown>;
            deactivateCompany: (id: string) => Promise<unknown>;
            deactivateDepartment: (id: string) => Promise<unknown>;
            deactivateJobTitle: (id: string) => Promise<unknown>;
            deactivateOffice: (id: string) => Promise<unknown>;
            deleteCompany: (id: string) => Promise<unknown>;
            deleteDepartment: (id: string) => Promise<unknown>;
            deleteJobTitle: (id: string) => Promise<unknown>;
            deleteOffice: (id: string) => Promise<unknown>;
        };
        updateProfile: (id: string, data: UpdateProfileRequest) => Promise<unknown>;
        updateOrganization: (id: string, data: UpdateOrganizationRequest) => Promise<unknown>;
        updateJobInfo: (id: string, data: UpdateJobInfoRequest) => Promise<unknown>;
        updatePhones: (id: string, data: UpdatePhonesRequest) => Promise<unknown>;
        updateAddress: (id: string, data: UpdateAddressRequest) => Promise<unknown>;
        updateContact: (id: string, data: UpdateContactRequest) => Promise<unknown>;
        getTenants: (id: string) => Promise<UserTenantDto[]>;
        getGroups: (id: string) => Promise<UserGroupDto[]>;
        getConsolidatedRoles: (id: string, tenantId?: string) => Promise<UserConsolidatedRoleDto[]>;
        getApplicationAccess: (id: string, tenantId?: string) => Promise<UserApplicationAccessDto[]>;
    };
    roles: {
        getAll: (params?: {
            search?: string;
            excludeCategories?: string;
            minPermissionsCount?: number;
        }) => Promise<RoleListDto[]>;
        /** Get roles that can be assigned to groups/users (excludes Custom category and roles with 0 permissions) */
        getAssignable: () => Promise<RoleListDto[]>;
        /** Get roles scoped to a specific application (for access request approval) */
        getByApplication: (applicationId: string) => Promise<RoleListDto[]>;
        getById: (id: string) => Promise<RoleDetailDto>;
        create: (data: CreateRoleRequest) => Promise<RoleDetailDto>;
        update: (id: string, data: UpdateRoleRequest) => Promise<RoleDetailDto>;
        delete: (id: string) => Promise<unknown>;
        assignUser: (roleId: string, userId: string) => Promise<unknown>;
        removeUser: (roleId: string, userId: string) => Promise<unknown>;
        getGroups: (roleId: string) => Promise<RoleGroupDto[]>;
        assignGroup: (roleId: string, groupId: string) => Promise<unknown>;
        removeGroup: (roleId: string, groupId: string) => Promise<unknown>;
        getTranslations: (roleId: string) => Promise<RoleTranslationDto[]>;
        upsertTranslation: (roleId: string, languageCode: string, data: UpdateRoleTranslationRequest) => Promise<RoleTranslationDto>;
        deleteTranslation: (roleId: string, languageCode: string) => Promise<unknown>;
    };
    permissions: {
        getAll: (params?: {
            search?: string;
            level?: string;
        }) => Promise<PermissionListDto[]>;
        getById: (id: string) => Promise<PermissionDetailDto>;
        getTree: () => Promise<PermissionTreeDto>;
        getMatrix: () => Promise<PermissionMatrixDto>;
        delete: (id: string) => Promise<unknown>;
    };
    applications: {
        getAll: (params?: {
            contextId?: string;
            isActive?: boolean;
        }) => Promise<ApplicationListDto[]>;
        getById: (id: string) => Promise<ApplicationDetailDto>;
        getContexts: () => Promise<ContextDto[]>;
        update: (id: string, data: UpdateApplicationRequest) => Promise<ApplicationDetailDto>;
        activate: (id: string) => Promise<unknown>;
        deactivate: (id: string) => Promise<unknown>;
        getModules: (appId: string) => Promise<ApplicationModuleDto[]>;
        updateModule: (appId: string, moduleId: string, data: UpdateModuleRequest) => Promise<ApplicationModuleDto>;
        getModuleSections: (appId: string, moduleId: string) => Promise<ModuleSectionDto[]>;
        reorderModules: (appId: string, items: ReorderItemDto[]) => Promise<unknown>;
        reorderSections: (appId: string, moduleId: string, items: ReorderItemDto[]) => Promise<unknown>;
        getTenants: (appId: string) => Promise<ApplicationTenantDto[]>;
        getAvailableTenants: (appId: string) => Promise<AvailableTenantsResponse>;
        assignToTenant: (appId: string, tenantId: string, accessLevel?: ApplicationAccessLevel) => Promise<ApplicationTenantDto>;
        removeFromTenant: (appId: string, tenantId: string) => Promise<unknown>;
        updateTenantAccessLevel: (appId: string, tenantId: string, accessLevel: ApplicationAccessLevel) => Promise<unknown>;
        bulkAssignTenants: (appId: string, request: BulkAssignTenantsRequest) => Promise<BulkAssignTenantsResponse>;
    };
    dashboard: {
        getOverview: (days?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<UserDashboardOverviewDto>;
        getByStatus: (config?: {
            signal?: AbortSignal;
        }) => Promise<UserStatusCountDto[]>;
        getByRole: (config?: {
            signal?: AbortSignal;
        }) => Promise<UserRoleDistributionDto[]>;
        getByType: (config?: {
            signal?: AbortSignal;
        }) => Promise<UserTypeDistributionDto[]>;
        getLoginActivity: (days?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<LoginActivityStatsDto>;
        getTrends: (days?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<UserTrendDto[]>;
        getRecentUsers: (limit?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<RecentUserDto[]>;
        getSecurityAlerts: (threshold?: number, hours?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<SecurityAlertDto[]>;
        getActiveSessions: (config?: {
            signal?: AbortSignal;
        }) => Promise<ActiveSessionsStatsDto>;
        getLatestActiveSessions: (limit?: number, config?: {
            signal?: AbortSignal;
        }) => Promise<LatestActiveSessionDto[]>;
    };
    settings: {
        getAll: () => Promise<SettingViewModel[]>;
        getByCategory: (category: string) => Promise<SettingViewModel[]>;
        get: (category: string, key: string) => Promise<SettingDto>;
        update: (category: string, key: string, value: string) => Promise<SettingDto>;
        reset: (category: string, key: string) => Promise<SettingDto>;
        getHistory: (category: string, key: string) => Promise<SettingHistoryDto[]>;
        getCategories: () => Promise<string[]>;
    };
    tenants: {
        getConfig: () => Promise<MultitenantConfigResponse>;
        getAll: (params?: {
            search?: string;
            status?: TenantStatus;
            type?: TenantType;
        }) => Promise<TenantListDto[]>;
        getById: (id: string) => Promise<TenantDetailDto>;
        createB2C: (data: CreateTenantB2CRequest) => Promise<TenantDetailDto>;
        createB2B: (data: CreateTenantB2BRequest) => Promise<TenantDetailDto>;
        update: (id: string, data: UpdateTenantRequest) => Promise<TenantDetailDto>;
        delete: (id: string) => Promise<unknown>;
        activate: (id: string) => Promise<unknown>;
        suspend: (id: string) => Promise<unknown>;
        archive: (id: string) => Promise<unknown>;
        checkSlugAvailable: (slug: string) => Promise<{
            available: boolean;
        }>;
        getMembers: (tenantId: string) => Promise<TenantMemberDto[]>;
        getMember: (tenantId: string, memberId: string) => Promise<TenantMemberDto>;
        addMember: (tenantId: string, data: AddTenantMemberRequest) => Promise<TenantMemberDto>;
        removeMember: (tenantId: string, userId: string) => Promise<unknown>;
        setMemberDefault: (tenantId: string, userId: string) => Promise<unknown>;
        transferOwnership: (tenantId: string, toUserId: string) => Promise<unknown>;
        assignRole: (tenantId: string, tenantUserId: string, roleId: string) => Promise<unknown>;
        removeRole: (tenantId: string, tenantUserId: string, roleId: string) => Promise<unknown>;
        assignMemberRoles: (tenantId: string, tenantUserId: string, roleIds: string[]) => Promise<unknown>;
        getMemberCustomRole: (tenantId: string, memberId: string) => Promise<TenantMemberCustomRoleDto | null>;
        createMemberCustomRole: (tenantId: string, memberId: string) => Promise<TenantMemberCustomRoleDto>;
        deleteMemberCustomRole: (tenantId: string, memberId: string) => Promise<unknown>;
        getTenantRoles: (tenantId: string) => Promise<TenantRoleDto[]>;
        getGroups: (tenantId: string) => Promise<TenantGroupDto[]>;
        getAvailableGroups: (tenantId: string) => Promise<AvailableGroupDto[]>;
        addGroupToTenant: (tenantId: string, groupId: string) => Promise<unknown>;
        removeGroupFromTenant: (tenantId: string, groupId: string) => Promise<unknown>;
        getApplications: (tenantId: string) => Promise<TenantApplicationDto[]>;
        getAvailableApplications: (tenantId: string) => Promise<AvailableApplicationDto[]>;
        assignApplication: (tenantId: string, applicationId: string) => Promise<TenantApplicationDto>;
        removeApplication: (tenantId: string, applicationId: string) => Promise<unknown>;
        bulkAssignApplications: (tenantId: string, request: BulkAssignAppsRequest) => Promise<BulkAssignAppsResponse>;
        toggleApplication: (tenantId: string, applicationId: string, isActive: boolean) => Promise<unknown>;
        updateApplicationAccessLevel: (tenantId: string, applicationId: string, accessLevel: ApplicationAccessLevel) => Promise<unknown>;
        getModules: (tenantId: string) => Promise<TenantModuleDto[]>;
        getAvailableModules: (tenantId: string) => Promise<AvailableModuleDto[]>;
        assignModule: (tenantId: string, moduleId: string) => Promise<TenantModuleDto>;
        removeModule: (tenantId: string, moduleId: string) => Promise<unknown>;
        toggleModule: (tenantId: string, moduleId: string, isActive: boolean) => Promise<unknown>;
        getSections: (tenantId: string) => Promise<TenantSectionDto[]>;
        getAvailableSections: (tenantId: string) => Promise<AvailableSectionDto[]>;
        assignSection: (tenantId: string, sectionId: string) => Promise<TenantSectionDto>;
        removeSection: (tenantId: string, sectionId: string) => Promise<unknown>;
        toggleSection: (tenantId: string, sectionId: string, isActive: boolean) => Promise<unknown>;
        getModulesWithSections: (tenantId: string, applicationId: string) => Promise<ModuleWithSectionsDto[]>;
        linkOrganisation: (tenantId: string, organisationId: string) => Promise<unknown>;
        unlinkOrganisation: (tenantId: string) => Promise<unknown>;
    };
    templates: {
        getAll: () => Promise<TenantTemplateDto[]>;
        getById: (id: string) => Promise<TenantTemplateDetailDto>;
        create: (data: CreateTenantTemplateRequest) => Promise<TenantTemplateDto>;
        update: (id: string, data: UpdateTenantTemplateRequest) => Promise<TenantTemplateDto>;
        delete: (id: string) => Promise<unknown>;
        assignApplication: (templateId: string, appId: string) => Promise<unknown>;
        removeApplication: (templateId: string, appId: string) => Promise<unknown>;
        bulkAssignApplications: (templateId: string, request: BulkAssignTemplateAppsRequest) => Promise<unknown>;
        getTenants: (templateId: string) => Promise<TenantBasicDto[]>;
    };
    organisations: {
        getAvailable: (search?: string) => Promise<OrganisationListItemDto[]>;
        getById: (id: string) => Promise<OrganisationDto>;
        create: (data: CreateOrganisationRequest) => Promise<OrganisationDto>;
        /** Lookup company info from official registry (e.g., Zefix for Switzerland) */
        lookup: (countryCode: string, identifier: string) => Promise<CompanyLookupResponse>;
    };
    myTenants: {
        getAll: (search?: string) => Promise<UserTenantDto[]>;
        getDefault: () => Promise<UserTenantDto | null>;
        setDefault: (tenantId: string) => Promise<unknown>;
        clearDefault: () => Promise<unknown>;
        getFavorites: () => Promise<string[]>;
        addFavorite: (tenantId: string) => Promise<string[]>;
        removeFavorite: (tenantId: string) => Promise<string[]>;
        recordRecent: (tenantId: string) => Promise<unknown>;
    };
    preferences: {
        /** Get preferences with scope info (effective scope, has tenant override, etc.) */
        get: () => Promise<UserPreferencesWithScopeDto>;
        /** Get global preferences only (TenantId = null), ignoring tenant-specific overrides */
        getGlobal: () => Promise<UserPreferencesWithScopeDto>;
        /** Get preferences for a specific tenant (for editing without switching context) */
        getForTenant: (tenantId: string) => Promise<UserPreferencesWithScopeDto>;
        /** Get list of tenant IDs that have theme overrides */
        getThemeOverrides: () => Promise<string[]>;
        /** Delete tenant-specific preferences, reverting to global */
        deleteTenantOverride: () => Promise<UserPreferencesWithScopeDto>;
        /** Create tenant-specific preferences from current effective preferences */
        applyToTenant: () => Promise<UserPreferencesWithScopeDto>;
    };
};
export { createAdminApi };
//# sourceMappingURL=adminApi.d.ts.map