import type { ShowBibleArtifact } from './show-bible.js'; import type { AssetTagLookup } from './prompt-rules.js'; import type { ProviderRouteId } from './provider-platform/types.js'; /** Seedance family — identity rides on references + a specific descriptor. */ export declare const SEEDANCE_ROUTE_FAMILY: Set<"veo-useapi" | "runway-useapi" | "dreamina-useapi" | "seedance-direct" | "magnific-rest">; /** Flow family — identity rides on a registered Flow Character. */ export declare const FLOW_ROUTE_FAMILY: Set<"veo-useapi" | "runway-useapi" | "dreamina-useapi" | "seedance-direct" | "magnific-rest">; export type ShowRouteFamily = 'seedance' | 'flow' | 'other'; export declare function routeFamilyFor(routeId: ProviderRouteId): ShowRouteFamily; /** * Is this sheetRef/plateRef a reference the provider can consume WITHOUT a local * filesystem upload — i.e. an `Asset://` URI, an http(s) URL, or a `gobananas://` * URI? These pass through unchanged on every route. */ export declare function isHostedReference(ref: string): boolean; /** * Resolve a bible-stored sheetRef/plateRef that may be a hosted URI, an absolute * path, or a repo/project-relative path. Hosted refs pass through unchanged. * Absolute paths pass through unchanged. A relative path is resolved against the * PROJECT root first, then the workspace root (mirrors environment-assets * preferring the hosted plateUrl). Returns null when a relative path resolves to * nothing on disk (so the caller can drop it / flag it). PURE except the * existsSync probe used to pick the directory. */ export declare function resolveBibleRef(ref: string | undefined, dirs: { projectDir: string; workspaceRoot: string; }): string | null; /** * The bible-derived sources `buildExecutionPayload` folds into its existing * name-keyed maps. Keys are lowercased to match the lookups' conventions * (voiceByCharacter / characterRefByName lowercase; seedance assetUriByName is * exact-case, so the seedance back-fill below seeds with the bible's exact name * too). Every value is a LOW-PRIORITY back-fill — only used for a name the * per-project artifacts did not already resolve. */ export interface ShowBibleSourcesForRoute { /** * On seedance-direct only: cast sheetRefs that ARE `Asset://` URIs, keyed by * the bible's exact cast name (matches seedance `assetUriByName` casing). A raw * local portrait is NOT included — it fails submit + trips the real-person * filter (same rule as the asset-tag `assetUriOnly` path). */ assetUriByName: Map; /** * Cast + location refs the @Name/@location lookup should resolve to (descriptor * + an image referencePath when the ref is submittable on this route). Lowercased. */ assetTagEntries: AssetTagLookup; /** * Per-scene image references to attach for cast sheets + location plates on the * SEEDANCE family. Empty on Flow (the Flow Character bundles identity). Keyed * lowercase by cast name; the location plate is keyed by lowercase location name. */ imageRefByName: Map; /** * character (lowercased) -> voice clip reference (hosted URL preferred). Seeds * the same `voiceByCharacter` map the voice auto-inject path reads. */ voiceRefByCharacter: Map; } /** * Build the route-specific bible sources. Deterministic / no I/O beyond the * existsSync probe inside resolveBibleRef. * * Per-route: * • seedance family: cast sheetRefs become image refs (Asset:// preferred on * seedance-direct; hosted/local allowed on runway/dreamina), location * plateRefs become image refs, and bound voices become voice refs. * • flow: NOTHING is attached as a reference (the Flow Character carries * identity); the bible only supplies descriptor text via assetTagEntries. * • other: empty (no live route). */ export declare function buildShowBibleSourcesForRoute(input: { bible: ShowBibleArtifact; routeId: ProviderRouteId; projectDir: string; workspaceRoot: string; }): ShowBibleSourcesForRoute; /** * Match a scene's text (description + animation prompt) against the bible's * location names. Returns the lowercased name of the FIRST location whose name * appears as a whole word in the scene text (word-boundary, case-insensitive), * or null. Mirrors the substring style stripProperNames uses. PURE. */ export declare function matchSceneLocation(sceneText: string, locationNames: string[]): string | null; //# sourceMappingURL=show-bible-attach.d.ts.map