lisk-framework
Version:
Lisk blockchain application platform
115 lines (114 loc) • 5.18 kB
TypeScript
/// <reference types="node" />
import { CommandExecuteContext, CommandVerifyContext } from '../../state_machine';
import { BaseInteroperabilityCommand } from './base_interoperability_command';
import { BaseInteroperabilityInternalMethod } from './base_interoperability_internal_methods';
import { BaseInteroperabilityMethod } from './base_interoperability_method';
import { CCMStatusCode } from './constants';
import { CCMProcessedCode } from './events/ccm_processed';
import { CCMsg, CrossChainMessageContext, CrossChainUpdateTransactionParams, TokenMethod } from './types';
export declare abstract class BaseCrossChainUpdateCommand<T extends BaseInteroperabilityInternalMethod> extends BaseInteroperabilityCommand<T> {
schema: {
$id: string;
type: string;
required: string[];
properties: {
sendingChainID: {
dataType: string;
fieldNumber: number;
minLength: number;
maxLength: number;
};
certificate: {
dataType: string;
fieldNumber: number;
};
activeValidatorsUpdate: {
type: string;
fieldNumber: number;
required: string[];
properties: {
blsKeysUpdate: {
type: string;
fieldNumber: number;
items: {
dataType: string;
minLength: number;
maxLength: number;
};
};
bftWeightsUpdate: {
type: string;
fieldNumber: number;
items: {
dataType: string;
};
};
bftWeightsUpdateBitmap: {
dataType: string;
fieldNumber: number;
};
};
};
certificateThreshold: {
dataType: string;
fieldNumber: number;
};
inboxUpdate: {
type: string;
fieldNumber: number;
required: string[];
properties: {
crossChainMessages: {
type: string;
fieldNumber: number;
items: {
dataType: string;
};
};
messageWitnessHashes: {
type: string;
fieldNumber: number;
items: {
dataType: string;
minLength: number;
maxLength: number;
};
};
outboxRootWitness: {
type: string;
fieldNumber: number;
required: string[];
properties: {
bitmap: {
dataType: string;
fieldNumber: number;
};
siblingHashes: {
type: string;
fieldNumber: number;
items: {
dataType: string;
minLength: number;
maxLength: number;
};
};
};
};
};
};
};
};
protected _tokenMethod: TokenMethod;
protected _interopsMethod: BaseInteroperabilityMethod<T>;
init(interopsMethod: BaseInteroperabilityMethod<T>, tokenMethod: TokenMethod): void;
protected verifyCommon(context: CommandVerifyContext<CrossChainUpdateTransactionParams>, isMainchain: boolean): Promise<void>;
protected beforeCrossChainMessagesExecution(context: CommandExecuteContext<CrossChainUpdateTransactionParams>, isMainchain: boolean): Promise<[CCMsg[], boolean]>;
protected verifyRoutingRules(ccm: CCMsg, ccuParams: CrossChainUpdateTransactionParams, ownChainID: Buffer, isMainchain: boolean): void;
protected afterCrossChainMessagesExecute(context: CommandExecuteContext<CrossChainUpdateTransactionParams>): Promise<void>;
private _beforeCrossChainCommandExecute;
private _afterCrossChainCommandExecute;
protected apply(context: CrossChainMessageContext): Promise<void>;
protected bounce(context: CrossChainMessageContext, ccmSize: number, ccmStatusCode: CCMStatusCode, ccmProcessedCode: CCMProcessedCode): Promise<void>;
protected verifyCCM(context: CrossChainMessageContext, ccmID: Buffer): Promise<boolean>;
protected verifyCertificateSignatureAndPartnerChainOutboxRoot(context: CommandExecuteContext<CrossChainUpdateTransactionParams>): Promise<void>;
}