import type { Jurisdiction, StorageShape } from '@substrat-run/contracts'; import type { ProvisionScopeInput } from './scope-host.js'; /** The directory columns `provisionScope` writes, with every optional resolved. */ export interface ResolvedScopeRecord { slug: string; kind: string; name: string; vertical: string | null; storageShape: StorageShape; jurisdiction: Jurisdiction; forkedFrom: string | null; forkedAt: string | null; expiresAt: string | null; } /** * Resolve `ProvisionScopeInput`'s optional naming fields into the row both * adapters write. * * It lives in the kernel, not in either adapter, because these defaults are a * CONTRACT: "an unnamed scope's slug is its lowercased id" has to be one fact * with one implementation. Two copies would agree until the day they didn't, and * the contract tests — which run the same suite against both adapters — would * still pass, because each adapter would be consistent with itself. * * The slug is parsed rather than trusted (the boundary rule): an invalid slug * fails here, at provisioning, instead of at the first `listScopes` read, when * the scope already exists and the caller is someone else. */ export declare function resolveScopeRecord(input: ProvisionScopeInput): ResolvedScopeRecord; //# sourceMappingURL=scope-record.d.ts.map