import type { ExplainedObjectFieldPolicy, ResolvedObjectFieldPolicy, ResolveFieldPolicyOptions } from './types.js'; /** * Resolve the merged field policy for `objectRef` in the given * `(tenantId, userId)` context: code seed → app rows → tenant rows (hierarchy * walk root → leaf) → user rows. Defaults AND visibility both resolve through * the user tier. * * Results are cached per `(database, objectRef, tenantId, userId)` with a * short TTL; `FieldPolicy.save()`/`.delete()` invalidate the object's entries. */ export declare function resolveFieldPolicy(objectRef: string, options?: ResolveFieldPolicyOptions): Promise; /** * The tenant ids whose rows participate in precedence for a tenant, root to * leaf. Catalog code uses this instead of reimplementing inheritance-break * handling when it decides whether an inherited override is customized. */ export declare function resolveSurvivingTenantChainIds(tenantId: string, options?: ResolveFieldPolicyOptions): Promise; /** * Explain variant: the merged result plus ordered per-layer contributions for * each field, so the gear UI (#2049, "shows inherited base") and the control * panel (#2050, effective-value-per-layer) never re-derive precedence. * * A user-layer row suppressed by an effective org lock is omitted from the * layer list too — the listed layers always reproduce the merged result. */ export declare function resolveFieldPolicyExplained(objectRef: string, options?: ResolveFieldPolicyOptions): Promise; /** * Whether an import failure means `@happyvertical/smrt-users` is simply not * installed (→ flat-tenant fallback) rather than installed-but-broken * (→ rethrow, surfacing the problem instead of silently losing ancestor * locks/defaults). * * The decision is made on the missing-module TARGET parsed from Node's * `Cannot find package/module ''` message (walking the full * `cause` chain): only a target that IS smrt-users (or one of its subpaths) * counts. A transitive failure INSIDE an installed smrt-users names the * other package as the target — with the users path merely appearing as the * importer — and therefore rethrows. `importWorkspaceModule`'s own * source-fallback wrapper ("Failed to load @happyvertical/smrt-users for * ...") is also accepted: it is thrown only when the users package itself * cannot be located. * * Exported for direct testing; not re-exported from the package index. */ export declare function isMissingUsersDependency(error: unknown): boolean; //# sourceMappingURL=field-policy-resolver.d.ts.map