import type { ShopUserRole } from "./enums.js";
export declare const SHOP_USER_PERMISSION_KEYS: readonly ["cash_session.open", "cash_session.close", "cash_session.reopen", "cash_session.manual_operation.create", "cash_session.deposit_refund.create", "cash_session.deposit_refund.undo_own"];
export type ShopUserPermissionKey = typeof SHOP_USER_PERMISSION_KEYS[number];
export type ShopUserPermissionOverrideMode = "inherit" | "grant" | "deny";
export interface ShopUserPermissionOverrides {
    grants: ShopUserPermissionKey[];
    denies: ShopUserPermissionKey[];
}
export interface ShopUserPermissionDefinition {
    key: ShopUserPermissionKey;
    label: string;
    description: string;
    group: "session" | "cash_movements" | "deposit_refunds";
}
export declare const SHOP_USER_PERMISSION_DEFINITIONS: ShopUserPermissionDefinition[];
export declare const CASH_SESSION_LIFECYCLE_PERMISSION_KEYS: ShopUserPermissionKey[];
export declare const CASH_SESSION_MOVEMENT_PERMISSION_KEYS: ShopUserPermissionKey[];
export declare function normalizeShopUserPermissionOverrides(input?: Partial<ShopUserPermissionOverrides> | null): ShopUserPermissionOverrides;
export declare function isEmptyShopUserPermissionOverrides(input?: Partial<ShopUserPermissionOverrides> | null): boolean;
export declare function getRoleDefaultPermissions(role: ShopUserRole): ShopUserPermissionKey[];
export declare function resolveShopUserEffectivePermissions(role: ShopUserRole, overrides?: Partial<ShopUserPermissionOverrides> | null): ShopUserPermissionKey[];
export declare function hasShopUserPermission(user: {
    role: ShopUserRole;
    effectivePermissions?: readonly string[] | null;
    permissionOverrides?: Partial<ShopUserPermissionOverrides> | null;
} | null | undefined, permission: ShopUserPermissionKey): boolean;
export declare function hasAnyShopUserPermission(user: {
    role: ShopUserRole;
    effectivePermissions?: readonly string[] | null;
    permissionOverrides?: Partial<ShopUserPermissionOverrides> | null;
} | null | undefined, permissions: readonly ShopUserPermissionKey[]): boolean;
export declare function getShopUserPermissionOverrideMode(overrides: Partial<ShopUserPermissionOverrides> | null | undefined, permission: ShopUserPermissionKey): ShopUserPermissionOverrideMode;
