/** * Shared banner-block builder. * * Emits the opening banner as a sequence of semantically-classed * blocks. Used by both `handleGameStarted` and `handleAboutDisplayed` * so the banner shown at game-start and via the ABOUT command are * structurally identical. * * Pieces (in order): * * 1. `game-title` — title * 2. `story-version` — `Story v{version}` + optional build date * 3. `platform-version` — `Sharpee v{engineVersion}` (if provided) * 4. `sub-title` — description (if provided) * 5. `author-list[]` — `credits` if provided, else single * `By {author}` line if `author` is set * 6. `banner-spacer` — empty `

` for visual separation * 7. story-tail — appended via `createBlocks` from * `game.banner.story-tail` if the language * provider has that template * * Owner context: `@sharpee/engine` — internal prose pipeline. */ import type { ITextBlock } from '@sharpee/text-blocks'; import type { HandlerContext } from './types'; /** * Subset of story metadata used by the banner builder. * Both `handleGameStarted` (`event.data.story`) and * `handleAboutDisplayed` (`event.data.params`) project into this shape. */ export interface BannerStoryInfo { title?: string; version?: string; buildDate?: string; description?: string; author?: string; credits?: string[]; } /** * Build the structured banner blocks for a `key` (typically * `'game.banner'` from `game.started` or `'about.text'` from ABOUT). */ export declare function buildBannerBlocks(key: string, story: BannerStoryInfo | undefined, engineVersion: string | undefined, context: HandlerContext): ITextBlock[]; //# sourceMappingURL=banner.d.ts.map