import { Bytes, FixedBytes, BigNumber, Property } from '@cryptoeconomicslab/primitives'; import { TraceInfo } from './Tracer'; export interface Challenge { property: Property; challengeInputs: Bytes[]; } export interface Decision { outcome: boolean; witnesses?: Bytes[]; challenge: Challenge | null; traceInfo?: TraceInfo; } export declare class ChallengeGame { readonly propertyHash: FixedBytes; readonly challenges: Bytes[]; readonly decision: boolean; readonly createdBlock: BigNumber; constructor(propertyHash: FixedBytes, challenges: Bytes[], decision: boolean, createdBlock: BigNumber); } export declare const FreeVariable: { getVariableName: (input: Bytes) => string | null; from: (name: string) => Bytes; }; export declare const PredicateLabel: { getVariableName: (input: Bytes) => string | null; from: (name: string) => Bytes; }; export declare enum LogicalConnective { And = "And", ForAllSuchThat = "ForAllSuchThat", Not = "Not", Or = "Or", ThereExistsSuchThat = "ThereExistsSuchThat" } export declare enum AtomicPredicate { IsValidPreimage = "IsValidPreimage", IsValidSignature = "IsValidSignature", VerifyInclusion = "VerifyInclusion", IsLessThan = "IsLessThan", Equal = "Equal", Bool = "Bool", LessThan = "LessThan", GreaterThan = "GreaterThan", IsSameAmount = "IsSameAmount", IsContained = "IsContained", IsHashPreimage = "IsHashPreimage", IsStored = "IsStored", HasIntersection = "HasIntersection" } export declare type LogicalConnectiveStrings = keyof typeof LogicalConnective; export declare type AtomicPredicateStrings = keyof typeof AtomicPredicate; export declare function convertStringToLogicalConnective(name: LogicalConnectiveStrings): LogicalConnective; export declare function convertStringToAtomicPredicate(name: AtomicPredicateStrings): AtomicPredicate;