/** * Design §4 — the host's product slug, derived at init from its product name and * overridable in config. It prefixes every extracted host tool * (`maple_invoices_list`) so the model reads them as the product's own actions. * * Throws rather than falling back, deliberately: a silent fallback would either * reintroduce `host_` or invent a slug the host never chose, and because the slug * is part of every tool name it is part of every `descriptorHash` — so getting it * wrong silently revokes the deployment's grants later instead of failing now. */ export declare function deriveProductSlug(productName: string): string; /** * The tool name the model sees. Idempotent in both directions that matter: * extraction runs repeatedly, so a stem that already carries the slug is not * double-prefixed, and a legacy `host_` stem has that prefix REPLACED rather * than stacked on (`maple_host_invoices_list` would be nonsense). */ export declare function prefixedToolName(slug: string, stem: string): string;