/** * Relation option loaders shared by the create/edit Form and the list-view * FK filter sidebar. Split out of `handler.ts` — pure orchestration over * `AdminRuntime` (schema/relationGraph/adapter already resolved at boot), * no boot logic lives here. */ import type { PrismaModel } from './introspection/parser.js'; import type { RelationMeta, FkFilterMeta } from './views/types.js'; import { type AdminRuntime } from './runtime.js'; import type { Filter } from './adapters/types.js'; export declare function combinedScope(...scopes: Array | undefined>): Filter | undefined; export declare function filterSelectedIds(runtime: AdminRuntime, targetModel: PrismaModel, ids: Array | undefined, ctx: { locals?: any; }, relationScope?: Filter | Record): Promise | undefined>; /** * Charge les options pour toutes les arêtes to-one-owning et m2m * d'un modèle. Une requête COUNT par relation avant le findMany : évite de * charger 10k lignes pour découvrir qu'il y en a 10k. */ export declare function loadRelationOptions(runtime: AdminRuntime, model: PrismaModel, ctx: { locals?: any; }, currentId?: string): Promise>; /** * Options d'un filtre FK : charge et scope les valeurs possibles pour la * sidebar, ET résout le label du chip actif. Doctrine IDOR (docs/design * §6.3) : les options ET le label du chip passent par le `where` de * scoping de la relation — un chip forgé avec un ID hors scope affiche * l'ID brut, jamais le label (sinon c'est un oracle sur le nom d'un * enregistrement d'un autre tenant). */ export declare function resolveFkFilterOptions(runtime: AdminRuntime, model: PrismaModel, fkFieldName: string, label: string, ctx: { locals?: any; }, activeRawValue: string | undefined): Promise; /** * Compte, pour chaque relation inverse (1-N, 1-1) d'un modèle, le nombre * d'enregistrements liés côté cible. Résilient : une cible dont le client * échoue (mock partiel, modèle absent) retombe sur 0 plutôt que de casser * le rendu du formulaire. */ export declare function loadRelatedCounts(runtime: AdminRuntime, model: PrismaModel, currentId: string, ctx: { locals?: any; }): Promise>;