export class SimpleStateMachineDescription {

    traverseStates(visitor: (state: number) => any, thisArg?: any): void

    stateExists(s: number): boolean

    edgeExists(a: number, b: number): boolean

    createState(id?: number): number

    createEdge(a: number, b: number): void

    setAction<T>(state: number, logic: (input: T) => number): void

    getOutgoingStates(state: number): number[]

    getIncomingStates(state: number): number[]

    findPath(start: number, goal: number): number[] | null

}
