import type { EntitlementBlockKey, SimpleEntitlementState } from './types.js'; import type { TenantAllowedPurposes, TenantSurfaceScope } from './tenantScopeTypes.js'; /** Purpose axis — always locked; top „Povolené účely“ picker is the source of truth. */ export declare const TENANT_PURPOSE_AXIS_BLOCK_KEYS: readonly ["product_vending", "donation"]; /** Surface axis — always locked; top „Aplikace zákazník a kiosk“ picker is the source of truth. */ export declare const TENANT_SURFACE_AXIS_BLOCK_KEYS: readonly ["surface_kiosk", "surface_customer"]; /** Blocks whose SIMPLE values are overwritten by tenant scope pickers (never stored in user draft when locked). */ export declare const TENANT_AXIS_CONTROLLED_BLOCK_KEYS: readonly ["product_vending", "donation", "surface_kiosk", "surface_customer"]; export type TenantAxisControlledBlockKey = (typeof TENANT_AXIS_CONTROLLED_BLOCK_KEYS)[number]; /** Whether SIMPLE state counts as runtime-active (Zapnuto bucket in DEV policy UI). */ export declare function isRuntimeActiveSimpleEntitlementState(state: SimpleEntitlementState | undefined): boolean; /** Default non-axis SIMPLE blocks for new tenants (both commerce + both surfaces). */ export declare function buildDefaultTenantScopeBaseline(): Partial>; export declare function isAxisControlledEntitlementBlock(blockKey: EntitlementBlockKey): blockKey is TenantAxisControlledBlockKey; /** Product-commerce blocks locked ON whenever product vending is part of tenant allowed purposes. */ export declare const TENANT_PRODUCT_PURPOSE_LOCKED_BLOCK_KEYS: readonly ["catalog_administration", "inventory_management", "product_barcode_administration"]; export type TenantProductPurposeLockedBlockKey = (typeof TENANT_PRODUCT_PURPOSE_LOCKED_BLOCK_KEYS)[number]; export declare function isProductCommerceAllowed(allowedPurposes: TenantAllowedPurposes): boolean; /** * True when SIMPLE state is fully determined by tenant scope pickers (not editable in DEV policy UI). */ export declare function isTenantScopeLockedBlock(blockKey: EntitlementBlockKey, allowedPurposes: TenantAllowedPurposes, _surfaceScope: TenantSurfaceScope): boolean; export declare function stripAxisControlledSimpleStates(states: Partial>, scope?: { readonly allowedPurposes: TenantAllowedPurposes; readonly surfaceScope: TenantSurfaceScope; }): Partial>; /** Applies tenant commerce + surface scope onto SIMPLE states (axis blocks overwritten). */ export declare function applyTenantScopeToSimpleStates(allowedPurposes: TenantAllowedPurposes, surfaceScope: TenantSurfaceScope, current?: Partial>): Partial>; export declare function inferAllowedPurposesFromSimpleStates(states: Partial>): TenantAllowedPurposes; export declare function inferSurfaceScopeFromSimpleStates(states: Partial>): TenantSurfaceScope; /** Blocks whose explicit inactive SIMPLE values must survive axis strip + scope resolve (save/draft rebuild). */ export declare const EXPLICIT_INACTIVE_REINJECT_BLOCK_KEYS: readonly ["donation", "analytics_overview", "analytics_explore"]; /** * Re-applies explicit off/hardOff from source after axis-controlled keys are stripped. * Mirrors donation on BOTH save path; analytics use the same contract since 2.3.1. */ export declare function reinjectExplicitInactiveSimpleStates(scopeBase: Partial>, sourceStates: Partial>, blockKeys?: readonly EntitlementBlockKey[]): Partial>; /** Preserve hardOff when dependency implications soften to off (UI Tvrdé vypnutí must stick). */ export declare function preserveHardOffSimpleStates(implied: Partial>, sourceStates: Partial>, blockKeys?: readonly EntitlementBlockKey[]): Partial>; //# sourceMappingURL=applyTenantScopeToSimpleStates.d.ts.map