import { Address, Bytes, Property } from '@cryptoeconomicslab/primitives'; import { KeyValueStore } from '@cryptoeconomicslab/db'; import { Coder } from '@cryptoeconomicslab/coder'; import { Decider } from './interfaces/Decider'; import { Decision } from './types'; import { DeciderConfig } from './load'; import { CompiledPredicate } from './decompiler'; export interface DeciderManagerInterface { readonly coder: Coder; decide(property: Property, substitutions?: { [key: string]: Bytes; }): Promise; getDeciderAddress(shortname: string): Address; getStorageDb(): Promise; isDecompiledProperty(property: Property): boolean; decompile(property: Property): Property | null; } export declare class DeciderManager implements DeciderManagerInterface { readonly coder: Coder; private deciders; private shortnames; private compiledPredicates; witnessDb: KeyValueStore; config?: DeciderConfig; constructor(witnessDb: KeyValueStore, coder?: Coder); private restoreHint; loadJson(config: DeciderConfig): void; setDecider(address: Address, decier: Decider, shortname?: string): void; getDecider(address: Address): Decider | null; getDeciderAddress(shortname: string): Address; get shortnameMap(): ReadonlyMap; get compiledPredicateMap(): ReadonlyMap; setCompiledPredicate(predicateName: string, compiledPredicate: CompiledPredicate): void; getStorageDb(): Promise; decide(property: Property, substitutions?: { [key: string]: Bytes; }): Promise; isDecompiledProperty(property: Property): boolean; decompile(property: Property): Property | null; } export declare const bindVariables: (inputs: Bytes[], substitutions: { [key: string]: Bytes; }) => Bytes[];