import type { DesignImportAsset, DesignImportKind } from './designImport.js'; import type { NodeModel, PageModel } from './store.js'; export interface DesignAssetEditRequest { kind: DesignImportKind; asset: DesignImportAsset; pageId: string; } export interface DesignAssetSourceOwnership { /** The inventory source users selected. */ assetPath: string | null; /** The React/DOM implementation that owns the rendered node. */ implementationPath: string | null; /** The stylesheet that owns the selected visual rules, when present. */ stylePath: string | null; /** True only when the rendered implementation belongs to the selected asset. */ direct: boolean; } /** * Describe whether an inventory selection owns the rendered layer it resolved. * * A composition may render another shared primitive at its root. Its catalog * marker still makes that primitive the best inspection target, but editing * the primitive would have a much wider blast radius than editing the selected * composition. Callers use this distinction to keep inspection available * without presenting unrelated shared styles as the asset's own controls. */ export declare function designAssetSourceOwnership(node: NodeModel, asset: DesignImportAsset): DesignAssetSourceOwnership; /** Resolve the implementation layer represented by one inventory asset. */ export declare function findDesignAssetEditTarget(root: NodeModel, asset: DesignImportAsset): NodeModel | null; export declare function pageForDesignAsset(pages: readonly PageModel[], kind: DesignImportKind, asset: DesignImportAsset): PageModel | null;