/** * Whether the resource-builder resolves this project type's artefact resources * from its bare `type` row, rather than only from a `_` one. * * Callers use it to decide who generates a project's resources. A type with a * bare row can be registered from the host at `projects add` time. A type * without one cannot: the variant that picks its row lives in a file format the * project's own tool owns, so its resources arrive later — at ` init` * inside a solution, or at pack / upload / `resources refresh`, where the tool * is loaded and reports its `projectSubType` through the project resource * contribution and `reconcileProjectsAsync` generates them. * * Reading the answer off the table keeps the list of such types out of every * caller (AGENTS.md Hard Rule #19): the table is the resource-builder's own, * and a type added to it needs no edit here or in the CLI. * * Registering with no subType is not a harmless no-op, which is why the * distinction matters. Measured against resource-builder-sdk * 2025.11.0-alpha5891-4020, on a fresh solution: * * - `createProjectAsync` with a type that has no bare row and no subType * writes `process/process/.json` — the SDK's Process fallback, i.e. * the wrong resource, which then has to be repaired. * - `reconcileProjectsAsync` with the right subType repairs it in full, * including deleting that stale `process/` artefact, and corrects an app * resource generated under the wrong variant. * - `reconcileProjectsAsync` with no subType is inert, never destructive. */ export declare function hasBareTemplateRow(projectType: string): boolean; /** * Whether the table has any row for this type — bare or `_`. * A type with none declares no template-generated resources at all, so * nothing is left for a later tool run to generate. */ export declare function hasAnyTemplateRow(projectType: string): boolean;