import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { DownstreamChunkResultExtensionFields } from "./extensions/downstream";
import { DownstreamMetadataAckExtensionFields } from "./extensions/downstream";
import { DownstreamMetadataExtensionFields } from "./extensions/downstream";
import { DownstreamNormalClose } from "./metadata";
import { DownstreamResume } from "./metadata";
import { DownstreamAbnormalClose } from "./metadata";
import { DownstreamOpen } from "./metadata";
import { UpstreamNormalClose } from "./metadata";
import { UpstreamResume } from "./metadata";
import { UpstreamAbnormalClose } from "./metadata";
import { UpstreamOpen } from "./metadata";
import { BaseTime } from "./metadata";
import { DownstreamChunkAckCompleteExtensionFields } from "./extensions/downstream";
import { DownstreamChunkAckExtensionFields } from "./extensions/downstream";
import { DownstreamChunkExtensionFields } from "./extensions/downstream";
import { StreamChunk } from "./common";
import { DownstreamCloseResponseExtensionFields } from "./extensions/downstream";
import { DownstreamCloseRequestExtensionFields } from "./extensions/downstream";
import { DownstreamResumeResponseExtensionFields } from "./extensions/downstream";
import { DownstreamResumeRequestExtensionFields } from "./extensions/downstream";
import { DownstreamOpenResponseExtensionFields } from "./extensions/downstream";
import { ResultCode } from "./result_code";
import { DownstreamOpenRequestExtensionFields } from "./extensions/downstream";
import { QoS } from "./common";
import { DataID } from "./common";
import { DownstreamFilter } from "./common";
/**
 * @generated from protobuf message iscp2.DownstreamOpenRequest
 */
export interface DownstreamOpenRequest {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: uint32 desired_stream_id_alias = 2;
     */
    desiredStreamIdAlias: number;
    /**
     * @generated from protobuf field: repeated iscp2.DownstreamFilter downstream_filters = 3;
     */
    downstreamFilters: DownstreamFilter[];
    /**
     * @generated from protobuf field: uint32 expiry_interval = 4;
     */
    expiryInterval: number;
    /**
     * @generated from protobuf field: map<uint32, iscp2.DataID> data_id_aliases = 5;
     */
    dataIdAliases: {
        [key: number]: DataID;
    };
    /**
     * @generated from protobuf field: iscp2.QoS qos = 6;
     */
    qos: QoS;
    /**
     * @generated from protobuf field: iscp2.DownstreamOpenRequestExtensionFields extension_fields = 7;
     */
    extensionFields?: DownstreamOpenRequestExtensionFields;
    /**
     * @generated from protobuf field: bool omit_empty_chunk = 8;
     */
    omitEmptyChunk: boolean;
}
/**
 * @generated from protobuf message iscp2.DownstreamOpenResponse
 */
export interface DownstreamOpenResponse {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: bytes assigned_stream_id = 2;
     */
    assignedStreamId: Uint8Array;
    /**
     * @generated from protobuf field: sint64 server_time = 3;
     */
    serverTime: bigint;
    /**
     * @generated from protobuf field: iscp2.ResultCode result_code = 4;
     */
    resultCode: ResultCode;
    /**
     * @generated from protobuf field: string result_string = 5;
     */
    resultString: string;
    /**
     * @generated from protobuf field: iscp2.DownstreamOpenResponseExtensionFields extension_fields = 6;
     */
    extensionFields?: DownstreamOpenResponseExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamResumeRequest
 */
export interface DownstreamResumeRequest {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: bytes stream_id = 2;
     */
    streamId: Uint8Array;
    /**
     * @generated from protobuf field: uint32 desired_stream_id_alias = 3;
     */
    desiredStreamIdAlias: number;
    /**
     * @generated from protobuf field: iscp2.DownstreamResumeRequestExtensionFields extension_fields = 4;
     */
    extensionFields?: DownstreamResumeRequestExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamResumeResponse
 */
export interface DownstreamResumeResponse {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: iscp2.ResultCode result_code = 2;
     */
    resultCode: ResultCode;
    /**
     * @generated from protobuf field: string result_string = 3;
     */
    resultString: string;
    /**
     * @generated from protobuf field: iscp2.DownstreamResumeResponseExtensionFields extension_fields = 4;
     */
    extensionFields?: DownstreamResumeResponseExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamCloseRequest
 */
export interface DownstreamCloseRequest {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: bytes stream_id = 2;
     */
    streamId: Uint8Array;
    /**
     * @generated from protobuf field: iscp2.DownstreamCloseRequestExtensionFields extension_fields = 3;
     */
    extensionFields?: DownstreamCloseRequestExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamCloseResponse
 */
export interface DownstreamCloseResponse {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: iscp2.ResultCode result_code = 2;
     */
    resultCode: ResultCode;
    /**
     * @generated from protobuf field: string result_string = 3;
     */
    resultString: string;
    /**
     * @generated from protobuf field: iscp2.DownstreamCloseResponseExtensionFields extension_fields = 4;
     */
    extensionFields?: DownstreamCloseResponseExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamChunk
 */
export interface DownstreamChunk {
    /**
     * @generated from protobuf field: uint32 stream_id_alias = 1;
     */
    streamIdAlias: number;
    /**
     * @generated from protobuf oneof: upstream_or_alias
     */
    upstreamOrAlias: {
        oneofKind: "upstreamInfo";
        /**
         * @generated from protobuf field: iscp2.UpstreamInfo upstream_info = 2;
         */
        upstreamInfo: UpstreamInfo;
    } | {
        oneofKind: "upstreamAlias";
        /**
         * @generated from protobuf field: uint32 upstream_alias = 3;
         */
        upstreamAlias: number;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf field: iscp2.StreamChunk stream_chunk = 4;
     */
    streamChunk?: StreamChunk;
    /**
     * @generated from protobuf field: iscp2.DownstreamChunkExtensionFields extension_fields = 5;
     */
    extensionFields?: DownstreamChunkExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamChunkAck
 */
export interface DownstreamChunkAck {
    /**
     * @generated from protobuf field: uint32 stream_id_alias = 1;
     */
    streamIdAlias: number;
    /**
     * @generated from protobuf field: uint32 ack_id = 2;
     */
    ackId: number;
    /**
     * @generated from protobuf field: repeated iscp2.DownstreamChunkResult results = 3;
     */
    results: DownstreamChunkResult[];
    /**
     * @generated from protobuf field: map<uint32, iscp2.UpstreamInfo> upstream_aliases = 4;
     */
    upstreamAliases: {
        [key: number]: UpstreamInfo;
    };
    /**
     * @generated from protobuf field: map<uint32, iscp2.DataID> data_id_aliases = 5;
     */
    dataIdAliases: {
        [key: number]: DataID;
    };
    /**
     * @generated from protobuf field: iscp2.DownstreamChunkAckExtensionFields extension_fields = 6;
     */
    extensionFields?: DownstreamChunkAckExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamChunkAckComplete
 */
export interface DownstreamChunkAckComplete {
    /**
     * @generated from protobuf field: uint32 stream_id_alias = 1;
     */
    streamIdAlias: number;
    /**
     * @generated from protobuf field: uint32 ack_id = 2;
     */
    ackId: number;
    /**
     * @generated from protobuf field: iscp2.ResultCode result_code = 3;
     */
    resultCode: ResultCode;
    /**
     * @generated from protobuf field: string result_string = 4;
     */
    resultString: string;
    /**
     * @generated from protobuf field: iscp2.DownstreamChunkAckCompleteExtensionFields extension_fields = 5;
     */
    extensionFields?: DownstreamChunkAckCompleteExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamMetadata
 */
export interface DownstreamMetadata {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: uint32 stream_id_alias = 13;
     */
    streamIdAlias: number;
    /**
     * @generated from protobuf oneof: metadata
     */
    metadata: {
        oneofKind: "baseTime";
        /**
         * @generated from protobuf field: iscp2.BaseTime base_time = 2;
         */
        baseTime: BaseTime;
    } | {
        oneofKind: "upstreamOpen";
        /**
         * @generated from protobuf field: iscp2.UpstreamOpen upstream_open = 3;
         */
        upstreamOpen: UpstreamOpen;
    } | {
        oneofKind: "upstreamAbnormalClose";
        /**
         * @generated from protobuf field: iscp2.UpstreamAbnormalClose upstream_abnormal_close = 4;
         */
        upstreamAbnormalClose: UpstreamAbnormalClose;
    } | {
        oneofKind: "upstreamResume";
        /**
         * @generated from protobuf field: iscp2.UpstreamResume upstream_resume = 5;
         */
        upstreamResume: UpstreamResume;
    } | {
        oneofKind: "upstreamNormalClose";
        /**
         * @generated from protobuf field: iscp2.UpstreamNormalClose upstream_normal_close = 6;
         */
        upstreamNormalClose: UpstreamNormalClose;
    } | {
        oneofKind: "downstreamOpen";
        /**
         * @generated from protobuf field: iscp2.DownstreamOpen downstream_open = 7;
         */
        downstreamOpen: DownstreamOpen;
    } | {
        oneofKind: "downstreamAbnormalClose";
        /**
         * @generated from protobuf field: iscp2.DownstreamAbnormalClose downstream_abnormal_close = 8;
         */
        downstreamAbnormalClose: DownstreamAbnormalClose;
    } | {
        oneofKind: "downstreamResume";
        /**
         * @generated from protobuf field: iscp2.DownstreamResume downstream_resume = 9;
         */
        downstreamResume: DownstreamResume;
    } | {
        oneofKind: "downstreamNormalClose";
        /**
         * @generated from protobuf field: iscp2.DownstreamNormalClose downstream_normal_close = 10;
         */
        downstreamNormalClose: DownstreamNormalClose;
    } | {
        oneofKind: undefined;
    };
    /**
     * @generated from protobuf field: string source_node_id = 11;
     */
    sourceNodeId: string;
    /**
     * @generated from protobuf field: iscp2.DownstreamMetadataExtensionFields extension_fields = 12;
     */
    extensionFields?: DownstreamMetadataExtensionFields;
}
/**
 * @generated from protobuf message iscp2.DownstreamMetadataAck
 */
export interface DownstreamMetadataAck {
    /**
     * @generated from protobuf field: uint32 request_id = 1;
     */
    requestId: number;
    /**
     * @generated from protobuf field: iscp2.ResultCode result_code = 2;
     */
    resultCode: ResultCode;
    /**
     * @generated from protobuf field: string result_string = 3;
     */
    resultString: string;
    /**
     * @generated from protobuf field: iscp2.DownstreamMetadataAckExtensionFields extension_fields = 4;
     */
    extensionFields?: DownstreamMetadataAckExtensionFields;
}
/**
 * @generated from protobuf message iscp2.UpstreamInfo
 */
export interface UpstreamInfo {
    /**
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
    /**
     * @generated from protobuf field: bytes stream_id = 2;
     */
    streamId: Uint8Array;
    /**
     * @generated from protobuf field: string source_node_id = 3;
     */
    sourceNodeId: string;
}
/**
 * @generated from protobuf message iscp2.DownstreamChunkResult
 */
export interface DownstreamChunkResult {
    /**
     * @generated from protobuf field: bytes stream_id_of_upstream = 1;
     */
    streamIdOfUpstream: Uint8Array;
    /**
     * @generated from protobuf field: uint32 sequence_number_in_upstream = 2;
     */
    sequenceNumberInUpstream: number;
    /**
     * @generated from protobuf field: iscp2.ResultCode result_code = 3;
     */
    resultCode: ResultCode;
    /**
     * @generated from protobuf field: string result_string = 4;
     */
    resultString: string;
    /**
     * @generated from protobuf field: iscp2.DownstreamChunkResultExtensionFields extension_fields = 5;
     */
    extensionFields?: DownstreamChunkResultExtensionFields;
}
declare class DownstreamOpenRequest$Type extends MessageType<DownstreamOpenRequest> {
    constructor();
    create(value?: PartialMessage<DownstreamOpenRequest>): DownstreamOpenRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamOpenRequest): DownstreamOpenRequest;
    private binaryReadMap5;
    internalBinaryWrite(message: DownstreamOpenRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamOpenRequest
 */
export declare const DownstreamOpenRequest: DownstreamOpenRequest$Type;
declare class DownstreamOpenResponse$Type extends MessageType<DownstreamOpenResponse> {
    constructor();
    create(value?: PartialMessage<DownstreamOpenResponse>): DownstreamOpenResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamOpenResponse): DownstreamOpenResponse;
    internalBinaryWrite(message: DownstreamOpenResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamOpenResponse
 */
export declare const DownstreamOpenResponse: DownstreamOpenResponse$Type;
declare class DownstreamResumeRequest$Type extends MessageType<DownstreamResumeRequest> {
    constructor();
    create(value?: PartialMessage<DownstreamResumeRequest>): DownstreamResumeRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamResumeRequest): DownstreamResumeRequest;
    internalBinaryWrite(message: DownstreamResumeRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamResumeRequest
 */
export declare const DownstreamResumeRequest: DownstreamResumeRequest$Type;
declare class DownstreamResumeResponse$Type extends MessageType<DownstreamResumeResponse> {
    constructor();
    create(value?: PartialMessage<DownstreamResumeResponse>): DownstreamResumeResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamResumeResponse): DownstreamResumeResponse;
    internalBinaryWrite(message: DownstreamResumeResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamResumeResponse
 */
export declare const DownstreamResumeResponse: DownstreamResumeResponse$Type;
declare class DownstreamCloseRequest$Type extends MessageType<DownstreamCloseRequest> {
    constructor();
    create(value?: PartialMessage<DownstreamCloseRequest>): DownstreamCloseRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamCloseRequest): DownstreamCloseRequest;
    internalBinaryWrite(message: DownstreamCloseRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamCloseRequest
 */
export declare const DownstreamCloseRequest: DownstreamCloseRequest$Type;
declare class DownstreamCloseResponse$Type extends MessageType<DownstreamCloseResponse> {
    constructor();
    create(value?: PartialMessage<DownstreamCloseResponse>): DownstreamCloseResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamCloseResponse): DownstreamCloseResponse;
    internalBinaryWrite(message: DownstreamCloseResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamCloseResponse
 */
export declare const DownstreamCloseResponse: DownstreamCloseResponse$Type;
declare class DownstreamChunk$Type extends MessageType<DownstreamChunk> {
    constructor();
    create(value?: PartialMessage<DownstreamChunk>): DownstreamChunk;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamChunk): DownstreamChunk;
    internalBinaryWrite(message: DownstreamChunk, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamChunk
 */
export declare const DownstreamChunk: DownstreamChunk$Type;
declare class DownstreamChunkAck$Type extends MessageType<DownstreamChunkAck> {
    constructor();
    create(value?: PartialMessage<DownstreamChunkAck>): DownstreamChunkAck;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamChunkAck): DownstreamChunkAck;
    private binaryReadMap4;
    private binaryReadMap5;
    internalBinaryWrite(message: DownstreamChunkAck, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamChunkAck
 */
export declare const DownstreamChunkAck: DownstreamChunkAck$Type;
declare class DownstreamChunkAckComplete$Type extends MessageType<DownstreamChunkAckComplete> {
    constructor();
    create(value?: PartialMessage<DownstreamChunkAckComplete>): DownstreamChunkAckComplete;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamChunkAckComplete): DownstreamChunkAckComplete;
    internalBinaryWrite(message: DownstreamChunkAckComplete, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamChunkAckComplete
 */
export declare const DownstreamChunkAckComplete: DownstreamChunkAckComplete$Type;
declare class DownstreamMetadata$Type extends MessageType<DownstreamMetadata> {
    constructor();
    create(value?: PartialMessage<DownstreamMetadata>): DownstreamMetadata;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamMetadata): DownstreamMetadata;
    internalBinaryWrite(message: DownstreamMetadata, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamMetadata
 */
export declare const DownstreamMetadata: DownstreamMetadata$Type;
declare class DownstreamMetadataAck$Type extends MessageType<DownstreamMetadataAck> {
    constructor();
    create(value?: PartialMessage<DownstreamMetadataAck>): DownstreamMetadataAck;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamMetadataAck): DownstreamMetadataAck;
    internalBinaryWrite(message: DownstreamMetadataAck, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamMetadataAck
 */
export declare const DownstreamMetadataAck: DownstreamMetadataAck$Type;
declare class UpstreamInfo$Type extends MessageType<UpstreamInfo> {
    constructor();
    create(value?: PartialMessage<UpstreamInfo>): UpstreamInfo;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UpstreamInfo): UpstreamInfo;
    internalBinaryWrite(message: UpstreamInfo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.UpstreamInfo
 */
export declare const UpstreamInfo: UpstreamInfo$Type;
declare class DownstreamChunkResult$Type extends MessageType<DownstreamChunkResult> {
    constructor();
    create(value?: PartialMessage<DownstreamChunkResult>): DownstreamChunkResult;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DownstreamChunkResult): DownstreamChunkResult;
    internalBinaryWrite(message: DownstreamChunkResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message iscp2.DownstreamChunkResult
 */
export declare const DownstreamChunkResult: DownstreamChunkResult$Type;
export {};
