// package: akkaserverless.component.view
// file: akkaserverless/component/view/view.proto

/* tslint:disable */
/* eslint-disable */

import * as jspb from "google-protobuf";
import * as akkaserverless_component_component_pb from "../../../akkaserverless/component/component_pb";
import * as google_protobuf_any_pb from "google-protobuf/google/protobuf/any_pb";

export class ViewStreamIn extends jspb.Message { 

    hasReceive(): boolean;
    clearReceive(): void;
    getReceive(): ReceiveEvent | undefined;
    setReceive(value?: ReceiveEvent): ViewStreamIn;

    getMessageCase(): ViewStreamIn.MessageCase;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): ViewStreamIn.AsObject;
    static toObject(includeInstance: boolean, msg: ViewStreamIn): ViewStreamIn.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: ViewStreamIn, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): ViewStreamIn;
    static deserializeBinaryFromReader(message: ViewStreamIn, reader: jspb.BinaryReader): ViewStreamIn;
}

export namespace ViewStreamIn {
    export type AsObject = {
        receive?: ReceiveEvent.AsObject,
    }

    export enum MessageCase {
        MESSAGE_NOT_SET = 0,
        RECEIVE = 1,
    }

}

export class ReceiveEvent extends jspb.Message { 
    getServiceName(): string;
    setServiceName(value: string): ReceiveEvent;
    getCommandName(): string;
    setCommandName(value: string): ReceiveEvent;

    hasPayload(): boolean;
    clearPayload(): void;
    getPayload(): google_protobuf_any_pb.Any | undefined;
    setPayload(value?: google_protobuf_any_pb.Any): ReceiveEvent;

    hasMetadata(): boolean;
    clearMetadata(): void;
    getMetadata(): akkaserverless_component_component_pb.Metadata | undefined;
    setMetadata(value?: akkaserverless_component_component_pb.Metadata): ReceiveEvent;
    getInitialTable(): string;
    setInitialTable(value: string): ReceiveEvent;

    hasKey(): boolean;
    clearKey(): void;
    getKey(): Key | undefined;
    setKey(value?: Key): ReceiveEvent;

    hasBySubjectLookupResult(): boolean;
    clearBySubjectLookupResult(): void;
    getBySubjectLookupResult(): Row | undefined;
    setBySubjectLookupResult(value?: Row): ReceiveEvent;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): ReceiveEvent.AsObject;
    static toObject(includeInstance: boolean, msg: ReceiveEvent): ReceiveEvent.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: ReceiveEvent, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): ReceiveEvent;
    static deserializeBinaryFromReader(message: ReceiveEvent, reader: jspb.BinaryReader): ReceiveEvent;
}

export namespace ReceiveEvent {
    export type AsObject = {
        serviceName: string,
        commandName: string,
        payload?: google_protobuf_any_pb.Any.AsObject,
        metadata?: akkaserverless_component_component_pb.Metadata.AsObject,
        initialTable: string,
        key?: Key.AsObject,
        bySubjectLookupResult?: Row.AsObject,
    }
}

export class ViewStreamOut extends jspb.Message { 

    hasUpsert(): boolean;
    clearUpsert(): void;
    getUpsert(): Upsert | undefined;
    setUpsert(value?: Upsert): ViewStreamOut;

    getMessageCase(): ViewStreamOut.MessageCase;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): ViewStreamOut.AsObject;
    static toObject(includeInstance: boolean, msg: ViewStreamOut): ViewStreamOut.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: ViewStreamOut, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): ViewStreamOut;
    static deserializeBinaryFromReader(message: ViewStreamOut, reader: jspb.BinaryReader): ViewStreamOut;
}

export namespace ViewStreamOut {
    export type AsObject = {
        upsert?: Upsert.AsObject,
    }

    export enum MessageCase {
        MESSAGE_NOT_SET = 0,
        UPSERT = 1,
    }

}

export class Upsert extends jspb.Message { 

    hasRow(): boolean;
    clearRow(): void;
    getRow(): Row | undefined;
    setRow(value?: Row): Upsert;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Upsert.AsObject;
    static toObject(includeInstance: boolean, msg: Upsert): Upsert.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Upsert, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Upsert;
    static deserializeBinaryFromReader(message: Upsert, reader: jspb.BinaryReader): Upsert;
}

export namespace Upsert {
    export type AsObject = {
        row?: Row.AsObject,
    }
}

export class Key extends jspb.Message { 
    clearPartsList(): void;
    getPartsList(): Array<KeyPart>;
    setPartsList(value: Array<KeyPart>): Key;
    addParts(value?: KeyPart, index?: number): KeyPart;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Key.AsObject;
    static toObject(includeInstance: boolean, msg: Key): Key.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Key, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Key;
    static deserializeBinaryFromReader(message: Key, reader: jspb.BinaryReader): Key;
}

export namespace Key {
    export type AsObject = {
        partsList: Array<KeyPart.AsObject>,
    }
}

export class KeyPart extends jspb.Message { 

    hasStringPart(): boolean;
    clearStringPart(): void;
    getStringPart(): string;
    setStringPart(value: string): KeyPart;

    hasBytesPart(): boolean;
    clearBytesPart(): void;
    getBytesPart(): Uint8Array | string;
    getBytesPart_asU8(): Uint8Array;
    getBytesPart_asB64(): string;
    setBytesPart(value: Uint8Array | string): KeyPart;

    hasIntegerPart(): boolean;
    clearIntegerPart(): void;
    getIntegerPart(): number;
    setIntegerPart(value: number): KeyPart;

    hasFloatPart(): boolean;
    clearFloatPart(): void;
    getFloatPart(): number;
    setFloatPart(value: number): KeyPart;

    getPartCase(): KeyPart.PartCase;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): KeyPart.AsObject;
    static toObject(includeInstance: boolean, msg: KeyPart): KeyPart.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: KeyPart, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): KeyPart;
    static deserializeBinaryFromReader(message: KeyPart, reader: jspb.BinaryReader): KeyPart;
}

export namespace KeyPart {
    export type AsObject = {
        stringPart: string,
        bytesPart: Uint8Array | string,
        integerPart: number,
        floatPart: number,
    }

    export enum PartCase {
        PART_NOT_SET = 0,
        STRING_PART = 1,
        BYTES_PART = 2,
        INTEGER_PART = 3,
        FLOAT_PART = 4,
    }

}

export class Row extends jspb.Message { 
    getIndex(): string;
    setIndex(value: string): Row;

    hasKey(): boolean;
    clearKey(): void;
    getKey(): Key | undefined;
    setKey(value?: Key): Row;

    hasValue(): boolean;
    clearValue(): void;
    getValue(): google_protobuf_any_pb.Any | undefined;
    setValue(value?: google_protobuf_any_pb.Any): Row;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Row.AsObject;
    static toObject(includeInstance: boolean, msg: Row): Row.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Row, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Row;
    static deserializeBinaryFromReader(message: Row, reader: jspb.BinaryReader): Row;
}

export namespace Row {
    export type AsObject = {
        index: string,
        key?: Key.AsObject,
        value?: google_protobuf_any_pb.Any.AsObject,
    }
}
