/// <reference types="node" />
import { CCMsg } from '../types';
import { BaseEvent, EventQueuer } from '../../base_event';
export declare const enum CCMProcessedResult {
    APPLIED = 0,
    FORWARDED = 1,
    BOUNCED = 2,
    DISCARDED = 3
}
export declare const enum CCMProcessedCode {
    SUCCESS = 0,
    CHANNEL_UNAVAILABLE = 1,
    MODULE_NOT_SUPPORTED = 2,
    CROSS_CHAIN_COMMAND_NOT_SUPPORTED = 3,
    FAILED_CCM = 4,
    INVALID_CCM_DECODING_EXCEPTION = 5,
    INVALID_CCM_VALIDATION_EXCEPTION = 6,
    INVALID_CCM_ROUTING_EXCEPTION = 7,
    INVALID_CCM_VERIFY_CCM_EXCEPTION = 8,
    INVALID_CCM_VERIFY_EXCEPTION = 9,
    INVALID_CCM_BEFORE_CCC_EXECUTION_EXCEPTION = 10,
    INVALID_CCM_AFTER_CCC_EXECUTION_EXCEPTION = 11,
    INVALID_CCM_BEFORE_CCC_FORWARDING_EXCEPTION = 12
}
export interface CcmProcessedEventData {
    ccm: CCMsg;
    result: CCMProcessedResult;
    code: CCMProcessedCode;
}
export declare const ccmProcessedEventSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        ccm: {
            fieldNumber: number;
            type: string;
            required: string[];
            properties: {
                module: {
                    dataType: string;
                    minLength: number;
                    maxLength: number;
                    fieldNumber: number;
                };
                crossChainCommand: {
                    dataType: string;
                    minLength: number;
                    maxLength: number;
                    fieldNumber: number;
                };
                nonce: {
                    dataType: string;
                    fieldNumber: number;
                };
                fee: {
                    dataType: string;
                    fieldNumber: number;
                };
                sendingChainID: {
                    dataType: string;
                    minLength: number;
                    maxLength: number;
                    fieldNumber: number;
                };
                receivingChainID: {
                    dataType: string;
                    minLength: number;
                    maxLength: number;
                    fieldNumber: number;
                };
                params: {
                    dataType: string;
                    fieldNumber: number;
                };
                status: {
                    dataType: string;
                    fieldNumber: number;
                };
            };
        };
        result: {
            dataType: string;
            fieldNumber: number;
        };
        code: {
            dataType: string;
            fieldNumber: number;
        };
    };
};
export declare class CcmProcessedEvent extends BaseEvent<CcmProcessedEventData> {
    schema: {
        $id: string;
        type: string;
        required: string[];
        properties: {
            ccm: {
                fieldNumber: number;
                type: string;
                required: string[];
                properties: {
                    module: {
                        dataType: string;
                        minLength: number;
                        maxLength: number;
                        fieldNumber: number;
                    };
                    crossChainCommand: {
                        dataType: string;
                        minLength: number;
                        maxLength: number;
                        fieldNumber: number;
                    };
                    nonce: {
                        dataType: string;
                        fieldNumber: number;
                    };
                    fee: {
                        dataType: string;
                        fieldNumber: number;
                    };
                    sendingChainID: {
                        dataType: string;
                        minLength: number;
                        maxLength: number;
                        fieldNumber: number;
                    };
                    receivingChainID: {
                        dataType: string;
                        minLength: number;
                        maxLength: number;
                        fieldNumber: number;
                    };
                    params: {
                        dataType: string;
                        fieldNumber: number;
                    };
                    status: {
                        dataType: string;
                        fieldNumber: number;
                    };
                };
            };
            result: {
                dataType: string;
                fieldNumber: number;
            };
            code: {
                dataType: string;
                fieldNumber: number;
            };
        };
    };
    log(ctx: EventQueuer, sendingChainID: Buffer, receivingChainID: Buffer, data: CcmProcessedEventData): void;
}
