import { HexString, NeonSerializable, StringStream } from "../../u"; export declare enum WitnessConditionType { Boolean = 0, Not = 1, And = 2, Or = 3, ScriptHash = 24, Group = 25, CalledByEntry = 32, CalledByContract = 40, CalledByGroup = 41 } export interface BooleanWitnessConditionJson { type: "Boolean"; expression: boolean; } export interface NotWitnessConditionJson { type: "Not"; expression: WitnessConditionJson; } export interface AndWitnessConditionJson { type: "And"; expressions: WitnessConditionJson[]; } export interface OrWitnessConditionJson { type: "Or"; expressions: WitnessConditionJson[]; } export interface ScriptHashWitnessConditionJson { type: "ScriptHash"; hash: string; } export interface GroupWitnessConditionJson { type: "Group"; group: string; } export interface CalledByEntryWitnessConditionJson { type: "CalledByEntry"; } export interface CalledByContractWitnessConditionJson { type: "CalledByContract"; hash: string; } export interface CalledByGroupWitnessConditionJson { type: "CalledByGroup"; group: string; } export type WitnessConditionJson = BooleanWitnessConditionJson | AndWitnessConditionJson | NotWitnessConditionJson | OrWitnessConditionJson | ScriptHashWitnessConditionJson | GroupWitnessConditionJson | CalledByEntryWitnessConditionJson | CalledByContractWitnessConditionJson | CalledByGroupWitnessConditionJson; export declare abstract class WitnessCondition implements NeonSerializable { abstract get type(): WitnessConditionType; get size(): number; static fromJson(input: WitnessConditionJson): WitnessCondition; static deserialize(ss: StringStream): WitnessCondition; private static getImplementation; serialize(): string; abstract toJson(): WitnessConditionJson; } export declare class BooleanWitnessCondition extends WitnessCondition { expression: boolean; private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): BooleanWitnessCondition; static fromJson(input: BooleanWitnessConditionJson): BooleanWitnessCondition; get size(): number; constructor(expression: boolean); serialize(): string; toJson(): BooleanWitnessConditionJson; } export declare class AndWitnessCondition extends WitnessCondition { expressions: WitnessCondition[]; private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): AndWitnessCondition; static fromJson(input: AndWitnessConditionJson): AndWitnessCondition; get size(): number; constructor(expressions: WitnessCondition[]); serialize(): string; toJson(): AndWitnessConditionJson; } export declare class NotWitnessCondition extends WitnessCondition { expression: WitnessCondition; private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): NotWitnessCondition; static fromJson(input: NotWitnessConditionJson): NotWitnessCondition; get size(): number; constructor(expression: WitnessCondition); serialize(): string; toJson(): NotWitnessConditionJson; } export declare class OrWitnessCondition extends WitnessCondition { expressions: WitnessCondition[]; private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): OrWitnessCondition; static fromJson(input: OrWitnessConditionJson): OrWitnessCondition; get size(): number; constructor(expressions: WitnessCondition[]); serialize(): string; toJson(): OrWitnessConditionJson; } export declare class ScriptHashWitnessCondition extends WitnessCondition { private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): ScriptHashWitnessCondition; static fromJson(input: ScriptHashWitnessConditionJson): ScriptHashWitnessCondition; hash: HexString; get size(): number; constructor(inputHash: string | HexString); serialize(): string; toJson(): ScriptHashWitnessConditionJson; } export declare class GroupWitnessCondition extends WitnessCondition { private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): GroupWitnessCondition; static fromJson(input: GroupWitnessConditionJson): GroupWitnessCondition; group: HexString; get size(): number; constructor(inputGroup: string | HexString); serialize(): string; toJson(): GroupWitnessConditionJson; } export declare class CalledByEntryWitnessCondition extends WitnessCondition { private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): CalledByEntryWitnessCondition; static fromJson(_input: CalledByEntryWitnessConditionJson): CalledByEntryWitnessCondition; get size(): number; constructor(); serialize(): string; toJson(): CalledByEntryWitnessConditionJson; } export declare class CalledByContractWitnessCondition extends WitnessCondition { private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): CalledByContractWitnessCondition; static fromJson(input: CalledByContractWitnessConditionJson): CalledByContractWitnessCondition; hash: HexString; get size(): number; constructor(inputHash: string | HexString); serialize(): string; toJson(): CalledByContractWitnessConditionJson; } export declare class CalledByGroupWitnessCondition extends WitnessCondition { private static _type; get type(): WitnessConditionType; static deserialize(ss: StringStream): CalledByGroupWitnessCondition; static fromJson(input: CalledByGroupWitnessConditionJson): CalledByGroupWitnessCondition; group: HexString; get size(): number; constructor(inputGroup: string | HexString); serialize(): string; toJson(): CalledByGroupWitnessConditionJson; } //# sourceMappingURL=WitnessCondition.d.ts.map