import { Map as ImmutableMap } from 'immutable'; export declare type StateId = KeyType; export declare type BranchId = KeyType; export declare type StateHash = string; export interface IConfiguration { debug?: boolean; actionFilter?: (actionType: string) => boolean; stateEqualityPredicate?: (s1: T, s2: T) => boolean; stateKeyGenerator?: (state: T) => StateHash; loadActionType?: string; clearActionType?: string; undoActionType?: string; redoActionType?: string; jumpToStateActionType?: string; jumpToBranchActionType?: string; jumpToLatestOnBranchActionType?: string; createBranchActionType?: string; renameBranchActionType?: string; renameStateActionType?: string; squashActionType?: string; initialBranchName?: string; initialStateName?: string; skipToStartActionType?: string; skipToEndActionType?: string; actionName?: (state: any, stateId: StateId) => string; branchName?: (oldBranch: BranchId, newBranch: BranchId, actionName: string) => string; canHandleAction?: (action: any) => boolean; handleAction?: (action: any, history: IDagHistory) => IDagHistory; } export interface IDagHistory { current: T; lastStateId: StateId; lastBranchId: BranchId; stateHash: Map; chronologicalStates: StateId[]; graph: ImmutableMap; } export interface StateIdGenerator { (lastStateId: StateId): StateId; } export interface StateNameGenerator { (state: any, id: StateId): string; } export interface RenameBranchPayload { branch: BranchId; name: string; }