import { ExecutableManifest, ProductConfig, RootManifest } from './types.js'; /** * Handwritten validators for product-manifest shapes. * * Domain validation is shape-only. It mirrors dotNS label rules without * importing the chain-aware [`parseDomainName`](../dotns.ts) helper, so the * module stays free of the polkadot-api dep. Authoritative ownership and * eligibility checks happen at publish-time preflight in * [`publish.ts`](./publish.ts). * * Subname depth is not checked here (#1449): `parseDomainName` accepts any * depth, so this validator has nothing to mirror — it never had an opinion * on depth beyond ordinary domain shape. */ interface ValidationOk { ok: true; value: T; } interface ValidationErr { ok: false; errors: string[]; } type ValidationResult = ValidationOk | ValidationErr; /** Validate a `RootManifest` JSON value read from a dotNS `manifest` text record. */ declare function validateRootManifest(input: unknown): ValidationResult; /** Validate an `ExecutableManifest` JSON value (one of `app | widget | funding | worker`). */ declare function validateExecutableManifest(input: unknown): ValidationResult; /** Validate a `bulletin-deploy.config.ts` default export. */ declare function validateProductConfig(input: unknown): ValidationResult; export { type ValidationErr, type ValidationOk, type ValidationResult, validateExecutableManifest, validateProductConfig, validateRootManifest };