narrative-studio-sdk
Version:
Narrative SDK for building apps on the Narrative Studio
68 lines (67 loc) • 3.07 kB
TypeScript
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 {};