import { AnyChain } from '../chain'; import { TransferCtx } from './types'; export interface TransferValidationReport { [key: string]: any; } export declare class TransferValidationError extends Error { readonly report: TransferValidationReport; constructor(message: string, report: TransferValidationReport); } export type TransferValidationConstraint = (chain: AnyChain) => boolean; export declare abstract class TransferValidation { readonly sourceConstraint: TransferValidationConstraint; readonly destinationConstraint: TransferValidationConstraint; constructor(sourceConstraint: TransferValidationConstraint, destinationConstraint: TransferValidationConstraint); private ruleFor; abstract validate(ctx: TransferCtx): void; check(ctx: TransferCtx): void; } export declare class TransferValidator { private criterias; constructor(...criterias: TransferValidation[]); validate(ctx: TransferCtx): Promise; }