import type { AnyInventory, InstallInventory, MarketplaceInventory, PluginInventory } from './types.js'; export declare const INVENTORY_SCHEMA_VERSION = "vat.inventory/v1alpha"; type Format = 'yaml' | 'json'; type ShallowPluginInventory = Omit & { discovered: Omit & { skills: null; }; }; type ShallowMarketplaceInventory = Omit & { discovered: { plugins: null; }; }; type ShallowInstallInventory = Omit & { marketplaces: ShallowMarketplaceInventory[]; plugins: ShallowPluginInventory[]; }; /** * An inventory as projected for serialization. Structurally an inventory, except * that lists the projection skipped are {@link NotWalked} rather than empty. */ export type ShallowInventory = ShallowMarketplaceInventory | ShallowPluginInventory | ShallowInstallInventory | AnyInventory; /** * Serialize an inventory with a top-level schema discriminator. * * The discriminator must come FIRST in the output so consumers can * sniff the schema version without parsing the whole document. */ export declare function serializeInventory(inv: AnyInventory, format?: Format): string; /** * Shallow projection: keep top-level structure but drop transitive nesting. * * Every list the projection skips is emitted as `null` — NOT as `[]` — and the * document carries a top-level `projection: shallow` marker, so a consumer can * tell an unwalked list from an empty one both per-field and document-wide. * * - Plugin → `discovered.skills: null` (the skills list is preserved as * ComponentRefs in `declared.skills` if the manifest declared them). * - Marketplace → `discovered.plugins: null`. * - Install → each marketplace and plugin shallow-projected (their own * discovered children unwalked, but path/manifest/declared kept). * * Use case: tooling that wants top-level structure without the bulk. */ export declare function serializeInventoryShallow(inv: AnyInventory, format?: Format): string; export {}; //# sourceMappingURL=serialize.d.ts.map