import { Enum as EnumNS } from './ServerStateEnum'; import AbstractEnum = EnumNS.AbstractEnum; import { Param as ParamNS } from './ParamSignature'; import IParamSignature = ParamNS.IParamSignature; /** * */ export declare namespace Protocol { /** * */ interface IProtocolLogic { resolve(protocol: Array): Array; } /** * */ abstract class AbstractProtocolLogic implements IProtocolLogic { protected fields: Array; /** * */ constructor(...fields: Array); /** * */ abstract resolve(protocol: Array): Array; } /** * */ class Depends extends AbstractProtocolLogic { /** * */ constructor(dependant: string | AbstractEnum, dependee: string | AbstractEnum); constructor(...fields: Array); /** * This will apply the validation only when this condition is met */ if(target: string, mustBe: AbstractEnum | string): IProtocolLogic; /** * This will apply the validation only when this condition is not met */ ifNot(target: string, cantBe: AbstractEnum | string): IProtocolLogic; /** * This will only include the field when this condition is met */ mustBe(target: string, mustBe: AbstractEnum | string): IProtocolLogic; /** * This will only include the field when this condition is not met */ mustNotBe(target: string, cantBe: AbstractEnum | string): IProtocolLogic; /** * */ resolve(protocol: Array): Array; private stripField; } /** * */ class OneOf extends AbstractProtocolLogic { /** * */ constructor(either: string | AbstractEnum, or: string | AbstractEnum); constructor(...fields: Array); /** * */ resolve(protocol: Array): Array; } /** * */ class Coupled extends AbstractProtocolLogic { /** * */ constructor(partnerA: string | AbstractEnum, partnerB: string | AbstractEnum); constructor(...fields: Array); /** * */ resolve(protocol: Array): Array; } }