import { QoS, DataId, StreamChunk } from './common';
import { BaseTime } from './metadata';
import { ResultCode } from './result-code';
import { RequestMessage, StreamMessage } from './message';
/**
 * 送信可能なメタデータの型です。
 * @category Models Metadata
 */
export type SendableMetadata = BaseTime;
export declare class UpstreamOpenRequestExtensionFields {
    persist: boolean;
    constructor(init: {
        persist: UpstreamOpenRequestExtensionFields['persist'];
    });
}
export declare class UpstreamOpenResponseExtensionFields {
}
export declare class UpstreamResumeRequestExtensionFields {
}
export declare class UpstreamResumeResponseExtensionFields {
}
export declare class UpstreamCloseRequestExtensionFields {
    closeSession: boolean;
    constructor(init: {
        closeSession: UpstreamCloseRequestExtensionFields['closeSession'];
    });
}
export declare class UpstreamCloseResponseExtensionFields {
}
/**
 * ストリームチャンク（上り用）に含まれる拡張フィールドです。
 * @category Messages Upstream
 */
export declare class UpstreamChunkExtensionFields {
}
/**
 * ストリームチャンク（上り用）に対する確認応答に含まれる拡張フィールドです。
 * @category Messages Upstream
 */
export declare class UpstreamChunkAckExtensionFields {
}
export declare class UpstreamMetadataExtensionFields {
    persist: boolean;
    constructor(init: {
        persist: UpstreamMetadataExtensionFields['persist'];
    });
}
export declare class UpstreamMetadataAckExtensionFields {
}
/**
 * ストリームチャンク（上り用）の処理結果に含まれる拡張フィールドです。
 * @category Messages Upstream
 */
export declare class UpstreamChunkResultExtensionFields {
}
/**
 * ストリームチャンク（上り用）で送信されたデータポイントの処理結果です。
 * @category Messages Upstream
 */
export declare class UpstreamChunkResult {
    /** シーケンス番号。 */
    sequenceNumber: number;
    /** 結果コード。 */
    resultCode: ResultCode;
    /** 結果文字列。 */
    resultString: string;
    /** 拡張フィールド。 */
    extensionFields?: UpstreamChunkResultExtensionFields;
    constructor(init: {
        sequenceNumber: UpstreamChunkResult['sequenceNumber'];
        resultCode: UpstreamChunkResult['resultCode'];
        resultString: UpstreamChunkResult['resultString'];
        extensionFields?: UpstreamChunkResult['extensionFields'];
    });
}
export declare class UpstreamOpenRequest extends RequestMessage {
    sessionId: string;
    expiryInterval: number;
    dataIds: DataId[];
    qos: QoS;
    ackInterval: number;
    extensionFields?: UpstreamOpenRequestExtensionFields;
    constructor(init: {
        requestId: UpstreamOpenRequest['requestId'];
        sessionId: UpstreamOpenRequest['sessionId'];
        expiryInterval: number;
        dataIds: DataId[];
        qos: QoS;
        ackInterval: number;
        extensionFields?: UpstreamOpenRequestExtensionFields;
    });
}
export declare class UpstreamOpenResponse extends RequestMessage {
    assignedStreamId: string;
    assignedStreamIdAlias: number;
    dataIdAliases: Record<number, DataId>;
    serverTime: bigint;
    resultCode: ResultCode;
    resultString: string;
    extensionFields?: UpstreamOpenResponseExtensionFields;
    constructor(init: {
        requestId: UpstreamOpenResponse['requestId'];
        assignedStreamId: UpstreamOpenResponse['assignedStreamId'];
        assignedStreamIdAlias: UpstreamOpenResponse['assignedStreamIdAlias'];
        dataIdAliases: UpstreamOpenResponse['dataIdAliases'];
        serverTime: UpstreamOpenResponse['serverTime'];
        resultCode: UpstreamOpenResponse['resultCode'];
        resultString: UpstreamOpenResponse['resultString'];
        extensionFields?: UpstreamOpenResponse['extensionFields'];
    });
}
export declare class UpstreamResumeRequest extends RequestMessage {
    streamId: string;
    extensionFields?: UpstreamResumeRequestExtensionFields;
    constructor(init: {
        requestId: UpstreamResumeRequest['requestId'];
        streamId: UpstreamResumeRequest['streamId'];
        extensionFields?: UpstreamResumeRequest['extensionFields'];
    });
}
export declare class UpstreamResumeResponse extends RequestMessage {
    assignedStreamIdAlias: number;
    resultCode: ResultCode;
    resultString: string;
    extensionFields?: UpstreamResumeResponseExtensionFields;
    constructor(init: {
        requestId: UpstreamResumeResponse['requestId'];
        assignedStreamIdAlias: UpstreamResumeResponse['assignedStreamIdAlias'];
        resultCode: UpstreamResumeResponse['resultCode'];
        resultString: UpstreamResumeResponse['resultString'];
        extensionFields?: UpstreamResumeResponse['extensionFields'];
    });
}
export declare class UpstreamCloseRequest extends RequestMessage {
    streamId: string;
    totalDataPoints: bigint;
    finalSequenceNumber: number;
    extensionFields?: UpstreamCloseRequestExtensionFields;
    constructor(init: {
        requestId: UpstreamCloseRequest['requestId'];
        streamId: UpstreamCloseRequest['streamId'];
        totalDataPoints: UpstreamCloseRequest['totalDataPoints'];
        finalSequenceNumber: UpstreamCloseRequest['finalSequenceNumber'];
        extensionFields?: UpstreamCloseRequest['extensionFields'];
    });
}
export declare class UpstreamCloseResponse extends RequestMessage {
    resultCode: ResultCode;
    resultString: string;
    extensionFields?: UpstreamCloseResponseExtensionFields;
    constructor(init: {
        requestId: UpstreamCloseResponse['requestId'];
        resultCode: UpstreamCloseResponse['resultCode'];
        resultString: UpstreamCloseResponse['resultString'];
        extensionFields?: UpstreamCloseResponse['extensionFields'];
    });
}
/**
 * ストリームチャンク（上り用）です。
 * @category Messages Upstream
 */
export declare class UpstreamChunk extends StreamMessage {
    /** データIDのリスト。 */
    streamChunk: StreamChunk;
    /** ストリームチャンク。 */
    dataIds: DataId[];
    /** 拡張フィールド。 */
    extensionFields?: UpstreamChunkExtensionFields;
    constructor(init: {
        streamIdAlias: UpstreamChunk['streamIdAlias'];
        streamChunk: UpstreamChunk['streamChunk'];
        dataIds: UpstreamChunk['dataIds'];
        extensionFields?: UpstreamChunk['extensionFields'];
    });
}
export declare class UpstreamChunkAck extends StreamMessage {
    results: UpstreamChunkResult[];
    dataIdAliases: Record<number, DataId>;
    extensionFields?: UpstreamChunkAckExtensionFields;
    constructor(init: {
        streamIdAlias: UpstreamChunkAck['streamIdAlias'];
        results: UpstreamChunkAck['results'];
        dataIdAliases: UpstreamChunkAck['dataIdAliases'];
        extensionFields?: UpstreamChunkAck['extensionFields'];
    });
}
/**
 * アップストリームメタデータです。
 * メタデータを格納してノードからブローカーへ転送するためのメッセージです。
 * @category Messages Upstream
 */
export declare class UpstreamMetadata extends RequestMessage {
    metadata: SendableMetadata;
    extensionFields?: UpstreamMetadataExtensionFields;
    constructor(init: {
        requestId: number;
        metadata: UpstreamMetadata['metadata'];
        extensionFields?: UpstreamMetadata['extensionFields'];
    });
}
export declare class UpstreamMetadataAck extends RequestMessage {
    resultCode: ResultCode;
    resultString: string;
    extensionFields?: UpstreamMetadataAckExtensionFields;
    constructor(init: {
        requestId: UpstreamMetadataAck['requestId'];
        resultCode: UpstreamMetadataAck['resultCode'];
        resultString: UpstreamMetadataAck['resultString'];
        extensionFields?: UpstreamMetadataAck['extensionFields'];
    });
}
