/// <reference types="node" />
import { IlpPrepare, IlpFulfill } from 'ilp-packet';
export declare const CCP_CONTROL_DESTINATION = "peer.route.control";
export declare const CCP_UPDATE_DESTINATION = "peer.route.update";
export declare const PEER_PROTOCOL_FULFILLMENT: Buffer;
export declare const PEER_PROTOCOL_CONDITION: Buffer;
export declare enum Mode {
    MODE_IDLE = 0,
    MODE_SYNC = 1
}
export declare const ModeReverseMap: string[];
export interface CcpRouteControlRequest {
    mode: Mode.MODE_IDLE | Mode.MODE_SYNC;
    lastKnownRoutingTableId: string;
    lastKnownEpoch: number;
    features: string[];
}
export interface CcpRouteControlResponse {
}
export declare enum PropId {
}
export interface CcpRoutePropCommon {
    isOptional: boolean;
    isTransitive: boolean;
    isPartial: boolean;
}
export interface CcpRoutePropBuffer extends CcpRoutePropCommon {
    isUtf8: false;
    id: number;
    value: Buffer;
}
export interface CcpRoutePropString extends CcpRoutePropCommon {
    isUtf8: true;
    id: number;
    value: string;
}
export declare type CcpRouteProp = CcpRoutePropBuffer | CcpRoutePropString;
export interface CcpRoute {
    prefix: string;
    path: string[];
    auth: Buffer;
    props: CcpRouteProp[];
}
export interface CcpRouteUpdateRequest {
    routingTableId: string;
    currentEpochIndex: number;
    fromEpochIndex: number;
    toEpochIndex: number;
    holdDownTime: number;
    speaker: string;
    newRoutes: CcpRoute[];
    withdrawnRoutes: string[];
}
export interface CcpRouteUpdateResponse {
}
declare const deserializeCcpRouteControlRequestPayload: (data: Buffer) => CcpRouteControlRequest;
declare const extractCcpRouteControlRequest: (packet: IlpPrepare) => CcpRouteControlRequest;
declare const deserializeCcpRouteControlRequest: (request: Buffer) => CcpRouteControlRequest;
declare const serializeCcpRouteControlRequestPayload: (request: CcpRouteControlRequest) => Buffer;
declare const constructCcpRouteControlRequest: (request: CcpRouteControlRequest) => IlpPrepare;
declare const serializeCcpRouteControlRequest: (request: CcpRouteControlRequest) => Buffer;
declare const deserializeCcpRouteUpdateRequestPayload: (payload: Buffer) => CcpRouteUpdateRequest;
declare const extractCcpRouteUpdateRequest: (packet: IlpPrepare) => CcpRouteUpdateRequest;
declare const deserializeCcpRouteUpdateRequest: (request: Buffer) => CcpRouteUpdateRequest;
declare const serializeCcpRouteUpdateRequestPayload: (request: CcpRouteUpdateRequest) => Buffer;
declare const constructCcpRouteUpdateRequest: (request: CcpRouteUpdateRequest) => IlpPrepare;
declare const serializeCcpRouteUpdateRequest: (request: CcpRouteUpdateRequest) => Buffer;
declare const deserializeCcpResponse: (response: Buffer) => void;
declare const constructCcpResponse: () => IlpFulfill;
declare const serializeCcpResponse: () => Buffer;
export { deserializeCcpRouteControlRequestPayload, extractCcpRouteControlRequest, deserializeCcpRouteControlRequest, serializeCcpRouteControlRequestPayload, constructCcpRouteControlRequest, serializeCcpRouteControlRequest, deserializeCcpRouteUpdateRequestPayload, extractCcpRouteUpdateRequest, deserializeCcpRouteUpdateRequest, serializeCcpRouteUpdateRequestPayload, constructCcpRouteUpdateRequest, serializeCcpRouteUpdateRequest, deserializeCcpResponse, constructCcpResponse, serializeCcpResponse, };
