import type { SatelliteSpec } from './types.js'; export interface SatelliteDeclarationInput { readonly satellite: string; readonly satelliteOf: string; readonly fields: readonly string[] | undefined; readonly joined?: string | undefined; /** True when the named base is itself registered as a satellite (R-S3). */ readonly baseIsSatellite: boolean; /** True when the declaring collection (or its base) sets crdtMode (R-S8). */ readonly crdtMode: boolean; /** True when `joined` names an already-declared plain (non-pair) collection (R-S5). */ readonly joinedCollidesWithCollection: boolean; } /** Sync declaration refusals R-S3/R-S5/R-S8. Async cross-checks live in registry.ts. */ export declare function validateSatelliteDeclaration(input: SatelliteDeclarationInput): SatelliteSpec; /** Order-insensitive stable hash of the fields list (FNV-1a over the sorted, joined names). */ export declare function hashFields(fields: readonly string[]): string;