// @flow import type {OperatorKeys} from "./condition-operators"; import type {Content} from "../types"; export type ChapterRule = {conditions: Array<{operator: $Keys<{BETWEEN: (expectedValues: Array, value: T) => boolean, EQUALS: (expectedValues: Array, value: T) => boolean, GT: (expectedValues: Array, value: T) => boolean, GTE: (expectedValues: Array, value: T) => boolean, IN: (expectedValues: Array, value: T) => boolean, LT: (expectedValues: Array, value: T) => boolean, LTE: (expectedValues: Array, value: T) => boolean, NOT_BETWEEN: (expectedValues: Array, value: T) => boolean, NOT_EQUALS: (expectedValues: Array, value: T) => boolean, NOT_IN: (expectedValues: Array, value: T) => boolean}>, target: {field: "lives" | "stars" | string, scope: "variable"} | {field: "isCorrect" | "answer", ref: string, scope: "slide"}, values: Array>}>, destination: {ref: string, type: string, version?: string} | {ref: string, type: "video" | "pdf", version?: string}, instructions: Array<{field: string, type: "add" | "set", value: number | boolean | string}>, priority: number, ref?: string, source: {ref: string, type: string, version?: string} | {ref: string, type: "video" | "pdf", version?: string}}; export type Condition = {operator: $Keys<{BETWEEN: (expectedValues: Array, value: T) => boolean, EQUALS: (expectedValues: Array, value: T) => boolean, GT: (expectedValues: Array, value: T) => boolean, GTE: (expectedValues: Array, value: T) => boolean, IN: (expectedValues: Array, value: T) => boolean, LT: (expectedValues: Array, value: T) => boolean, LTE: (expectedValues: Array, value: T) => boolean, NOT_BETWEEN: (expectedValues: Array, value: T) => boolean, NOT_EQUALS: (expectedValues: Array, value: T) => boolean, NOT_IN: (expectedValues: Array, value: T) => boolean}>, target: {field: "lives" | "stars" | string, scope: "variable"} | {field: "isCorrect" | "answer", ref: string, scope: "slide"}, values: Array>}; export type Instruction = {field: string, type: "add" | "set", value: number | boolean | string}; export type OperatorKeys = $Keys<{BETWEEN: (expectedValues: Array, value: T) => boolean, EQUALS: (expectedValues: Array, value: T) => boolean, GT: (expectedValues: Array, value: T) => boolean, GTE: (expectedValues: Array, value: T) => boolean, IN: (expectedValues: Array, value: T) => boolean, LT: (expectedValues: Array, value: T) => boolean, LTE: (expectedValues: Array, value: T) => boolean, NOT_BETWEEN: (expectedValues: Array, value: T) => boolean, NOT_EQUALS: (expectedValues: Array, value: T) => boolean, NOT_IN: (expectedValues: Array, value: T) => boolean}>; export type Target = {field: "lives" | "stars" | string, scope: "variable"} | {field: "isCorrect" | "answer", ref: string, scope: "slide"}; export type Variables = {lives: number, stars: number, variables: {[_: string]: string | boolean | number}}; declare module.exports: {};