UNPKG

narrative-studio-sdk

Version:

Narrative SDK for building apps on the Narrative Studio

68 lines (67 loc) 3.07 kB
import { Asset, Category, Construct, Frame, FrameGroup, Lane, LaneGroup, Scheme, Script, ViewMode } from './Scheme.types'; import { SerializationRule } from './SerializationRule'; interface SchemeBuilderStart { addCategory(name: string): SchemeBuilderCategory; withSerializationRules(rules: SerializationRule[]): SchemeBuilderStart; withViewModes(modes: ViewMode[]): SchemeBuilderStart; } interface SchemeBuilderCategory { addAsset(asset: Asset): SchemeBuilderCategory; addConstruct(construct: Construct): SchemeBuilderConstructStart; addCategory(name: string): SchemeBuilderCategory; build(): Scheme; } interface SchemeBuilderConstructStart extends SchemeBuilderCategory { addScript(script: Script): SchemeBuilderScriptStart; } interface SchemeBuilderScriptStart { addFrameGroup(frameGroup: FrameGroup): SchemeBuilderScriptFrameGroup; addLaneGroup(laneGroup: LaneGroup): SchemeBuilderScriptLaneGroup; build(): Scheme; } interface SchemeBuilderScriptFrameGroup extends SchemeBuilderCategory { addFrame(frame: Frame): SchemeBuilderScriptFrameGroup; addFrameGroup(frameGroup: FrameGroup): SchemeBuilderScriptFrameGroup; addLaneGroup(laneGroup: LaneGroup): SchemeBuilderScriptLaneGroup; } interface SchemeBuilderScriptLaneGroup extends SchemeBuilderCategory { addLane(lane: Lane): SchemeBuilderScriptLaneGroup; addLaneGroup(laneGroup: LaneGroup): SchemeBuilderScriptLaneGroup; addFrameGroup(frameGroup: FrameGroup): SchemeBuilderScriptFrameGroup; } type SchemeInput = Omit<Scheme, 'categories'> & { categories?: Category[]; serializationRules?: SerializationRule[]; viewModes?: ViewMode[]; }; export interface ISchemeProvider { getScheme(): Scheme; } export declare class SchemeBuilder implements SchemeBuilderStart, SchemeBuilderCategory, SchemeBuilderConstructStart, SchemeBuilderScriptStart, SchemeBuilderScriptFrameGroup, SchemeBuilderScriptLaneGroup { private readonly scheme; private currentCategory?; private currentConstruct?; private currentScript?; private currentFrameGroup?; private currentLaneGroup?; private constructor(); static create(scheme: SchemeInput): SchemeBuilderStart; withSerializationRules(rules: SerializationRule[]): SchemeBuilderStart; withViewModes(modes: ViewMode[]): SchemeBuilderStart; addCategory(name: string): SchemeBuilderCategory; addAsset(asset: Asset): SchemeBuilderCategory; addConstruct(construct: Construct): SchemeBuilderConstructStart; addScript(script: Script): SchemeBuilderScriptStart; addFrameGroup(frameGroup: FrameGroup): SchemeBuilderScriptFrameGroup; addFrame(frame: Frame): SchemeBuilderScriptFrameGroup; addLaneGroup(laneGroup: LaneGroup): SchemeBuilderScriptLaneGroup; addLane(lane: Lane): SchemeBuilderScriptLaneGroup; build(): Scheme; private finalizePendingItems; private ensureCategoryExists; private ensureConstructExists; private ensureScriptExists; private ensureFrameGroupExists; private ensureLaneGroupExists; } export {};