import * as $protobuf from "protobufjs";
import Long = require("long");
/** Namespace signalservice. */
export namespace signalservice {

    /** Properties of a CDSClientRequest. */
    interface ICDSClientRequest {

        /** CDSClientRequest aciUakPairs */
        aciUakPairs?: (Uint8Array|null);

        /** CDSClientRequest prevE164s */
        prevE164s?: (Uint8Array|null);

        /** CDSClientRequest newE164s */
        newE164s?: (Uint8Array|null);

        /** CDSClientRequest discardE164s */
        discardE164s?: (Uint8Array|null);

        /** CDSClientRequest hasMore */
        hasMore?: (boolean|null);

        /** CDSClientRequest token */
        token?: (Uint8Array|null);

        /** CDSClientRequest tokenAck */
        tokenAck?: (boolean|null);

        /** CDSClientRequest returnAcisWithoutUaks */
        returnAcisWithoutUaks?: (boolean|null);
    }

    /** Represents a CDSClientRequest. */
    class CDSClientRequest implements ICDSClientRequest {

        /**
         * Constructs a new CDSClientRequest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ICDSClientRequest);

        /** CDSClientRequest aciUakPairs. */
        public aciUakPairs: Uint8Array;

        /** CDSClientRequest prevE164s. */
        public prevE164s: Uint8Array;

        /** CDSClientRequest newE164s. */
        public newE164s: Uint8Array;

        /** CDSClientRequest discardE164s. */
        public discardE164s: Uint8Array;

        /** CDSClientRequest hasMore. */
        public hasMore: boolean;

        /** CDSClientRequest token. */
        public token: Uint8Array;

        /** CDSClientRequest tokenAck. */
        public tokenAck: boolean;

        /** CDSClientRequest returnAcisWithoutUaks. */
        public returnAcisWithoutUaks: boolean;

        /**
         * Creates a new CDSClientRequest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CDSClientRequest instance
         */
        public static create(properties?: signalservice.ICDSClientRequest): signalservice.CDSClientRequest;

        /**
         * Encodes the specified CDSClientRequest message. Does not implicitly {@link signalservice.CDSClientRequest.verify|verify} messages.
         * @param message CDSClientRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ICDSClientRequest, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified CDSClientRequest message, length delimited. Does not implicitly {@link signalservice.CDSClientRequest.verify|verify} messages.
         * @param message CDSClientRequest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ICDSClientRequest, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a CDSClientRequest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CDSClientRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CDSClientRequest;

        /**
         * Decodes a CDSClientRequest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CDSClientRequest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CDSClientRequest;

        /**
         * Verifies a CDSClientRequest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a CDSClientRequest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CDSClientRequest
         */
        public static fromObject(object: { [k: string]: any }): signalservice.CDSClientRequest;

        /**
         * Creates a plain object from a CDSClientRequest message. Also converts values to other types if specified.
         * @param message CDSClientRequest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.CDSClientRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this CDSClientRequest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CDSClientRequest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CDSClientResponse. */
    interface ICDSClientResponse {

        /** CDSClientResponse e164PniAciTriples */
        e164PniAciTriples?: (Uint8Array|null);

        /** CDSClientResponse token */
        token?: (Uint8Array|null);
    }

    /** Represents a CDSClientResponse. */
    class CDSClientResponse implements ICDSClientResponse {

        /**
         * Constructs a new CDSClientResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ICDSClientResponse);

        /** CDSClientResponse e164PniAciTriples. */
        public e164PniAciTriples: Uint8Array;

        /** CDSClientResponse token. */
        public token: Uint8Array;

        /**
         * Creates a new CDSClientResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CDSClientResponse instance
         */
        public static create(properties?: signalservice.ICDSClientResponse): signalservice.CDSClientResponse;

        /**
         * Encodes the specified CDSClientResponse message. Does not implicitly {@link signalservice.CDSClientResponse.verify|verify} messages.
         * @param message CDSClientResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ICDSClientResponse, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified CDSClientResponse message, length delimited. Does not implicitly {@link signalservice.CDSClientResponse.verify|verify} messages.
         * @param message CDSClientResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ICDSClientResponse, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a CDSClientResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CDSClientResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CDSClientResponse;

        /**
         * Decodes a CDSClientResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CDSClientResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CDSClientResponse;

        /**
         * Verifies a CDSClientResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a CDSClientResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CDSClientResponse
         */
        public static fromObject(object: { [k: string]: any }): signalservice.CDSClientResponse;

        /**
         * Creates a plain object from a CDSClientResponse message. Also converts values to other types if specified.
         * @param message CDSClientResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.CDSClientResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this CDSClientResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CDSClientResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CrashReport. */
    interface ICrashReport {

        /** CrashReport filename */
        filename?: (string|null);

        /** CrashReport content */
        content?: (Uint8Array|null);
    }

    /** Represents a CrashReport. */
    class CrashReport implements ICrashReport {

        /**
         * Constructs a new CrashReport.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ICrashReport);

        /** CrashReport filename. */
        public filename: string;

        /** CrashReport content. */
        public content: Uint8Array;

        /**
         * Creates a new CrashReport instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CrashReport instance
         */
        public static create(properties?: signalservice.ICrashReport): signalservice.CrashReport;

        /**
         * Encodes the specified CrashReport message. Does not implicitly {@link signalservice.CrashReport.verify|verify} messages.
         * @param message CrashReport message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ICrashReport, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified CrashReport message, length delimited. Does not implicitly {@link signalservice.CrashReport.verify|verify} messages.
         * @param message CrashReport message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ICrashReport, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a CrashReport message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CrashReport
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CrashReport;

        /**
         * Decodes a CrashReport message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CrashReport
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CrashReport;

        /**
         * Verifies a CrashReport message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a CrashReport message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CrashReport
         */
        public static fromObject(object: { [k: string]: any }): signalservice.CrashReport;

        /**
         * Creates a plain object from a CrashReport message. Also converts values to other types if specified.
         * @param message CrashReport
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.CrashReport, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this CrashReport to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CrashReport
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CrashReportList. */
    interface ICrashReportList {

        /** CrashReportList reports */
        reports?: (signalservice.ICrashReport[]|null);
    }

    /** Represents a CrashReportList. */
    class CrashReportList implements ICrashReportList {

        /**
         * Constructs a new CrashReportList.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ICrashReportList);

        /** CrashReportList reports. */
        public reports: signalservice.ICrashReport[];

        /**
         * Creates a new CrashReportList instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CrashReportList instance
         */
        public static create(properties?: signalservice.ICrashReportList): signalservice.CrashReportList;

        /**
         * Encodes the specified CrashReportList message. Does not implicitly {@link signalservice.CrashReportList.verify|verify} messages.
         * @param message CrashReportList message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ICrashReportList, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified CrashReportList message, length delimited. Does not implicitly {@link signalservice.CrashReportList.verify|verify} messages.
         * @param message CrashReportList message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ICrashReportList, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a CrashReportList message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CrashReportList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CrashReportList;

        /**
         * Decodes a CrashReportList message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CrashReportList
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CrashReportList;

        /**
         * Verifies a CrashReportList message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a CrashReportList message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CrashReportList
         */
        public static fromObject(object: { [k: string]: any }): signalservice.CrashReportList;

        /**
         * Creates a plain object from a CrashReportList message. Also converts values to other types if specified.
         * @param message CrashReportList
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.CrashReportList, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this CrashReportList to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CrashReportList
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ProvisioningUuid. */
    interface IProvisioningUuid {

        /** ProvisioningUuid uuid */
        uuid?: (string|null);
    }

    /** Represents a ProvisioningUuid. */
    class ProvisioningUuid implements IProvisioningUuid {

        /**
         * Constructs a new ProvisioningUuid.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IProvisioningUuid);

        /** ProvisioningUuid uuid. */
        public uuid: string;

        /**
         * Creates a new ProvisioningUuid instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ProvisioningUuid instance
         */
        public static create(properties?: signalservice.IProvisioningUuid): signalservice.ProvisioningUuid;

        /**
         * Encodes the specified ProvisioningUuid message. Does not implicitly {@link signalservice.ProvisioningUuid.verify|verify} messages.
         * @param message ProvisioningUuid message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IProvisioningUuid, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ProvisioningUuid message, length delimited. Does not implicitly {@link signalservice.ProvisioningUuid.verify|verify} messages.
         * @param message ProvisioningUuid message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IProvisioningUuid, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ProvisioningUuid message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ProvisioningUuid
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ProvisioningUuid;

        /**
         * Decodes a ProvisioningUuid message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ProvisioningUuid
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ProvisioningUuid;

        /**
         * Verifies a ProvisioningUuid message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ProvisioningUuid message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ProvisioningUuid
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ProvisioningUuid;

        /**
         * Creates a plain object from a ProvisioningUuid message. Also converts values to other types if specified.
         * @param message ProvisioningUuid
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ProvisioningUuid, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ProvisioningUuid to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ProvisioningUuid
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ProvisionEnvelope. */
    interface IProvisionEnvelope {

        /** ProvisionEnvelope publicKey */
        publicKey?: (Uint8Array|null);

        /** ProvisionEnvelope body */
        body?: (Uint8Array|null);
    }

    /** Represents a ProvisionEnvelope. */
    class ProvisionEnvelope implements IProvisionEnvelope {

        /**
         * Constructs a new ProvisionEnvelope.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IProvisionEnvelope);

        /** ProvisionEnvelope publicKey. */
        public publicKey: Uint8Array;

        /** ProvisionEnvelope body. */
        public body: Uint8Array;

        /**
         * Creates a new ProvisionEnvelope instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ProvisionEnvelope instance
         */
        public static create(properties?: signalservice.IProvisionEnvelope): signalservice.ProvisionEnvelope;

        /**
         * Encodes the specified ProvisionEnvelope message. Does not implicitly {@link signalservice.ProvisionEnvelope.verify|verify} messages.
         * @param message ProvisionEnvelope message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IProvisionEnvelope, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ProvisionEnvelope message, length delimited. Does not implicitly {@link signalservice.ProvisionEnvelope.verify|verify} messages.
         * @param message ProvisionEnvelope message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IProvisionEnvelope, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ProvisionEnvelope message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ProvisionEnvelope
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ProvisionEnvelope;

        /**
         * Decodes a ProvisionEnvelope message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ProvisionEnvelope
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ProvisionEnvelope;

        /**
         * Verifies a ProvisionEnvelope message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ProvisionEnvelope message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ProvisionEnvelope
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ProvisionEnvelope;

        /**
         * Creates a plain object from a ProvisionEnvelope message. Also converts values to other types if specified.
         * @param message ProvisionEnvelope
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ProvisionEnvelope, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ProvisionEnvelope to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ProvisionEnvelope
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ProvisionMessage. */
    interface IProvisionMessage {

        /** ProvisionMessage aciIdentityKeyPublic */
        aciIdentityKeyPublic?: (Uint8Array|null);

        /** ProvisionMessage aciIdentityKeyPrivate */
        aciIdentityKeyPrivate?: (Uint8Array|null);

        /** ProvisionMessage pniIdentityKeyPublic */
        pniIdentityKeyPublic?: (Uint8Array|null);

        /** ProvisionMessage pniIdentityKeyPrivate */
        pniIdentityKeyPrivate?: (Uint8Array|null);

        /** ProvisionMessage aci */
        aci?: (string|null);

        /** ProvisionMessage pni */
        pni?: (string|null);

        /** ProvisionMessage number */
        number?: (string|null);

        /** ProvisionMessage provisioningCode */
        provisioningCode?: (string|null);

        /** ProvisionMessage userAgent */
        userAgent?: (string|null);

        /** ProvisionMessage profileKey */
        profileKey?: (Uint8Array|null);

        /** ProvisionMessage readReceipts */
        readReceipts?: (boolean|null);

        /** ProvisionMessage ProvisioningVersion */
        ProvisioningVersion?: (number|null);

        /** ProvisionMessage masterKey */
        masterKey?: (Uint8Array|null);

        /** ProvisionMessage ephemeralBackupKey */
        ephemeralBackupKey?: (Uint8Array|null);

        /** ProvisionMessage accountEntropyPool */
        accountEntropyPool?: (string|null);

        /** ProvisionMessage mediaRootBackupKey */
        mediaRootBackupKey?: (Uint8Array|null);
    }

    /** Represents a ProvisionMessage. */
    class ProvisionMessage implements IProvisionMessage {

        /**
         * Constructs a new ProvisionMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IProvisionMessage);

        /** ProvisionMessage aciIdentityKeyPublic. */
        public aciIdentityKeyPublic: Uint8Array;

        /** ProvisionMessage aciIdentityKeyPrivate. */
        public aciIdentityKeyPrivate: Uint8Array;

        /** ProvisionMessage pniIdentityKeyPublic. */
        public pniIdentityKeyPublic: Uint8Array;

        /** ProvisionMessage pniIdentityKeyPrivate. */
        public pniIdentityKeyPrivate: Uint8Array;

        /** ProvisionMessage aci. */
        public aci: string;

        /** ProvisionMessage pni. */
        public pni: string;

        /** ProvisionMessage number. */
        public number: string;

        /** ProvisionMessage provisioningCode. */
        public provisioningCode: string;

        /** ProvisionMessage userAgent. */
        public userAgent: string;

        /** ProvisionMessage profileKey. */
        public profileKey: Uint8Array;

        /** ProvisionMessage readReceipts. */
        public readReceipts: boolean;

        /** ProvisionMessage ProvisioningVersion. */
        public ProvisioningVersion: number;

        /** ProvisionMessage masterKey. */
        public masterKey: Uint8Array;

        /** ProvisionMessage ephemeralBackupKey. */
        public ephemeralBackupKey: Uint8Array;

        /** ProvisionMessage accountEntropyPool. */
        public accountEntropyPool: string;

        /** ProvisionMessage mediaRootBackupKey. */
        public mediaRootBackupKey: Uint8Array;

        /**
         * Creates a new ProvisionMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ProvisionMessage instance
         */
        public static create(properties?: signalservice.IProvisionMessage): signalservice.ProvisionMessage;

        /**
         * Encodes the specified ProvisionMessage message. Does not implicitly {@link signalservice.ProvisionMessage.verify|verify} messages.
         * @param message ProvisionMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IProvisionMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ProvisionMessage message, length delimited. Does not implicitly {@link signalservice.ProvisionMessage.verify|verify} messages.
         * @param message ProvisionMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IProvisionMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ProvisionMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ProvisionMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ProvisionMessage;

        /**
         * Decodes a ProvisionMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ProvisionMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ProvisionMessage;

        /**
         * Verifies a ProvisionMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ProvisionMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ProvisionMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ProvisionMessage;

        /**
         * Creates a plain object from a ProvisionMessage message. Also converts values to other types if specified.
         * @param message ProvisionMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ProvisionMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ProvisionMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ProvisionMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** ProvisioningVersion enum. */
    enum ProvisioningVersion {
        INITIAL = 0,
        TABLET_SUPPORT = 1,
        CURRENT = 1
    }

    /** Properties of a DeviceName. */
    interface IDeviceName {

        /** DeviceName ephemeralPublic */
        ephemeralPublic?: (Uint8Array|null);

        /** DeviceName syntheticIv */
        syntheticIv?: (Uint8Array|null);

        /** DeviceName ciphertext */
        ciphertext?: (Uint8Array|null);
    }

    /** Represents a DeviceName. */
    class DeviceName implements IDeviceName {

        /**
         * Constructs a new DeviceName.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IDeviceName);

        /** DeviceName ephemeralPublic. */
        public ephemeralPublic: Uint8Array;

        /** DeviceName syntheticIv. */
        public syntheticIv: Uint8Array;

        /** DeviceName ciphertext. */
        public ciphertext: Uint8Array;

        /**
         * Creates a new DeviceName instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DeviceName instance
         */
        public static create(properties?: signalservice.IDeviceName): signalservice.DeviceName;

        /**
         * Encodes the specified DeviceName message. Does not implicitly {@link signalservice.DeviceName.verify|verify} messages.
         * @param message DeviceName message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IDeviceName, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified DeviceName message, length delimited. Does not implicitly {@link signalservice.DeviceName.verify|verify} messages.
         * @param message DeviceName message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IDeviceName, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a DeviceName message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DeviceName
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DeviceName;

        /**
         * Decodes a DeviceName message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DeviceName
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DeviceName;

        /**
         * Verifies a DeviceName message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a DeviceName message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DeviceName
         */
        public static fromObject(object: { [k: string]: any }): signalservice.DeviceName;

        /**
         * Creates a plain object from a DeviceName message. Also converts values to other types if specified.
         * @param message DeviceName
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.DeviceName, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this DeviceName to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DeviceName
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AvatarUploadAttributes. */
    interface IAvatarUploadAttributes {

        /** AvatarUploadAttributes key */
        key?: (string|null);

        /** AvatarUploadAttributes credential */
        credential?: (string|null);

        /** AvatarUploadAttributes acl */
        acl?: (string|null);

        /** AvatarUploadAttributes algorithm */
        algorithm?: (string|null);

        /** AvatarUploadAttributes date */
        date?: (string|null);

        /** AvatarUploadAttributes policy */
        policy?: (string|null);

        /** AvatarUploadAttributes signature */
        signature?: (string|null);
    }

    /** Represents an AvatarUploadAttributes. */
    class AvatarUploadAttributes implements IAvatarUploadAttributes {

        /**
         * Constructs a new AvatarUploadAttributes.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IAvatarUploadAttributes);

        /** AvatarUploadAttributes key. */
        public key: string;

        /** AvatarUploadAttributes credential. */
        public credential: string;

        /** AvatarUploadAttributes acl. */
        public acl: string;

        /** AvatarUploadAttributes algorithm. */
        public algorithm: string;

        /** AvatarUploadAttributes date. */
        public date: string;

        /** AvatarUploadAttributes policy. */
        public policy: string;

        /** AvatarUploadAttributes signature. */
        public signature: string;

        /**
         * Creates a new AvatarUploadAttributes instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AvatarUploadAttributes instance
         */
        public static create(properties?: signalservice.IAvatarUploadAttributes): signalservice.AvatarUploadAttributes;

        /**
         * Encodes the specified AvatarUploadAttributes message. Does not implicitly {@link signalservice.AvatarUploadAttributes.verify|verify} messages.
         * @param message AvatarUploadAttributes message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IAvatarUploadAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified AvatarUploadAttributes message, length delimited. Does not implicitly {@link signalservice.AvatarUploadAttributes.verify|verify} messages.
         * @param message AvatarUploadAttributes message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IAvatarUploadAttributes, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an AvatarUploadAttributes message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AvatarUploadAttributes
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AvatarUploadAttributes;

        /**
         * Decodes an AvatarUploadAttributes message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AvatarUploadAttributes
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AvatarUploadAttributes;

        /**
         * Verifies an AvatarUploadAttributes message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an AvatarUploadAttributes message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AvatarUploadAttributes
         */
        public static fromObject(object: { [k: string]: any }): signalservice.AvatarUploadAttributes;

        /**
         * Creates a plain object from an AvatarUploadAttributes message. Also converts values to other types if specified.
         * @param message AvatarUploadAttributes
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.AvatarUploadAttributes, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this AvatarUploadAttributes to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AvatarUploadAttributes
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Member. */
    interface IMember {

        /** Member userId */
        userId?: (Uint8Array|null);

        /** Member role */
        role?: (signalservice.Member.Role|null);

        /** Member profileKey */
        profileKey?: (Uint8Array|null);

        /** Member presentation */
        presentation?: (Uint8Array|null);

        /** Member joinedAtVersion */
        joinedAtVersion?: (number|null);
    }

    /** Represents a Member. */
    class Member implements IMember {

        /**
         * Constructs a new Member.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IMember);

        /** Member userId. */
        public userId: Uint8Array;

        /** Member role. */
        public role: signalservice.Member.Role;

        /** Member profileKey. */
        public profileKey: Uint8Array;

        /** Member presentation. */
        public presentation: Uint8Array;

        /** Member joinedAtVersion. */
        public joinedAtVersion: number;

        /**
         * Creates a new Member instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Member instance
         */
        public static create(properties?: signalservice.IMember): signalservice.Member;

        /**
         * Encodes the specified Member message. Does not implicitly {@link signalservice.Member.verify|verify} messages.
         * @param message Member message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IMember, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified Member message, length delimited. Does not implicitly {@link signalservice.Member.verify|verify} messages.
         * @param message Member message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IMember, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a Member message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Member
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Member;

        /**
         * Decodes a Member message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Member
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Member;

        /**
         * Verifies a Member message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a Member message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Member
         */
        public static fromObject(object: { [k: string]: any }): signalservice.Member;

        /**
         * Creates a plain object from a Member message. Also converts values to other types if specified.
         * @param message Member
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.Member, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this Member to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Member
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Member {

        /** Role enum. */
        enum Role {
            UNKNOWN = 0,
            DEFAULT = 1,
            ADMINISTRATOR = 2
        }
    }

    /** Properties of a MemberPendingProfileKey. */
    interface IMemberPendingProfileKey {

        /** MemberPendingProfileKey member */
        member?: (signalservice.IMember|null);

        /** MemberPendingProfileKey addedByUserId */
        addedByUserId?: (Uint8Array|null);

        /** MemberPendingProfileKey timestamp */
        timestamp?: (Long|null);
    }

    /** Represents a MemberPendingProfileKey. */
    class MemberPendingProfileKey implements IMemberPendingProfileKey {

        /**
         * Constructs a new MemberPendingProfileKey.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IMemberPendingProfileKey);

        /** MemberPendingProfileKey member. */
        public member?: (signalservice.IMember|null);

        /** MemberPendingProfileKey addedByUserId. */
        public addedByUserId: Uint8Array;

        /** MemberPendingProfileKey timestamp. */
        public timestamp: Long;

        /**
         * Creates a new MemberPendingProfileKey instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MemberPendingProfileKey instance
         */
        public static create(properties?: signalservice.IMemberPendingProfileKey): signalservice.MemberPendingProfileKey;

        /**
         * Encodes the specified MemberPendingProfileKey message. Does not implicitly {@link signalservice.MemberPendingProfileKey.verify|verify} messages.
         * @param message MemberPendingProfileKey message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IMemberPendingProfileKey, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified MemberPendingProfileKey message, length delimited. Does not implicitly {@link signalservice.MemberPendingProfileKey.verify|verify} messages.
         * @param message MemberPendingProfileKey message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IMemberPendingProfileKey, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a MemberPendingProfileKey message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MemberPendingProfileKey
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.MemberPendingProfileKey;

        /**
         * Decodes a MemberPendingProfileKey message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MemberPendingProfileKey
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.MemberPendingProfileKey;

        /**
         * Verifies a MemberPendingProfileKey message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a MemberPendingProfileKey message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MemberPendingProfileKey
         */
        public static fromObject(object: { [k: string]: any }): signalservice.MemberPendingProfileKey;

        /**
         * Creates a plain object from a MemberPendingProfileKey message. Also converts values to other types if specified.
         * @param message MemberPendingProfileKey
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.MemberPendingProfileKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this MemberPendingProfileKey to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MemberPendingProfileKey
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MemberPendingAdminApproval. */
    interface IMemberPendingAdminApproval {

        /** MemberPendingAdminApproval userId */
        userId?: (Uint8Array|null);

        /** MemberPendingAdminApproval profileKey */
        profileKey?: (Uint8Array|null);

        /** MemberPendingAdminApproval presentation */
        presentation?: (Uint8Array|null);

        /** MemberPendingAdminApproval timestamp */
        timestamp?: (Long|null);
    }

    /** Represents a MemberPendingAdminApproval. */
    class MemberPendingAdminApproval implements IMemberPendingAdminApproval {

        /**
         * Constructs a new MemberPendingAdminApproval.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IMemberPendingAdminApproval);

        /** MemberPendingAdminApproval userId. */
        public userId: Uint8Array;

        /** MemberPendingAdminApproval profileKey. */
        public profileKey: Uint8Array;

        /** MemberPendingAdminApproval presentation. */
        public presentation: Uint8Array;

        /** MemberPendingAdminApproval timestamp. */
        public timestamp: Long;

        /**
         * Creates a new MemberPendingAdminApproval instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MemberPendingAdminApproval instance
         */
        public static create(properties?: signalservice.IMemberPendingAdminApproval): signalservice.MemberPendingAdminApproval;

        /**
         * Encodes the specified MemberPendingAdminApproval message. Does not implicitly {@link signalservice.MemberPendingAdminApproval.verify|verify} messages.
         * @param message MemberPendingAdminApproval message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IMemberPendingAdminApproval, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified MemberPendingAdminApproval message, length delimited. Does not implicitly {@link signalservice.MemberPendingAdminApproval.verify|verify} messages.
         * @param message MemberPendingAdminApproval message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IMemberPendingAdminApproval, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a MemberPendingAdminApproval message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MemberPendingAdminApproval
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.MemberPendingAdminApproval;

        /**
         * Decodes a MemberPendingAdminApproval message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MemberPendingAdminApproval
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.MemberPendingAdminApproval;

        /**
         * Verifies a MemberPendingAdminApproval message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a MemberPendingAdminApproval message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MemberPendingAdminApproval
         */
        public static fromObject(object: { [k: string]: any }): signalservice.MemberPendingAdminApproval;

        /**
         * Creates a plain object from a MemberPendingAdminApproval message. Also converts values to other types if specified.
         * @param message MemberPendingAdminApproval
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.MemberPendingAdminApproval, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this MemberPendingAdminApproval to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MemberPendingAdminApproval
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a MemberBanned. */
    interface IMemberBanned {

        /** MemberBanned userId */
        userId?: (Uint8Array|null);

        /** MemberBanned timestamp */
        timestamp?: (Long|null);
    }

    /** Represents a MemberBanned. */
    class MemberBanned implements IMemberBanned {

        /**
         * Constructs a new MemberBanned.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IMemberBanned);

        /** MemberBanned userId. */
        public userId: Uint8Array;

        /** MemberBanned timestamp. */
        public timestamp: Long;

        /**
         * Creates a new MemberBanned instance using the specified properties.
         * @param [properties] Properties to set
         * @returns MemberBanned instance
         */
        public static create(properties?: signalservice.IMemberBanned): signalservice.MemberBanned;

        /**
         * Encodes the specified MemberBanned message. Does not implicitly {@link signalservice.MemberBanned.verify|verify} messages.
         * @param message MemberBanned message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IMemberBanned, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified MemberBanned message, length delimited. Does not implicitly {@link signalservice.MemberBanned.verify|verify} messages.
         * @param message MemberBanned message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IMemberBanned, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a MemberBanned message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns MemberBanned
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.MemberBanned;

        /**
         * Decodes a MemberBanned message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns MemberBanned
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.MemberBanned;

        /**
         * Verifies a MemberBanned message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a MemberBanned message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns MemberBanned
         */
        public static fromObject(object: { [k: string]: any }): signalservice.MemberBanned;

        /**
         * Creates a plain object from a MemberBanned message. Also converts values to other types if specified.
         * @param message MemberBanned
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.MemberBanned, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this MemberBanned to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for MemberBanned
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an AccessControl. */
    interface IAccessControl {

        /** AccessControl attributes */
        attributes?: (signalservice.AccessControl.AccessRequired|null);

        /** AccessControl members */
        members?: (signalservice.AccessControl.AccessRequired|null);

        /** AccessControl addFromInviteLink */
        addFromInviteLink?: (signalservice.AccessControl.AccessRequired|null);
    }

    /** Represents an AccessControl. */
    class AccessControl implements IAccessControl {

        /**
         * Constructs a new AccessControl.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IAccessControl);

        /** AccessControl attributes. */
        public attributes: signalservice.AccessControl.AccessRequired;

        /** AccessControl members. */
        public members: signalservice.AccessControl.AccessRequired;

        /** AccessControl addFromInviteLink. */
        public addFromInviteLink: signalservice.AccessControl.AccessRequired;

        /**
         * Creates a new AccessControl instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AccessControl instance
         */
        public static create(properties?: signalservice.IAccessControl): signalservice.AccessControl;

        /**
         * Encodes the specified AccessControl message. Does not implicitly {@link signalservice.AccessControl.verify|verify} messages.
         * @param message AccessControl message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IAccessControl, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified AccessControl message, length delimited. Does not implicitly {@link signalservice.AccessControl.verify|verify} messages.
         * @param message AccessControl message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IAccessControl, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an AccessControl message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AccessControl
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccessControl;

        /**
         * Decodes an AccessControl message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AccessControl
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccessControl;

        /**
         * Verifies an AccessControl message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an AccessControl message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AccessControl
         */
        public static fromObject(object: { [k: string]: any }): signalservice.AccessControl;

        /**
         * Creates a plain object from an AccessControl message. Also converts values to other types if specified.
         * @param message AccessControl
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.AccessControl, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this AccessControl to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AccessControl
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace AccessControl {

        /** AccessRequired enum. */
        enum AccessRequired {
            UNKNOWN = 0,
            ANY = 1,
            MEMBER = 2,
            ADMINISTRATOR = 3,
            UNSATISFIABLE = 4
        }
    }

    /** Properties of a Group. */
    interface IGroup {

        /** Group publicKey */
        publicKey?: (Uint8Array|null);

        /** Group title */
        title?: (Uint8Array|null);

        /** Group avatar */
        avatar?: (string|null);

        /** Group disappearingMessagesTimer */
        disappearingMessagesTimer?: (Uint8Array|null);

        /** Group accessControl */
        accessControl?: (signalservice.IAccessControl|null);

        /** Group version */
        version?: (number|null);

        /** Group members */
        members?: (signalservice.IMember[]|null);

        /** Group membersPendingProfileKey */
        membersPendingProfileKey?: (signalservice.IMemberPendingProfileKey[]|null);

        /** Group membersPendingAdminApproval */
        membersPendingAdminApproval?: (signalservice.IMemberPendingAdminApproval[]|null);

        /** Group inviteLinkPassword */
        inviteLinkPassword?: (Uint8Array|null);

        /** Group descriptionBytes */
        descriptionBytes?: (Uint8Array|null);

        /** Group announcementsOnly */
        announcementsOnly?: (boolean|null);

        /** Group membersBanned */
        membersBanned?: (signalservice.IMemberBanned[]|null);
    }

    /** Represents a Group. */
    class Group implements IGroup {

        /**
         * Constructs a new Group.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroup);

        /** Group publicKey. */
        public publicKey: Uint8Array;

        /** Group title. */
        public title: Uint8Array;

        /** Group avatar. */
        public avatar: string;

        /** Group disappearingMessagesTimer. */
        public disappearingMessagesTimer: Uint8Array;

        /** Group accessControl. */
        public accessControl?: (signalservice.IAccessControl|null);

        /** Group version. */
        public version: number;

        /** Group members. */
        public members: signalservice.IMember[];

        /** Group membersPendingProfileKey. */
        public membersPendingProfileKey: signalservice.IMemberPendingProfileKey[];

        /** Group membersPendingAdminApproval. */
        public membersPendingAdminApproval: signalservice.IMemberPendingAdminApproval[];

        /** Group inviteLinkPassword. */
        public inviteLinkPassword: Uint8Array;

        /** Group descriptionBytes. */
        public descriptionBytes: Uint8Array;

        /** Group announcementsOnly. */
        public announcementsOnly: boolean;

        /** Group membersBanned. */
        public membersBanned: signalservice.IMemberBanned[];

        /**
         * Creates a new Group instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Group instance
         */
        public static create(properties?: signalservice.IGroup): signalservice.Group;

        /**
         * Encodes the specified Group message. Does not implicitly {@link signalservice.Group.verify|verify} messages.
         * @param message Group message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroup, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified Group message, length delimited. Does not implicitly {@link signalservice.Group.verify|verify} messages.
         * @param message Group message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroup, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a Group message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Group
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Group;

        /**
         * Decodes a Group message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Group
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Group;

        /**
         * Verifies a Group message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a Group message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Group
         */
        public static fromObject(object: { [k: string]: any }): signalservice.Group;

        /**
         * Creates a plain object from a Group message. Also converts values to other types if specified.
         * @param message Group
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.Group, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this Group to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Group
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GroupChange. */
    interface IGroupChange {

        /** GroupChange actions */
        actions?: (Uint8Array|null);

        /** GroupChange serverSignature */
        serverSignature?: (Uint8Array|null);

        /** GroupChange changeEpoch */
        changeEpoch?: (number|null);
    }

    /** Represents a GroupChange. */
    class GroupChange implements IGroupChange {

        /**
         * Constructs a new GroupChange.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupChange);

        /** GroupChange actions. */
        public actions: Uint8Array;

        /** GroupChange serverSignature. */
        public serverSignature: Uint8Array;

        /** GroupChange changeEpoch. */
        public changeEpoch: number;

        /**
         * Creates a new GroupChange instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupChange instance
         */
        public static create(properties?: signalservice.IGroupChange): signalservice.GroupChange;

        /**
         * Encodes the specified GroupChange message. Does not implicitly {@link signalservice.GroupChange.verify|verify} messages.
         * @param message GroupChange message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupChange, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupChange message, length delimited. Does not implicitly {@link signalservice.GroupChange.verify|verify} messages.
         * @param message GroupChange message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupChange, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupChange message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupChange
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange;

        /**
         * Decodes a GroupChange message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupChange
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange;

        /**
         * Verifies a GroupChange message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupChange message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupChange
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupChange;

        /**
         * Creates a plain object from a GroupChange message. Also converts values to other types if specified.
         * @param message GroupChange
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupChange, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupChange to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupChange
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace GroupChange {

        /** Properties of an Actions. */
        interface IActions {

            /** Actions sourceUserId */
            sourceUserId?: (Uint8Array|null);

            /** Actions version */
            version?: (number|null);

            /** Actions groupId */
            groupId?: (Uint8Array|null);

            /** Actions addMembers */
            addMembers?: (signalservice.GroupChange.Actions.IAddMemberAction[]|null);

            /** Actions deleteMembers */
            deleteMembers?: (signalservice.GroupChange.Actions.IDeleteMemberAction[]|null);

            /** Actions modifyMemberRoles */
            modifyMemberRoles?: (signalservice.GroupChange.Actions.IModifyMemberRoleAction[]|null);

            /** Actions modifyMemberProfileKeys */
            modifyMemberProfileKeys?: (signalservice.GroupChange.Actions.IModifyMemberProfileKeyAction[]|null);

            /** Actions addPendingMembers */
            addPendingMembers?: (signalservice.GroupChange.Actions.IAddMemberPendingProfileKeyAction[]|null);

            /** Actions deletePendingMembers */
            deletePendingMembers?: (signalservice.GroupChange.Actions.IDeleteMemberPendingProfileKeyAction[]|null);

            /** Actions promotePendingMembers */
            promotePendingMembers?: (signalservice.GroupChange.Actions.IPromoteMemberPendingProfileKeyAction[]|null);

            /** Actions modifyTitle */
            modifyTitle?: (signalservice.GroupChange.Actions.IModifyTitleAction|null);

            /** Actions modifyAvatar */
            modifyAvatar?: (signalservice.GroupChange.Actions.IModifyAvatarAction|null);

            /** Actions modifyDisappearingMessagesTimer */
            modifyDisappearingMessagesTimer?: (signalservice.GroupChange.Actions.IModifyDisappearingMessagesTimerAction|null);

            /** Actions modifyAttributesAccess */
            modifyAttributesAccess?: (signalservice.GroupChange.Actions.IModifyAttributesAccessControlAction|null);

            /** Actions modifyMemberAccess */
            modifyMemberAccess?: (signalservice.GroupChange.Actions.IModifyMembersAccessControlAction|null);

            /** Actions modifyAddFromInviteLinkAccess */
            modifyAddFromInviteLinkAccess?: (signalservice.GroupChange.Actions.IModifyAddFromInviteLinkAccessControlAction|null);

            /** Actions addMemberPendingAdminApprovals */
            addMemberPendingAdminApprovals?: (signalservice.GroupChange.Actions.IAddMemberPendingAdminApprovalAction[]|null);

            /** Actions deleteMemberPendingAdminApprovals */
            deleteMemberPendingAdminApprovals?: (signalservice.GroupChange.Actions.IDeleteMemberPendingAdminApprovalAction[]|null);

            /** Actions promoteMemberPendingAdminApprovals */
            promoteMemberPendingAdminApprovals?: (signalservice.GroupChange.Actions.IPromoteMemberPendingAdminApprovalAction[]|null);

            /** Actions modifyInviteLinkPassword */
            modifyInviteLinkPassword?: (signalservice.GroupChange.Actions.IModifyInviteLinkPasswordAction|null);

            /** Actions modifyDescription */
            modifyDescription?: (signalservice.GroupChange.Actions.IModifyDescriptionAction|null);

            /** Actions modifyAnnouncementsOnly */
            modifyAnnouncementsOnly?: (signalservice.GroupChange.Actions.IModifyAnnouncementsOnlyAction|null);

            /** Actions addMembersBanned */
            addMembersBanned?: (signalservice.GroupChange.Actions.IAddMemberBannedAction[]|null);

            /** Actions deleteMembersBanned */
            deleteMembersBanned?: (signalservice.GroupChange.Actions.IDeleteMemberBannedAction[]|null);

            /** Actions promoteMembersPendingPniAciProfileKey */
            promoteMembersPendingPniAciProfileKey?: (signalservice.GroupChange.Actions.IPromoteMemberPendingPniAciProfileKeyAction[]|null);
        }

        /** Represents an Actions. */
        class Actions implements IActions {

            /**
             * Constructs a new Actions.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.GroupChange.IActions);

            /** Actions sourceUserId. */
            public sourceUserId: Uint8Array;

            /** Actions version. */
            public version: number;

            /** Actions groupId. */
            public groupId: Uint8Array;

            /** Actions addMembers. */
            public addMembers: signalservice.GroupChange.Actions.IAddMemberAction[];

            /** Actions deleteMembers. */
            public deleteMembers: signalservice.GroupChange.Actions.IDeleteMemberAction[];

            /** Actions modifyMemberRoles. */
            public modifyMemberRoles: signalservice.GroupChange.Actions.IModifyMemberRoleAction[];

            /** Actions modifyMemberProfileKeys. */
            public modifyMemberProfileKeys: signalservice.GroupChange.Actions.IModifyMemberProfileKeyAction[];

            /** Actions addPendingMembers. */
            public addPendingMembers: signalservice.GroupChange.Actions.IAddMemberPendingProfileKeyAction[];

            /** Actions deletePendingMembers. */
            public deletePendingMembers: signalservice.GroupChange.Actions.IDeleteMemberPendingProfileKeyAction[];

            /** Actions promotePendingMembers. */
            public promotePendingMembers: signalservice.GroupChange.Actions.IPromoteMemberPendingProfileKeyAction[];

            /** Actions modifyTitle. */
            public modifyTitle?: (signalservice.GroupChange.Actions.IModifyTitleAction|null);

            /** Actions modifyAvatar. */
            public modifyAvatar?: (signalservice.GroupChange.Actions.IModifyAvatarAction|null);

            /** Actions modifyDisappearingMessagesTimer. */
            public modifyDisappearingMessagesTimer?: (signalservice.GroupChange.Actions.IModifyDisappearingMessagesTimerAction|null);

            /** Actions modifyAttributesAccess. */
            public modifyAttributesAccess?: (signalservice.GroupChange.Actions.IModifyAttributesAccessControlAction|null);

            /** Actions modifyMemberAccess. */
            public modifyMemberAccess?: (signalservice.GroupChange.Actions.IModifyMembersAccessControlAction|null);

            /** Actions modifyAddFromInviteLinkAccess. */
            public modifyAddFromInviteLinkAccess?: (signalservice.GroupChange.Actions.IModifyAddFromInviteLinkAccessControlAction|null);

            /** Actions addMemberPendingAdminApprovals. */
            public addMemberPendingAdminApprovals: signalservice.GroupChange.Actions.IAddMemberPendingAdminApprovalAction[];

            /** Actions deleteMemberPendingAdminApprovals. */
            public deleteMemberPendingAdminApprovals: signalservice.GroupChange.Actions.IDeleteMemberPendingAdminApprovalAction[];

            /** Actions promoteMemberPendingAdminApprovals. */
            public promoteMemberPendingAdminApprovals: signalservice.GroupChange.Actions.IPromoteMemberPendingAdminApprovalAction[];

            /** Actions modifyInviteLinkPassword. */
            public modifyInviteLinkPassword?: (signalservice.GroupChange.Actions.IModifyInviteLinkPasswordAction|null);

            /** Actions modifyDescription. */
            public modifyDescription?: (signalservice.GroupChange.Actions.IModifyDescriptionAction|null);

            /** Actions modifyAnnouncementsOnly. */
            public modifyAnnouncementsOnly?: (signalservice.GroupChange.Actions.IModifyAnnouncementsOnlyAction|null);

            /** Actions addMembersBanned. */
            public addMembersBanned: signalservice.GroupChange.Actions.IAddMemberBannedAction[];

            /** Actions deleteMembersBanned. */
            public deleteMembersBanned: signalservice.GroupChange.Actions.IDeleteMemberBannedAction[];

            /** Actions promoteMembersPendingPniAciProfileKey. */
            public promoteMembersPendingPniAciProfileKey: signalservice.GroupChange.Actions.IPromoteMemberPendingPniAciProfileKeyAction[];

            /**
             * Creates a new Actions instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Actions instance
             */
            public static create(properties?: signalservice.GroupChange.IActions): signalservice.GroupChange.Actions;

            /**
             * Encodes the specified Actions message. Does not implicitly {@link signalservice.GroupChange.Actions.verify|verify} messages.
             * @param message Actions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.GroupChange.IActions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Actions message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.verify|verify} messages.
             * @param message Actions message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.GroupChange.IActions, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Actions message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Actions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions;

            /**
             * Decodes an Actions message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Actions
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions;

            /**
             * Verifies an Actions message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Actions message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Actions
             */
            public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions;

            /**
             * Creates a plain object from an Actions message. Also converts values to other types if specified.
             * @param message Actions
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.GroupChange.Actions, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Actions to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Actions
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Actions {

            /** Properties of an AddMemberAction. */
            interface IAddMemberAction {

                /** AddMemberAction added */
                added?: (signalservice.IMember|null);

                /** AddMemberAction joinFromInviteLink */
                joinFromInviteLink?: (boolean|null);
            }

            /** Represents an AddMemberAction. */
            class AddMemberAction implements IAddMemberAction {

                /**
                 * Constructs a new AddMemberAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IAddMemberAction);

                /** AddMemberAction added. */
                public added?: (signalservice.IMember|null);

                /** AddMemberAction joinFromInviteLink. */
                public joinFromInviteLink: boolean;

                /**
                 * Creates a new AddMemberAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AddMemberAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IAddMemberAction): signalservice.GroupChange.Actions.AddMemberAction;

                /**
                 * Encodes the specified AddMemberAction message. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberAction.verify|verify} messages.
                 * @param message AddMemberAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IAddMemberAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AddMemberAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberAction.verify|verify} messages.
                 * @param message AddMemberAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IAddMemberAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AddMemberAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AddMemberAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.AddMemberAction;

                /**
                 * Decodes an AddMemberAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AddMemberAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.AddMemberAction;

                /**
                 * Verifies an AddMemberAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AddMemberAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AddMemberAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.AddMemberAction;

                /**
                 * Creates a plain object from an AddMemberAction message. Also converts values to other types if specified.
                 * @param message AddMemberAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.AddMemberAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AddMemberAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AddMemberAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a DeleteMemberAction. */
            interface IDeleteMemberAction {

                /** DeleteMemberAction deletedUserId */
                deletedUserId?: (Uint8Array|null);
            }

            /** Represents a DeleteMemberAction. */
            class DeleteMemberAction implements IDeleteMemberAction {

                /**
                 * Constructs a new DeleteMemberAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IDeleteMemberAction);

                /** DeleteMemberAction deletedUserId. */
                public deletedUserId: Uint8Array;

                /**
                 * Creates a new DeleteMemberAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns DeleteMemberAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IDeleteMemberAction): signalservice.GroupChange.Actions.DeleteMemberAction;

                /**
                 * Encodes the specified DeleteMemberAction message. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberAction.verify|verify} messages.
                 * @param message DeleteMemberAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IDeleteMemberAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified DeleteMemberAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberAction.verify|verify} messages.
                 * @param message DeleteMemberAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IDeleteMemberAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a DeleteMemberAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns DeleteMemberAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.DeleteMemberAction;

                /**
                 * Decodes a DeleteMemberAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns DeleteMemberAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.DeleteMemberAction;

                /**
                 * Verifies a DeleteMemberAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a DeleteMemberAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns DeleteMemberAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.DeleteMemberAction;

                /**
                 * Creates a plain object from a DeleteMemberAction message. Also converts values to other types if specified.
                 * @param message DeleteMemberAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.DeleteMemberAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this DeleteMemberAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for DeleteMemberAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyMemberRoleAction. */
            interface IModifyMemberRoleAction {

                /** ModifyMemberRoleAction userId */
                userId?: (Uint8Array|null);

                /** ModifyMemberRoleAction role */
                role?: (signalservice.Member.Role|null);
            }

            /** Represents a ModifyMemberRoleAction. */
            class ModifyMemberRoleAction implements IModifyMemberRoleAction {

                /**
                 * Constructs a new ModifyMemberRoleAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyMemberRoleAction);

                /** ModifyMemberRoleAction userId. */
                public userId: Uint8Array;

                /** ModifyMemberRoleAction role. */
                public role: signalservice.Member.Role;

                /**
                 * Creates a new ModifyMemberRoleAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyMemberRoleAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyMemberRoleAction): signalservice.GroupChange.Actions.ModifyMemberRoleAction;

                /**
                 * Encodes the specified ModifyMemberRoleAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyMemberRoleAction.verify|verify} messages.
                 * @param message ModifyMemberRoleAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyMemberRoleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyMemberRoleAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyMemberRoleAction.verify|verify} messages.
                 * @param message ModifyMemberRoleAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyMemberRoleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyMemberRoleAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyMemberRoleAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyMemberRoleAction;

                /**
                 * Decodes a ModifyMemberRoleAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyMemberRoleAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyMemberRoleAction;

                /**
                 * Verifies a ModifyMemberRoleAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyMemberRoleAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyMemberRoleAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyMemberRoleAction;

                /**
                 * Creates a plain object from a ModifyMemberRoleAction message. Also converts values to other types if specified.
                 * @param message ModifyMemberRoleAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyMemberRoleAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyMemberRoleAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyMemberRoleAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyMemberProfileKeyAction. */
            interface IModifyMemberProfileKeyAction {

                /** ModifyMemberProfileKeyAction presentation */
                presentation?: (Uint8Array|null);

                /** ModifyMemberProfileKeyAction userId */
                userId?: (Uint8Array|null);

                /** ModifyMemberProfileKeyAction profileKey */
                profileKey?: (Uint8Array|null);
            }

            /** Represents a ModifyMemberProfileKeyAction. */
            class ModifyMemberProfileKeyAction implements IModifyMemberProfileKeyAction {

                /**
                 * Constructs a new ModifyMemberProfileKeyAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyMemberProfileKeyAction);

                /** ModifyMemberProfileKeyAction presentation. */
                public presentation: Uint8Array;

                /** ModifyMemberProfileKeyAction userId. */
                public userId: Uint8Array;

                /** ModifyMemberProfileKeyAction profileKey. */
                public profileKey: Uint8Array;

                /**
                 * Creates a new ModifyMemberProfileKeyAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyMemberProfileKeyAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyMemberProfileKeyAction): signalservice.GroupChange.Actions.ModifyMemberProfileKeyAction;

                /**
                 * Encodes the specified ModifyMemberProfileKeyAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyMemberProfileKeyAction.verify|verify} messages.
                 * @param message ModifyMemberProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyMemberProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyMemberProfileKeyAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyMemberProfileKeyAction.verify|verify} messages.
                 * @param message ModifyMemberProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyMemberProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyMemberProfileKeyAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyMemberProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyMemberProfileKeyAction;

                /**
                 * Decodes a ModifyMemberProfileKeyAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyMemberProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyMemberProfileKeyAction;

                /**
                 * Verifies a ModifyMemberProfileKeyAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyMemberProfileKeyAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyMemberProfileKeyAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyMemberProfileKeyAction;

                /**
                 * Creates a plain object from a ModifyMemberProfileKeyAction message. Also converts values to other types if specified.
                 * @param message ModifyMemberProfileKeyAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyMemberProfileKeyAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyMemberProfileKeyAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyMemberProfileKeyAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AddMemberPendingProfileKeyAction. */
            interface IAddMemberPendingProfileKeyAction {

                /** AddMemberPendingProfileKeyAction added */
                added?: (signalservice.IMemberPendingProfileKey|null);
            }

            /** Represents an AddMemberPendingProfileKeyAction. */
            class AddMemberPendingProfileKeyAction implements IAddMemberPendingProfileKeyAction {

                /**
                 * Constructs a new AddMemberPendingProfileKeyAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IAddMemberPendingProfileKeyAction);

                /** AddMemberPendingProfileKeyAction added. */
                public added?: (signalservice.IMemberPendingProfileKey|null);

                /**
                 * Creates a new AddMemberPendingProfileKeyAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AddMemberPendingProfileKeyAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IAddMemberPendingProfileKeyAction): signalservice.GroupChange.Actions.AddMemberPendingProfileKeyAction;

                /**
                 * Encodes the specified AddMemberPendingProfileKeyAction message. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberPendingProfileKeyAction.verify|verify} messages.
                 * @param message AddMemberPendingProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IAddMemberPendingProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AddMemberPendingProfileKeyAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberPendingProfileKeyAction.verify|verify} messages.
                 * @param message AddMemberPendingProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IAddMemberPendingProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AddMemberPendingProfileKeyAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AddMemberPendingProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.AddMemberPendingProfileKeyAction;

                /**
                 * Decodes an AddMemberPendingProfileKeyAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AddMemberPendingProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.AddMemberPendingProfileKeyAction;

                /**
                 * Verifies an AddMemberPendingProfileKeyAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AddMemberPendingProfileKeyAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AddMemberPendingProfileKeyAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.AddMemberPendingProfileKeyAction;

                /**
                 * Creates a plain object from an AddMemberPendingProfileKeyAction message. Also converts values to other types if specified.
                 * @param message AddMemberPendingProfileKeyAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.AddMemberPendingProfileKeyAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AddMemberPendingProfileKeyAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AddMemberPendingProfileKeyAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a DeleteMemberPendingProfileKeyAction. */
            interface IDeleteMemberPendingProfileKeyAction {

                /** DeleteMemberPendingProfileKeyAction deletedUserId */
                deletedUserId?: (Uint8Array|null);
            }

            /** Represents a DeleteMemberPendingProfileKeyAction. */
            class DeleteMemberPendingProfileKeyAction implements IDeleteMemberPendingProfileKeyAction {

                /**
                 * Constructs a new DeleteMemberPendingProfileKeyAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IDeleteMemberPendingProfileKeyAction);

                /** DeleteMemberPendingProfileKeyAction deletedUserId. */
                public deletedUserId: Uint8Array;

                /**
                 * Creates a new DeleteMemberPendingProfileKeyAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns DeleteMemberPendingProfileKeyAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IDeleteMemberPendingProfileKeyAction): signalservice.GroupChange.Actions.DeleteMemberPendingProfileKeyAction;

                /**
                 * Encodes the specified DeleteMemberPendingProfileKeyAction message. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberPendingProfileKeyAction.verify|verify} messages.
                 * @param message DeleteMemberPendingProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IDeleteMemberPendingProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified DeleteMemberPendingProfileKeyAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberPendingProfileKeyAction.verify|verify} messages.
                 * @param message DeleteMemberPendingProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IDeleteMemberPendingProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a DeleteMemberPendingProfileKeyAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns DeleteMemberPendingProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.DeleteMemberPendingProfileKeyAction;

                /**
                 * Decodes a DeleteMemberPendingProfileKeyAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns DeleteMemberPendingProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.DeleteMemberPendingProfileKeyAction;

                /**
                 * Verifies a DeleteMemberPendingProfileKeyAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a DeleteMemberPendingProfileKeyAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns DeleteMemberPendingProfileKeyAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.DeleteMemberPendingProfileKeyAction;

                /**
                 * Creates a plain object from a DeleteMemberPendingProfileKeyAction message. Also converts values to other types if specified.
                 * @param message DeleteMemberPendingProfileKeyAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.DeleteMemberPendingProfileKeyAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this DeleteMemberPendingProfileKeyAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for DeleteMemberPendingProfileKeyAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PromoteMemberPendingProfileKeyAction. */
            interface IPromoteMemberPendingProfileKeyAction {

                /** PromoteMemberPendingProfileKeyAction presentation */
                presentation?: (Uint8Array|null);

                /** PromoteMemberPendingProfileKeyAction userId */
                userId?: (Uint8Array|null);

                /** PromoteMemberPendingProfileKeyAction profileKey */
                profileKey?: (Uint8Array|null);
            }

            /** Represents a PromoteMemberPendingProfileKeyAction. */
            class PromoteMemberPendingProfileKeyAction implements IPromoteMemberPendingProfileKeyAction {

                /**
                 * Constructs a new PromoteMemberPendingProfileKeyAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IPromoteMemberPendingProfileKeyAction);

                /** PromoteMemberPendingProfileKeyAction presentation. */
                public presentation: Uint8Array;

                /** PromoteMemberPendingProfileKeyAction userId. */
                public userId: Uint8Array;

                /** PromoteMemberPendingProfileKeyAction profileKey. */
                public profileKey: Uint8Array;

                /**
                 * Creates a new PromoteMemberPendingProfileKeyAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PromoteMemberPendingProfileKeyAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IPromoteMemberPendingProfileKeyAction): signalservice.GroupChange.Actions.PromoteMemberPendingProfileKeyAction;

                /**
                 * Encodes the specified PromoteMemberPendingProfileKeyAction message. Does not implicitly {@link signalservice.GroupChange.Actions.PromoteMemberPendingProfileKeyAction.verify|verify} messages.
                 * @param message PromoteMemberPendingProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IPromoteMemberPendingProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PromoteMemberPendingProfileKeyAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.PromoteMemberPendingProfileKeyAction.verify|verify} messages.
                 * @param message PromoteMemberPendingProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IPromoteMemberPendingProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PromoteMemberPendingProfileKeyAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PromoteMemberPendingProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.PromoteMemberPendingProfileKeyAction;

                /**
                 * Decodes a PromoteMemberPendingProfileKeyAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PromoteMemberPendingProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.PromoteMemberPendingProfileKeyAction;

                /**
                 * Verifies a PromoteMemberPendingProfileKeyAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PromoteMemberPendingProfileKeyAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PromoteMemberPendingProfileKeyAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.PromoteMemberPendingProfileKeyAction;

                /**
                 * Creates a plain object from a PromoteMemberPendingProfileKeyAction message. Also converts values to other types if specified.
                 * @param message PromoteMemberPendingProfileKeyAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.PromoteMemberPendingProfileKeyAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PromoteMemberPendingProfileKeyAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PromoteMemberPendingProfileKeyAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PromoteMemberPendingPniAciProfileKeyAction. */
            interface IPromoteMemberPendingPniAciProfileKeyAction {

                /** PromoteMemberPendingPniAciProfileKeyAction presentation */
                presentation?: (Uint8Array|null);

                /** PromoteMemberPendingPniAciProfileKeyAction userId */
                userId?: (Uint8Array|null);

                /** PromoteMemberPendingPniAciProfileKeyAction pni */
                pni?: (Uint8Array|null);

                /** PromoteMemberPendingPniAciProfileKeyAction profileKey */
                profileKey?: (Uint8Array|null);
            }

            /** Represents a PromoteMemberPendingPniAciProfileKeyAction. */
            class PromoteMemberPendingPniAciProfileKeyAction implements IPromoteMemberPendingPniAciProfileKeyAction {

                /**
                 * Constructs a new PromoteMemberPendingPniAciProfileKeyAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IPromoteMemberPendingPniAciProfileKeyAction);

                /** PromoteMemberPendingPniAciProfileKeyAction presentation. */
                public presentation: Uint8Array;

                /** PromoteMemberPendingPniAciProfileKeyAction userId. */
                public userId: Uint8Array;

                /** PromoteMemberPendingPniAciProfileKeyAction pni. */
                public pni: Uint8Array;

                /** PromoteMemberPendingPniAciProfileKeyAction profileKey. */
                public profileKey: Uint8Array;

                /**
                 * Creates a new PromoteMemberPendingPniAciProfileKeyAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PromoteMemberPendingPniAciProfileKeyAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IPromoteMemberPendingPniAciProfileKeyAction): signalservice.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction;

                /**
                 * Encodes the specified PromoteMemberPendingPniAciProfileKeyAction message. Does not implicitly {@link signalservice.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction.verify|verify} messages.
                 * @param message PromoteMemberPendingPniAciProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IPromoteMemberPendingPniAciProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PromoteMemberPendingPniAciProfileKeyAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction.verify|verify} messages.
                 * @param message PromoteMemberPendingPniAciProfileKeyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IPromoteMemberPendingPniAciProfileKeyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PromoteMemberPendingPniAciProfileKeyAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PromoteMemberPendingPniAciProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction;

                /**
                 * Decodes a PromoteMemberPendingPniAciProfileKeyAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PromoteMemberPendingPniAciProfileKeyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction;

                /**
                 * Verifies a PromoteMemberPendingPniAciProfileKeyAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PromoteMemberPendingPniAciProfileKeyAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PromoteMemberPendingPniAciProfileKeyAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction;

                /**
                 * Creates a plain object from a PromoteMemberPendingPniAciProfileKeyAction message. Also converts values to other types if specified.
                 * @param message PromoteMemberPendingPniAciProfileKeyAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.PromoteMemberPendingPniAciProfileKeyAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PromoteMemberPendingPniAciProfileKeyAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PromoteMemberPendingPniAciProfileKeyAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AddMemberPendingAdminApprovalAction. */
            interface IAddMemberPendingAdminApprovalAction {

                /** AddMemberPendingAdminApprovalAction added */
                added?: (signalservice.IMemberPendingAdminApproval|null);
            }

            /** Represents an AddMemberPendingAdminApprovalAction. */
            class AddMemberPendingAdminApprovalAction implements IAddMemberPendingAdminApprovalAction {

                /**
                 * Constructs a new AddMemberPendingAdminApprovalAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IAddMemberPendingAdminApprovalAction);

                /** AddMemberPendingAdminApprovalAction added. */
                public added?: (signalservice.IMemberPendingAdminApproval|null);

                /**
                 * Creates a new AddMemberPendingAdminApprovalAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AddMemberPendingAdminApprovalAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IAddMemberPendingAdminApprovalAction): signalservice.GroupChange.Actions.AddMemberPendingAdminApprovalAction;

                /**
                 * Encodes the specified AddMemberPendingAdminApprovalAction message. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberPendingAdminApprovalAction.verify|verify} messages.
                 * @param message AddMemberPendingAdminApprovalAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IAddMemberPendingAdminApprovalAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AddMemberPendingAdminApprovalAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberPendingAdminApprovalAction.verify|verify} messages.
                 * @param message AddMemberPendingAdminApprovalAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IAddMemberPendingAdminApprovalAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AddMemberPendingAdminApprovalAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AddMemberPendingAdminApprovalAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.AddMemberPendingAdminApprovalAction;

                /**
                 * Decodes an AddMemberPendingAdminApprovalAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AddMemberPendingAdminApprovalAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.AddMemberPendingAdminApprovalAction;

                /**
                 * Verifies an AddMemberPendingAdminApprovalAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AddMemberPendingAdminApprovalAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AddMemberPendingAdminApprovalAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.AddMemberPendingAdminApprovalAction;

                /**
                 * Creates a plain object from an AddMemberPendingAdminApprovalAction message. Also converts values to other types if specified.
                 * @param message AddMemberPendingAdminApprovalAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.AddMemberPendingAdminApprovalAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AddMemberPendingAdminApprovalAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AddMemberPendingAdminApprovalAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a DeleteMemberPendingAdminApprovalAction. */
            interface IDeleteMemberPendingAdminApprovalAction {

                /** DeleteMemberPendingAdminApprovalAction deletedUserId */
                deletedUserId?: (Uint8Array|null);
            }

            /** Represents a DeleteMemberPendingAdminApprovalAction. */
            class DeleteMemberPendingAdminApprovalAction implements IDeleteMemberPendingAdminApprovalAction {

                /**
                 * Constructs a new DeleteMemberPendingAdminApprovalAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IDeleteMemberPendingAdminApprovalAction);

                /** DeleteMemberPendingAdminApprovalAction deletedUserId. */
                public deletedUserId: Uint8Array;

                /**
                 * Creates a new DeleteMemberPendingAdminApprovalAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns DeleteMemberPendingAdminApprovalAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IDeleteMemberPendingAdminApprovalAction): signalservice.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction;

                /**
                 * Encodes the specified DeleteMemberPendingAdminApprovalAction message. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction.verify|verify} messages.
                 * @param message DeleteMemberPendingAdminApprovalAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IDeleteMemberPendingAdminApprovalAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified DeleteMemberPendingAdminApprovalAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction.verify|verify} messages.
                 * @param message DeleteMemberPendingAdminApprovalAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IDeleteMemberPendingAdminApprovalAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a DeleteMemberPendingAdminApprovalAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns DeleteMemberPendingAdminApprovalAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction;

                /**
                 * Decodes a DeleteMemberPendingAdminApprovalAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns DeleteMemberPendingAdminApprovalAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction;

                /**
                 * Verifies a DeleteMemberPendingAdminApprovalAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a DeleteMemberPendingAdminApprovalAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns DeleteMemberPendingAdminApprovalAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction;

                /**
                 * Creates a plain object from a DeleteMemberPendingAdminApprovalAction message. Also converts values to other types if specified.
                 * @param message DeleteMemberPendingAdminApprovalAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.DeleteMemberPendingAdminApprovalAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this DeleteMemberPendingAdminApprovalAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for DeleteMemberPendingAdminApprovalAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PromoteMemberPendingAdminApprovalAction. */
            interface IPromoteMemberPendingAdminApprovalAction {

                /** PromoteMemberPendingAdminApprovalAction userId */
                userId?: (Uint8Array|null);

                /** PromoteMemberPendingAdminApprovalAction role */
                role?: (signalservice.Member.Role|null);
            }

            /** Represents a PromoteMemberPendingAdminApprovalAction. */
            class PromoteMemberPendingAdminApprovalAction implements IPromoteMemberPendingAdminApprovalAction {

                /**
                 * Constructs a new PromoteMemberPendingAdminApprovalAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IPromoteMemberPendingAdminApprovalAction);

                /** PromoteMemberPendingAdminApprovalAction userId. */
                public userId: Uint8Array;

                /** PromoteMemberPendingAdminApprovalAction role. */
                public role: signalservice.Member.Role;

                /**
                 * Creates a new PromoteMemberPendingAdminApprovalAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PromoteMemberPendingAdminApprovalAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IPromoteMemberPendingAdminApprovalAction): signalservice.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction;

                /**
                 * Encodes the specified PromoteMemberPendingAdminApprovalAction message. Does not implicitly {@link signalservice.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.verify|verify} messages.
                 * @param message PromoteMemberPendingAdminApprovalAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IPromoteMemberPendingAdminApprovalAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PromoteMemberPendingAdminApprovalAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction.verify|verify} messages.
                 * @param message PromoteMemberPendingAdminApprovalAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IPromoteMemberPendingAdminApprovalAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PromoteMemberPendingAdminApprovalAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PromoteMemberPendingAdminApprovalAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction;

                /**
                 * Decodes a PromoteMemberPendingAdminApprovalAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PromoteMemberPendingAdminApprovalAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction;

                /**
                 * Verifies a PromoteMemberPendingAdminApprovalAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PromoteMemberPendingAdminApprovalAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PromoteMemberPendingAdminApprovalAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction;

                /**
                 * Creates a plain object from a PromoteMemberPendingAdminApprovalAction message. Also converts values to other types if specified.
                 * @param message PromoteMemberPendingAdminApprovalAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.PromoteMemberPendingAdminApprovalAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PromoteMemberPendingAdminApprovalAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PromoteMemberPendingAdminApprovalAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AddMemberBannedAction. */
            interface IAddMemberBannedAction {

                /** AddMemberBannedAction added */
                added?: (signalservice.IMemberBanned|null);
            }

            /** Represents an AddMemberBannedAction. */
            class AddMemberBannedAction implements IAddMemberBannedAction {

                /**
                 * Constructs a new AddMemberBannedAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IAddMemberBannedAction);

                /** AddMemberBannedAction added. */
                public added?: (signalservice.IMemberBanned|null);

                /**
                 * Creates a new AddMemberBannedAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AddMemberBannedAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IAddMemberBannedAction): signalservice.GroupChange.Actions.AddMemberBannedAction;

                /**
                 * Encodes the specified AddMemberBannedAction message. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberBannedAction.verify|verify} messages.
                 * @param message AddMemberBannedAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IAddMemberBannedAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AddMemberBannedAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.AddMemberBannedAction.verify|verify} messages.
                 * @param message AddMemberBannedAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IAddMemberBannedAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AddMemberBannedAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AddMemberBannedAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.AddMemberBannedAction;

                /**
                 * Decodes an AddMemberBannedAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AddMemberBannedAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.AddMemberBannedAction;

                /**
                 * Verifies an AddMemberBannedAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AddMemberBannedAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AddMemberBannedAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.AddMemberBannedAction;

                /**
                 * Creates a plain object from an AddMemberBannedAction message. Also converts values to other types if specified.
                 * @param message AddMemberBannedAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.AddMemberBannedAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AddMemberBannedAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AddMemberBannedAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a DeleteMemberBannedAction. */
            interface IDeleteMemberBannedAction {

                /** DeleteMemberBannedAction deletedUserId */
                deletedUserId?: (Uint8Array|null);
            }

            /** Represents a DeleteMemberBannedAction. */
            class DeleteMemberBannedAction implements IDeleteMemberBannedAction {

                /**
                 * Constructs a new DeleteMemberBannedAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IDeleteMemberBannedAction);

                /** DeleteMemberBannedAction deletedUserId. */
                public deletedUserId: Uint8Array;

                /**
                 * Creates a new DeleteMemberBannedAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns DeleteMemberBannedAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IDeleteMemberBannedAction): signalservice.GroupChange.Actions.DeleteMemberBannedAction;

                /**
                 * Encodes the specified DeleteMemberBannedAction message. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberBannedAction.verify|verify} messages.
                 * @param message DeleteMemberBannedAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IDeleteMemberBannedAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified DeleteMemberBannedAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.DeleteMemberBannedAction.verify|verify} messages.
                 * @param message DeleteMemberBannedAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IDeleteMemberBannedAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a DeleteMemberBannedAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns DeleteMemberBannedAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.DeleteMemberBannedAction;

                /**
                 * Decodes a DeleteMemberBannedAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns DeleteMemberBannedAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.DeleteMemberBannedAction;

                /**
                 * Verifies a DeleteMemberBannedAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a DeleteMemberBannedAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns DeleteMemberBannedAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.DeleteMemberBannedAction;

                /**
                 * Creates a plain object from a DeleteMemberBannedAction message. Also converts values to other types if specified.
                 * @param message DeleteMemberBannedAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.DeleteMemberBannedAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this DeleteMemberBannedAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for DeleteMemberBannedAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyTitleAction. */
            interface IModifyTitleAction {

                /** ModifyTitleAction title */
                title?: (Uint8Array|null);
            }

            /** Represents a ModifyTitleAction. */
            class ModifyTitleAction implements IModifyTitleAction {

                /**
                 * Constructs a new ModifyTitleAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyTitleAction);

                /** ModifyTitleAction title. */
                public title: Uint8Array;

                /**
                 * Creates a new ModifyTitleAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyTitleAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyTitleAction): signalservice.GroupChange.Actions.ModifyTitleAction;

                /**
                 * Encodes the specified ModifyTitleAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyTitleAction.verify|verify} messages.
                 * @param message ModifyTitleAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyTitleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyTitleAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyTitleAction.verify|verify} messages.
                 * @param message ModifyTitleAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyTitleAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyTitleAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyTitleAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyTitleAction;

                /**
                 * Decodes a ModifyTitleAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyTitleAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyTitleAction;

                /**
                 * Verifies a ModifyTitleAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyTitleAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyTitleAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyTitleAction;

                /**
                 * Creates a plain object from a ModifyTitleAction message. Also converts values to other types if specified.
                 * @param message ModifyTitleAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyTitleAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyTitleAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyTitleAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyAvatarAction. */
            interface IModifyAvatarAction {

                /** ModifyAvatarAction avatar */
                avatar?: (string|null);
            }

            /** Represents a ModifyAvatarAction. */
            class ModifyAvatarAction implements IModifyAvatarAction {

                /**
                 * Constructs a new ModifyAvatarAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyAvatarAction);

                /** ModifyAvatarAction avatar. */
                public avatar: string;

                /**
                 * Creates a new ModifyAvatarAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyAvatarAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyAvatarAction): signalservice.GroupChange.Actions.ModifyAvatarAction;

                /**
                 * Encodes the specified ModifyAvatarAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAvatarAction.verify|verify} messages.
                 * @param message ModifyAvatarAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyAvatarAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyAvatarAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAvatarAction.verify|verify} messages.
                 * @param message ModifyAvatarAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyAvatarAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyAvatarAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyAvatarAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyAvatarAction;

                /**
                 * Decodes a ModifyAvatarAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyAvatarAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyAvatarAction;

                /**
                 * Verifies a ModifyAvatarAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyAvatarAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyAvatarAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyAvatarAction;

                /**
                 * Creates a plain object from a ModifyAvatarAction message. Also converts values to other types if specified.
                 * @param message ModifyAvatarAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyAvatarAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyAvatarAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyAvatarAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyDisappearingMessagesTimerAction. */
            interface IModifyDisappearingMessagesTimerAction {

                /** ModifyDisappearingMessagesTimerAction timer */
                timer?: (Uint8Array|null);
            }

            /** Represents a ModifyDisappearingMessagesTimerAction. */
            class ModifyDisappearingMessagesTimerAction implements IModifyDisappearingMessagesTimerAction {

                /**
                 * Constructs a new ModifyDisappearingMessagesTimerAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyDisappearingMessagesTimerAction);

                /** ModifyDisappearingMessagesTimerAction timer. */
                public timer: Uint8Array;

                /**
                 * Creates a new ModifyDisappearingMessagesTimerAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyDisappearingMessagesTimerAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyDisappearingMessagesTimerAction): signalservice.GroupChange.Actions.ModifyDisappearingMessagesTimerAction;

                /**
                 * Encodes the specified ModifyDisappearingMessagesTimerAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyDisappearingMessagesTimerAction.verify|verify} messages.
                 * @param message ModifyDisappearingMessagesTimerAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyDisappearingMessagesTimerAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyDisappearingMessagesTimerAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyDisappearingMessagesTimerAction.verify|verify} messages.
                 * @param message ModifyDisappearingMessagesTimerAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyDisappearingMessagesTimerAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyDisappearingMessagesTimerAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyDisappearingMessagesTimerAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyDisappearingMessagesTimerAction;

                /**
                 * Decodes a ModifyDisappearingMessagesTimerAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyDisappearingMessagesTimerAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyDisappearingMessagesTimerAction;

                /**
                 * Verifies a ModifyDisappearingMessagesTimerAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyDisappearingMessagesTimerAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyDisappearingMessagesTimerAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyDisappearingMessagesTimerAction;

                /**
                 * Creates a plain object from a ModifyDisappearingMessagesTimerAction message. Also converts values to other types if specified.
                 * @param message ModifyDisappearingMessagesTimerAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyDisappearingMessagesTimerAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyDisappearingMessagesTimerAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyDisappearingMessagesTimerAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyAttributesAccessControlAction. */
            interface IModifyAttributesAccessControlAction {

                /** ModifyAttributesAccessControlAction attributesAccess */
                attributesAccess?: (signalservice.AccessControl.AccessRequired|null);
            }

            /** Represents a ModifyAttributesAccessControlAction. */
            class ModifyAttributesAccessControlAction implements IModifyAttributesAccessControlAction {

                /**
                 * Constructs a new ModifyAttributesAccessControlAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyAttributesAccessControlAction);

                /** ModifyAttributesAccessControlAction attributesAccess. */
                public attributesAccess: signalservice.AccessControl.AccessRequired;

                /**
                 * Creates a new ModifyAttributesAccessControlAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyAttributesAccessControlAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyAttributesAccessControlAction): signalservice.GroupChange.Actions.ModifyAttributesAccessControlAction;

                /**
                 * Encodes the specified ModifyAttributesAccessControlAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAttributesAccessControlAction.verify|verify} messages.
                 * @param message ModifyAttributesAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyAttributesAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyAttributesAccessControlAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAttributesAccessControlAction.verify|verify} messages.
                 * @param message ModifyAttributesAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyAttributesAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyAttributesAccessControlAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyAttributesAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyAttributesAccessControlAction;

                /**
                 * Decodes a ModifyAttributesAccessControlAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyAttributesAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyAttributesAccessControlAction;

                /**
                 * Verifies a ModifyAttributesAccessControlAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyAttributesAccessControlAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyAttributesAccessControlAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyAttributesAccessControlAction;

                /**
                 * Creates a plain object from a ModifyAttributesAccessControlAction message. Also converts values to other types if specified.
                 * @param message ModifyAttributesAccessControlAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyAttributesAccessControlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyAttributesAccessControlAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyAttributesAccessControlAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyAvatarAccessControlAction. */
            interface IModifyAvatarAccessControlAction {

                /** ModifyAvatarAccessControlAction avatarAccess */
                avatarAccess?: (signalservice.AccessControl.AccessRequired|null);
            }

            /** Represents a ModifyAvatarAccessControlAction. */
            class ModifyAvatarAccessControlAction implements IModifyAvatarAccessControlAction {

                /**
                 * Constructs a new ModifyAvatarAccessControlAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyAvatarAccessControlAction);

                /** ModifyAvatarAccessControlAction avatarAccess. */
                public avatarAccess: signalservice.AccessControl.AccessRequired;

                /**
                 * Creates a new ModifyAvatarAccessControlAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyAvatarAccessControlAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyAvatarAccessControlAction): signalservice.GroupChange.Actions.ModifyAvatarAccessControlAction;

                /**
                 * Encodes the specified ModifyAvatarAccessControlAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAvatarAccessControlAction.verify|verify} messages.
                 * @param message ModifyAvatarAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyAvatarAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyAvatarAccessControlAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAvatarAccessControlAction.verify|verify} messages.
                 * @param message ModifyAvatarAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyAvatarAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyAvatarAccessControlAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyAvatarAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyAvatarAccessControlAction;

                /**
                 * Decodes a ModifyAvatarAccessControlAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyAvatarAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyAvatarAccessControlAction;

                /**
                 * Verifies a ModifyAvatarAccessControlAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyAvatarAccessControlAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyAvatarAccessControlAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyAvatarAccessControlAction;

                /**
                 * Creates a plain object from a ModifyAvatarAccessControlAction message. Also converts values to other types if specified.
                 * @param message ModifyAvatarAccessControlAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyAvatarAccessControlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyAvatarAccessControlAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyAvatarAccessControlAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyMembersAccessControlAction. */
            interface IModifyMembersAccessControlAction {

                /** ModifyMembersAccessControlAction membersAccess */
                membersAccess?: (signalservice.AccessControl.AccessRequired|null);
            }

            /** Represents a ModifyMembersAccessControlAction. */
            class ModifyMembersAccessControlAction implements IModifyMembersAccessControlAction {

                /**
                 * Constructs a new ModifyMembersAccessControlAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyMembersAccessControlAction);

                /** ModifyMembersAccessControlAction membersAccess. */
                public membersAccess: signalservice.AccessControl.AccessRequired;

                /**
                 * Creates a new ModifyMembersAccessControlAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyMembersAccessControlAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyMembersAccessControlAction): signalservice.GroupChange.Actions.ModifyMembersAccessControlAction;

                /**
                 * Encodes the specified ModifyMembersAccessControlAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyMembersAccessControlAction.verify|verify} messages.
                 * @param message ModifyMembersAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyMembersAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyMembersAccessControlAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyMembersAccessControlAction.verify|verify} messages.
                 * @param message ModifyMembersAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyMembersAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyMembersAccessControlAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyMembersAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyMembersAccessControlAction;

                /**
                 * Decodes a ModifyMembersAccessControlAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyMembersAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyMembersAccessControlAction;

                /**
                 * Verifies a ModifyMembersAccessControlAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyMembersAccessControlAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyMembersAccessControlAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyMembersAccessControlAction;

                /**
                 * Creates a plain object from a ModifyMembersAccessControlAction message. Also converts values to other types if specified.
                 * @param message ModifyMembersAccessControlAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyMembersAccessControlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyMembersAccessControlAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyMembersAccessControlAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyAddFromInviteLinkAccessControlAction. */
            interface IModifyAddFromInviteLinkAccessControlAction {

                /** ModifyAddFromInviteLinkAccessControlAction addFromInviteLinkAccess */
                addFromInviteLinkAccess?: (signalservice.AccessControl.AccessRequired|null);
            }

            /** Represents a ModifyAddFromInviteLinkAccessControlAction. */
            class ModifyAddFromInviteLinkAccessControlAction implements IModifyAddFromInviteLinkAccessControlAction {

                /**
                 * Constructs a new ModifyAddFromInviteLinkAccessControlAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyAddFromInviteLinkAccessControlAction);

                /** ModifyAddFromInviteLinkAccessControlAction addFromInviteLinkAccess. */
                public addFromInviteLinkAccess: signalservice.AccessControl.AccessRequired;

                /**
                 * Creates a new ModifyAddFromInviteLinkAccessControlAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyAddFromInviteLinkAccessControlAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyAddFromInviteLinkAccessControlAction): signalservice.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction;

                /**
                 * Encodes the specified ModifyAddFromInviteLinkAccessControlAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction.verify|verify} messages.
                 * @param message ModifyAddFromInviteLinkAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyAddFromInviteLinkAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyAddFromInviteLinkAccessControlAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction.verify|verify} messages.
                 * @param message ModifyAddFromInviteLinkAccessControlAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyAddFromInviteLinkAccessControlAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyAddFromInviteLinkAccessControlAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyAddFromInviteLinkAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction;

                /**
                 * Decodes a ModifyAddFromInviteLinkAccessControlAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyAddFromInviteLinkAccessControlAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction;

                /**
                 * Verifies a ModifyAddFromInviteLinkAccessControlAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyAddFromInviteLinkAccessControlAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyAddFromInviteLinkAccessControlAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction;

                /**
                 * Creates a plain object from a ModifyAddFromInviteLinkAccessControlAction message. Also converts values to other types if specified.
                 * @param message ModifyAddFromInviteLinkAccessControlAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyAddFromInviteLinkAccessControlAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyAddFromInviteLinkAccessControlAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyAddFromInviteLinkAccessControlAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyInviteLinkPasswordAction. */
            interface IModifyInviteLinkPasswordAction {

                /** ModifyInviteLinkPasswordAction inviteLinkPassword */
                inviteLinkPassword?: (Uint8Array|null);
            }

            /** Represents a ModifyInviteLinkPasswordAction. */
            class ModifyInviteLinkPasswordAction implements IModifyInviteLinkPasswordAction {

                /**
                 * Constructs a new ModifyInviteLinkPasswordAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyInviteLinkPasswordAction);

                /** ModifyInviteLinkPasswordAction inviteLinkPassword. */
                public inviteLinkPassword: Uint8Array;

                /**
                 * Creates a new ModifyInviteLinkPasswordAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyInviteLinkPasswordAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyInviteLinkPasswordAction): signalservice.GroupChange.Actions.ModifyInviteLinkPasswordAction;

                /**
                 * Encodes the specified ModifyInviteLinkPasswordAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyInviteLinkPasswordAction.verify|verify} messages.
                 * @param message ModifyInviteLinkPasswordAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyInviteLinkPasswordAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyInviteLinkPasswordAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyInviteLinkPasswordAction.verify|verify} messages.
                 * @param message ModifyInviteLinkPasswordAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyInviteLinkPasswordAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyInviteLinkPasswordAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyInviteLinkPasswordAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyInviteLinkPasswordAction;

                /**
                 * Decodes a ModifyInviteLinkPasswordAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyInviteLinkPasswordAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyInviteLinkPasswordAction;

                /**
                 * Verifies a ModifyInviteLinkPasswordAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyInviteLinkPasswordAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyInviteLinkPasswordAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyInviteLinkPasswordAction;

                /**
                 * Creates a plain object from a ModifyInviteLinkPasswordAction message. Also converts values to other types if specified.
                 * @param message ModifyInviteLinkPasswordAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyInviteLinkPasswordAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyInviteLinkPasswordAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyInviteLinkPasswordAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyDescriptionAction. */
            interface IModifyDescriptionAction {

                /** ModifyDescriptionAction descriptionBytes */
                descriptionBytes?: (Uint8Array|null);
            }

            /** Represents a ModifyDescriptionAction. */
            class ModifyDescriptionAction implements IModifyDescriptionAction {

                /**
                 * Constructs a new ModifyDescriptionAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyDescriptionAction);

                /** ModifyDescriptionAction descriptionBytes. */
                public descriptionBytes: Uint8Array;

                /**
                 * Creates a new ModifyDescriptionAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyDescriptionAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyDescriptionAction): signalservice.GroupChange.Actions.ModifyDescriptionAction;

                /**
                 * Encodes the specified ModifyDescriptionAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyDescriptionAction.verify|verify} messages.
                 * @param message ModifyDescriptionAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyDescriptionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyDescriptionAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyDescriptionAction.verify|verify} messages.
                 * @param message ModifyDescriptionAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyDescriptionAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyDescriptionAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyDescriptionAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyDescriptionAction;

                /**
                 * Decodes a ModifyDescriptionAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyDescriptionAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyDescriptionAction;

                /**
                 * Verifies a ModifyDescriptionAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyDescriptionAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyDescriptionAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyDescriptionAction;

                /**
                 * Creates a plain object from a ModifyDescriptionAction message. Also converts values to other types if specified.
                 * @param message ModifyDescriptionAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyDescriptionAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyDescriptionAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyDescriptionAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ModifyAnnouncementsOnlyAction. */
            interface IModifyAnnouncementsOnlyAction {

                /** ModifyAnnouncementsOnlyAction announcementsOnly */
                announcementsOnly?: (boolean|null);
            }

            /** Represents a ModifyAnnouncementsOnlyAction. */
            class ModifyAnnouncementsOnlyAction implements IModifyAnnouncementsOnlyAction {

                /**
                 * Constructs a new ModifyAnnouncementsOnlyAction.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.GroupChange.Actions.IModifyAnnouncementsOnlyAction);

                /** ModifyAnnouncementsOnlyAction announcementsOnly. */
                public announcementsOnly: boolean;

                /**
                 * Creates a new ModifyAnnouncementsOnlyAction instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ModifyAnnouncementsOnlyAction instance
                 */
                public static create(properties?: signalservice.GroupChange.Actions.IModifyAnnouncementsOnlyAction): signalservice.GroupChange.Actions.ModifyAnnouncementsOnlyAction;

                /**
                 * Encodes the specified ModifyAnnouncementsOnlyAction message. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAnnouncementsOnlyAction.verify|verify} messages.
                 * @param message ModifyAnnouncementsOnlyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.GroupChange.Actions.IModifyAnnouncementsOnlyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ModifyAnnouncementsOnlyAction message, length delimited. Does not implicitly {@link signalservice.GroupChange.Actions.ModifyAnnouncementsOnlyAction.verify|verify} messages.
                 * @param message ModifyAnnouncementsOnlyAction message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.GroupChange.Actions.IModifyAnnouncementsOnlyAction, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ModifyAnnouncementsOnlyAction message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ModifyAnnouncementsOnlyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChange.Actions.ModifyAnnouncementsOnlyAction;

                /**
                 * Decodes a ModifyAnnouncementsOnlyAction message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ModifyAnnouncementsOnlyAction
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChange.Actions.ModifyAnnouncementsOnlyAction;

                /**
                 * Verifies a ModifyAnnouncementsOnlyAction message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ModifyAnnouncementsOnlyAction message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ModifyAnnouncementsOnlyAction
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.GroupChange.Actions.ModifyAnnouncementsOnlyAction;

                /**
                 * Creates a plain object from a ModifyAnnouncementsOnlyAction message. Also converts values to other types if specified.
                 * @param message ModifyAnnouncementsOnlyAction
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.GroupChange.Actions.ModifyAnnouncementsOnlyAction, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ModifyAnnouncementsOnlyAction to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ModifyAnnouncementsOnlyAction
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }
    }

    /** Properties of an ExternalGroupCredential. */
    interface IExternalGroupCredential {

        /** ExternalGroupCredential token */
        token?: (string|null);
    }

    /** Represents an ExternalGroupCredential. */
    class ExternalGroupCredential implements IExternalGroupCredential {

        /**
         * Constructs a new ExternalGroupCredential.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IExternalGroupCredential);

        /** ExternalGroupCredential token. */
        public token: string;

        /**
         * Creates a new ExternalGroupCredential instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ExternalGroupCredential instance
         */
        public static create(properties?: signalservice.IExternalGroupCredential): signalservice.ExternalGroupCredential;

        /**
         * Encodes the specified ExternalGroupCredential message. Does not implicitly {@link signalservice.ExternalGroupCredential.verify|verify} messages.
         * @param message ExternalGroupCredential message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IExternalGroupCredential, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ExternalGroupCredential message, length delimited. Does not implicitly {@link signalservice.ExternalGroupCredential.verify|verify} messages.
         * @param message ExternalGroupCredential message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IExternalGroupCredential, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an ExternalGroupCredential message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ExternalGroupCredential
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ExternalGroupCredential;

        /**
         * Decodes an ExternalGroupCredential message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ExternalGroupCredential
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ExternalGroupCredential;

        /**
         * Verifies an ExternalGroupCredential message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an ExternalGroupCredential message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ExternalGroupCredential
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ExternalGroupCredential;

        /**
         * Creates a plain object from an ExternalGroupCredential message. Also converts values to other types if specified.
         * @param message ExternalGroupCredential
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ExternalGroupCredential, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ExternalGroupCredential to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ExternalGroupCredential
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GroupResponse. */
    interface IGroupResponse {

        /** GroupResponse group */
        group?: (signalservice.IGroup|null);

        /** GroupResponse groupSendEndorsementResponse */
        groupSendEndorsementResponse?: (Uint8Array|null);
    }

    /** Represents a GroupResponse. */
    class GroupResponse implements IGroupResponse {

        /**
         * Constructs a new GroupResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupResponse);

        /** GroupResponse group. */
        public group?: (signalservice.IGroup|null);

        /** GroupResponse groupSendEndorsementResponse. */
        public groupSendEndorsementResponse: Uint8Array;

        /**
         * Creates a new GroupResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupResponse instance
         */
        public static create(properties?: signalservice.IGroupResponse): signalservice.GroupResponse;

        /**
         * Encodes the specified GroupResponse message. Does not implicitly {@link signalservice.GroupResponse.verify|verify} messages.
         * @param message GroupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupResponse message, length delimited. Does not implicitly {@link signalservice.GroupResponse.verify|verify} messages.
         * @param message GroupResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupResponse, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupResponse;

        /**
         * Decodes a GroupResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupResponse;

        /**
         * Verifies a GroupResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupResponse
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupResponse;

        /**
         * Creates a plain object from a GroupResponse message. Also converts values to other types if specified.
         * @param message GroupResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GroupChanges. */
    interface IGroupChanges {

        /** GroupChanges groupChanges */
        groupChanges?: (signalservice.GroupChanges.IGroupChangeState[]|null);

        /** GroupChanges groupSendEndorsementResponse */
        groupSendEndorsementResponse?: (Uint8Array|null);
    }

    /** Represents a GroupChanges. */
    class GroupChanges implements IGroupChanges {

        /**
         * Constructs a new GroupChanges.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupChanges);

        /** GroupChanges groupChanges. */
        public groupChanges: signalservice.GroupChanges.IGroupChangeState[];

        /** GroupChanges groupSendEndorsementResponse. */
        public groupSendEndorsementResponse: Uint8Array;

        /**
         * Creates a new GroupChanges instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupChanges instance
         */
        public static create(properties?: signalservice.IGroupChanges): signalservice.GroupChanges;

        /**
         * Encodes the specified GroupChanges message. Does not implicitly {@link signalservice.GroupChanges.verify|verify} messages.
         * @param message GroupChanges message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupChanges, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupChanges message, length delimited. Does not implicitly {@link signalservice.GroupChanges.verify|verify} messages.
         * @param message GroupChanges message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupChanges, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupChanges message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupChanges
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChanges;

        /**
         * Decodes a GroupChanges message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupChanges
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChanges;

        /**
         * Verifies a GroupChanges message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupChanges message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupChanges
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupChanges;

        /**
         * Creates a plain object from a GroupChanges message. Also converts values to other types if specified.
         * @param message GroupChanges
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupChanges, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupChanges to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupChanges
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace GroupChanges {

        /** Properties of a GroupChangeState. */
        interface IGroupChangeState {

            /** GroupChangeState groupChange */
            groupChange?: (signalservice.IGroupChange|null);

            /** GroupChangeState groupState */
            groupState?: (signalservice.IGroup|null);
        }

        /** Represents a GroupChangeState. */
        class GroupChangeState implements IGroupChangeState {

            /**
             * Constructs a new GroupChangeState.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.GroupChanges.IGroupChangeState);

            /** GroupChangeState groupChange. */
            public groupChange?: (signalservice.IGroupChange|null);

            /** GroupChangeState groupState. */
            public groupState?: (signalservice.IGroup|null);

            /**
             * Creates a new GroupChangeState instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GroupChangeState instance
             */
            public static create(properties?: signalservice.GroupChanges.IGroupChangeState): signalservice.GroupChanges.GroupChangeState;

            /**
             * Encodes the specified GroupChangeState message. Does not implicitly {@link signalservice.GroupChanges.GroupChangeState.verify|verify} messages.
             * @param message GroupChangeState message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.GroupChanges.IGroupChangeState, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GroupChangeState message, length delimited. Does not implicitly {@link signalservice.GroupChanges.GroupChangeState.verify|verify} messages.
             * @param message GroupChangeState message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.GroupChanges.IGroupChangeState, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GroupChangeState message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GroupChangeState
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChanges.GroupChangeState;

            /**
             * Decodes a GroupChangeState message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GroupChangeState
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChanges.GroupChangeState;

            /**
             * Verifies a GroupChangeState message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GroupChangeState message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GroupChangeState
             */
            public static fromObject(object: { [k: string]: any }): signalservice.GroupChanges.GroupChangeState;

            /**
             * Creates a plain object from a GroupChangeState message. Also converts values to other types if specified.
             * @param message GroupChangeState
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.GroupChanges.GroupChangeState, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GroupChangeState to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GroupChangeState
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a GroupChangeResponse. */
    interface IGroupChangeResponse {

        /** GroupChangeResponse groupChange */
        groupChange?: (signalservice.IGroupChange|null);

        /** GroupChangeResponse groupSendEndorsementResponse */
        groupSendEndorsementResponse?: (Uint8Array|null);
    }

    /** Represents a GroupChangeResponse. */
    class GroupChangeResponse implements IGroupChangeResponse {

        /**
         * Constructs a new GroupChangeResponse.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupChangeResponse);

        /** GroupChangeResponse groupChange. */
        public groupChange?: (signalservice.IGroupChange|null);

        /** GroupChangeResponse groupSendEndorsementResponse. */
        public groupSendEndorsementResponse: Uint8Array;

        /**
         * Creates a new GroupChangeResponse instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupChangeResponse instance
         */
        public static create(properties?: signalservice.IGroupChangeResponse): signalservice.GroupChangeResponse;

        /**
         * Encodes the specified GroupChangeResponse message. Does not implicitly {@link signalservice.GroupChangeResponse.verify|verify} messages.
         * @param message GroupChangeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupChangeResponse, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupChangeResponse message, length delimited. Does not implicitly {@link signalservice.GroupChangeResponse.verify|verify} messages.
         * @param message GroupChangeResponse message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupChangeResponse, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupChangeResponse message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupChangeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupChangeResponse;

        /**
         * Decodes a GroupChangeResponse message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupChangeResponse
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupChangeResponse;

        /**
         * Verifies a GroupChangeResponse message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupChangeResponse message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupChangeResponse
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupChangeResponse;

        /**
         * Creates a plain object from a GroupChangeResponse message. Also converts values to other types if specified.
         * @param message GroupChangeResponse
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupChangeResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupChangeResponse to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupChangeResponse
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GroupAttributeBlob. */
    interface IGroupAttributeBlob {

        /** GroupAttributeBlob title */
        title?: (string|null);

        /** GroupAttributeBlob avatar */
        avatar?: (Uint8Array|null);

        /** GroupAttributeBlob disappearingMessagesDuration */
        disappearingMessagesDuration?: (number|null);

        /** GroupAttributeBlob descriptionText */
        descriptionText?: (string|null);
    }

    /** Represents a GroupAttributeBlob. */
    class GroupAttributeBlob implements IGroupAttributeBlob {

        /**
         * Constructs a new GroupAttributeBlob.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupAttributeBlob);

        /** GroupAttributeBlob title. */
        public title?: (string|null);

        /** GroupAttributeBlob avatar. */
        public avatar?: (Uint8Array|null);

        /** GroupAttributeBlob disappearingMessagesDuration. */
        public disappearingMessagesDuration?: (number|null);

        /** GroupAttributeBlob descriptionText. */
        public descriptionText?: (string|null);

        /** GroupAttributeBlob content. */
        public content?: ("title"|"avatar"|"disappearingMessagesDuration"|"descriptionText");

        /**
         * Creates a new GroupAttributeBlob instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupAttributeBlob instance
         */
        public static create(properties?: signalservice.IGroupAttributeBlob): signalservice.GroupAttributeBlob;

        /**
         * Encodes the specified GroupAttributeBlob message. Does not implicitly {@link signalservice.GroupAttributeBlob.verify|verify} messages.
         * @param message GroupAttributeBlob message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupAttributeBlob, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupAttributeBlob message, length delimited. Does not implicitly {@link signalservice.GroupAttributeBlob.verify|verify} messages.
         * @param message GroupAttributeBlob message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupAttributeBlob, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupAttributeBlob message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupAttributeBlob
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupAttributeBlob;

        /**
         * Decodes a GroupAttributeBlob message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupAttributeBlob
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupAttributeBlob;

        /**
         * Verifies a GroupAttributeBlob message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupAttributeBlob message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupAttributeBlob
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupAttributeBlob;

        /**
         * Creates a plain object from a GroupAttributeBlob message. Also converts values to other types if specified.
         * @param message GroupAttributeBlob
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupAttributeBlob, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupAttributeBlob to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupAttributeBlob
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GroupInviteLink. */
    interface IGroupInviteLink {

        /** GroupInviteLink v1Contents */
        v1Contents?: (signalservice.GroupInviteLink.IGroupInviteLinkContentsV1|null);
    }

    /** Represents a GroupInviteLink. */
    class GroupInviteLink implements IGroupInviteLink {

        /**
         * Constructs a new GroupInviteLink.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupInviteLink);

        /** GroupInviteLink v1Contents. */
        public v1Contents?: (signalservice.GroupInviteLink.IGroupInviteLinkContentsV1|null);

        /** GroupInviteLink contents. */
        public contents?: "v1Contents";

        /**
         * Creates a new GroupInviteLink instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupInviteLink instance
         */
        public static create(properties?: signalservice.IGroupInviteLink): signalservice.GroupInviteLink;

        /**
         * Encodes the specified GroupInviteLink message. Does not implicitly {@link signalservice.GroupInviteLink.verify|verify} messages.
         * @param message GroupInviteLink message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupInviteLink, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupInviteLink message, length delimited. Does not implicitly {@link signalservice.GroupInviteLink.verify|verify} messages.
         * @param message GroupInviteLink message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupInviteLink, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupInviteLink message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupInviteLink
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupInviteLink;

        /**
         * Decodes a GroupInviteLink message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupInviteLink
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupInviteLink;

        /**
         * Verifies a GroupInviteLink message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupInviteLink message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupInviteLink
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupInviteLink;

        /**
         * Creates a plain object from a GroupInviteLink message. Also converts values to other types if specified.
         * @param message GroupInviteLink
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupInviteLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupInviteLink to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupInviteLink
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace GroupInviteLink {

        /** Properties of a GroupInviteLinkContentsV1. */
        interface IGroupInviteLinkContentsV1 {

            /** GroupInviteLinkContentsV1 groupMasterKey */
            groupMasterKey?: (Uint8Array|null);

            /** GroupInviteLinkContentsV1 inviteLinkPassword */
            inviteLinkPassword?: (Uint8Array|null);
        }

        /** Represents a GroupInviteLinkContentsV1. */
        class GroupInviteLinkContentsV1 implements IGroupInviteLinkContentsV1 {

            /**
             * Constructs a new GroupInviteLinkContentsV1.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.GroupInviteLink.IGroupInviteLinkContentsV1);

            /** GroupInviteLinkContentsV1 groupMasterKey. */
            public groupMasterKey: Uint8Array;

            /** GroupInviteLinkContentsV1 inviteLinkPassword. */
            public inviteLinkPassword: Uint8Array;

            /**
             * Creates a new GroupInviteLinkContentsV1 instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GroupInviteLinkContentsV1 instance
             */
            public static create(properties?: signalservice.GroupInviteLink.IGroupInviteLinkContentsV1): signalservice.GroupInviteLink.GroupInviteLinkContentsV1;

            /**
             * Encodes the specified GroupInviteLinkContentsV1 message. Does not implicitly {@link signalservice.GroupInviteLink.GroupInviteLinkContentsV1.verify|verify} messages.
             * @param message GroupInviteLinkContentsV1 message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.GroupInviteLink.IGroupInviteLinkContentsV1, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GroupInviteLinkContentsV1 message, length delimited. Does not implicitly {@link signalservice.GroupInviteLink.GroupInviteLinkContentsV1.verify|verify} messages.
             * @param message GroupInviteLinkContentsV1 message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.GroupInviteLink.IGroupInviteLinkContentsV1, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GroupInviteLinkContentsV1 message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GroupInviteLinkContentsV1
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupInviteLink.GroupInviteLinkContentsV1;

            /**
             * Decodes a GroupInviteLinkContentsV1 message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GroupInviteLinkContentsV1
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupInviteLink.GroupInviteLinkContentsV1;

            /**
             * Verifies a GroupInviteLinkContentsV1 message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GroupInviteLinkContentsV1 message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GroupInviteLinkContentsV1
             */
            public static fromObject(object: { [k: string]: any }): signalservice.GroupInviteLink.GroupInviteLinkContentsV1;

            /**
             * Creates a plain object from a GroupInviteLinkContentsV1 message. Also converts values to other types if specified.
             * @param message GroupInviteLinkContentsV1
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.GroupInviteLink.GroupInviteLinkContentsV1, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GroupInviteLinkContentsV1 to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GroupInviteLinkContentsV1
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a GroupJoinInfo. */
    interface IGroupJoinInfo {

        /** GroupJoinInfo publicKey */
        publicKey?: (Uint8Array|null);

        /** GroupJoinInfo title */
        title?: (Uint8Array|null);

        /** GroupJoinInfo avatar */
        avatar?: (string|null);

        /** GroupJoinInfo memberCount */
        memberCount?: (number|null);

        /** GroupJoinInfo addFromInviteLink */
        addFromInviteLink?: (signalservice.AccessControl.AccessRequired|null);

        /** GroupJoinInfo version */
        version?: (number|null);

        /** GroupJoinInfo pendingAdminApproval */
        pendingAdminApproval?: (boolean|null);

        /** GroupJoinInfo descriptionBytes */
        descriptionBytes?: (Uint8Array|null);
    }

    /** Represents a GroupJoinInfo. */
    class GroupJoinInfo implements IGroupJoinInfo {

        /**
         * Constructs a new GroupJoinInfo.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupJoinInfo);

        /** GroupJoinInfo publicKey. */
        public publicKey: Uint8Array;

        /** GroupJoinInfo title. */
        public title: Uint8Array;

        /** GroupJoinInfo avatar. */
        public avatar: string;

        /** GroupJoinInfo memberCount. */
        public memberCount: number;

        /** GroupJoinInfo addFromInviteLink. */
        public addFromInviteLink: signalservice.AccessControl.AccessRequired;

        /** GroupJoinInfo version. */
        public version: number;

        /** GroupJoinInfo pendingAdminApproval. */
        public pendingAdminApproval: boolean;

        /** GroupJoinInfo descriptionBytes. */
        public descriptionBytes: Uint8Array;

        /**
         * Creates a new GroupJoinInfo instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupJoinInfo instance
         */
        public static create(properties?: signalservice.IGroupJoinInfo): signalservice.GroupJoinInfo;

        /**
         * Encodes the specified GroupJoinInfo message. Does not implicitly {@link signalservice.GroupJoinInfo.verify|verify} messages.
         * @param message GroupJoinInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupJoinInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupJoinInfo message, length delimited. Does not implicitly {@link signalservice.GroupJoinInfo.verify|verify} messages.
         * @param message GroupJoinInfo message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupJoinInfo, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupJoinInfo message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupJoinInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupJoinInfo;

        /**
         * Decodes a GroupJoinInfo message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupJoinInfo
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupJoinInfo;

        /**
         * Verifies a GroupJoinInfo message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupJoinInfo message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupJoinInfo
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupJoinInfo;

        /**
         * Creates a plain object from a GroupJoinInfo message. Also converts values to other types if specified.
         * @param message GroupJoinInfo
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupJoinInfo, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupJoinInfo to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupJoinInfo
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an Envelope. */
    interface IEnvelope {

        /** Envelope type */
        type?: (signalservice.Envelope.Type|null);

        /** Envelope sourceServiceId */
        sourceServiceId?: (string|null);

        /** Envelope sourceDevice */
        sourceDevice?: (number|null);

        /** Envelope destinationServiceId */
        destinationServiceId?: (string|null);

        /** Envelope timestamp */
        timestamp?: (Long|null);

        /** Envelope content */
        content?: (Uint8Array|null);

        /** Envelope serverGuid */
        serverGuid?: (string|null);

        /** Envelope serverTimestamp */
        serverTimestamp?: (Long|null);

        /** Envelope ephemeral */
        ephemeral?: (boolean|null);

        /** Envelope urgent */
        urgent?: (boolean|null);

        /** Envelope updatedPni */
        updatedPni?: (string|null);

        /** Envelope story */
        story?: (boolean|null);

        /** Envelope reportSpamToken */
        reportSpamToken?: (Uint8Array|null);
    }

    /** Represents an Envelope. */
    class Envelope implements IEnvelope {

        /**
         * Constructs a new Envelope.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IEnvelope);

        /** Envelope type. */
        public type: signalservice.Envelope.Type;

        /** Envelope sourceServiceId. */
        public sourceServiceId: string;

        /** Envelope sourceDevice. */
        public sourceDevice: number;

        /** Envelope destinationServiceId. */
        public destinationServiceId: string;

        /** Envelope timestamp. */
        public timestamp: Long;

        /** Envelope content. */
        public content: Uint8Array;

        /** Envelope serverGuid. */
        public serverGuid: string;

        /** Envelope serverTimestamp. */
        public serverTimestamp: Long;

        /** Envelope ephemeral. */
        public ephemeral: boolean;

        /** Envelope urgent. */
        public urgent: boolean;

        /** Envelope updatedPni. */
        public updatedPni: string;

        /** Envelope story. */
        public story: boolean;

        /** Envelope reportSpamToken. */
        public reportSpamToken: Uint8Array;

        /**
         * Creates a new Envelope instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Envelope instance
         */
        public static create(properties?: signalservice.IEnvelope): signalservice.Envelope;

        /**
         * Encodes the specified Envelope message. Does not implicitly {@link signalservice.Envelope.verify|verify} messages.
         * @param message Envelope message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IEnvelope, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified Envelope message, length delimited. Does not implicitly {@link signalservice.Envelope.verify|verify} messages.
         * @param message Envelope message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IEnvelope, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an Envelope message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Envelope
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Envelope;

        /**
         * Decodes an Envelope message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Envelope
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Envelope;

        /**
         * Verifies an Envelope message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an Envelope message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Envelope
         */
        public static fromObject(object: { [k: string]: any }): signalservice.Envelope;

        /**
         * Creates a plain object from an Envelope message. Also converts values to other types if specified.
         * @param message Envelope
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.Envelope, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this Envelope to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Envelope
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Envelope {

        /** Type enum. */
        enum Type {
            UNKNOWN = 0,
            CIPHERTEXT = 1,
            PREKEY_BUNDLE = 3,
            SERVER_DELIVERY_RECEIPT = 5,
            UNIDENTIFIED_SENDER = 6,
            SENDERKEY_MESSAGE = 7,
            PLAINTEXT_CONTENT = 8
        }
    }

    /** Properties of a Content. */
    interface IContent {

        /** Content dataMessage */
        dataMessage?: (signalservice.IDataMessage|null);

        /** Content syncMessage */
        syncMessage?: (signalservice.ISyncMessage|null);

        /** Content callMessage */
        callMessage?: (signalservice.ICallMessage|null);

        /** Content nullMessage */
        nullMessage?: (signalservice.INullMessage|null);

        /** Content receiptMessage */
        receiptMessage?: (signalservice.IReceiptMessage|null);

        /** Content typingMessage */
        typingMessage?: (signalservice.ITypingMessage|null);

        /** Content senderKeyDistributionMessage */
        senderKeyDistributionMessage?: (Uint8Array|null);

        /** Content decryptionErrorMessage */
        decryptionErrorMessage?: (Uint8Array|null);

        /** Content storyMessage */
        storyMessage?: (signalservice.IStoryMessage|null);

        /** Content pniSignatureMessage */
        pniSignatureMessage?: (signalservice.IPniSignatureMessage|null);

        /** Content editMessage */
        editMessage?: (signalservice.IEditMessage|null);
    }

    /** Represents a Content. */
    class Content implements IContent {

        /**
         * Constructs a new Content.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IContent);

        /** Content dataMessage. */
        public dataMessage?: (signalservice.IDataMessage|null);

        /** Content syncMessage. */
        public syncMessage?: (signalservice.ISyncMessage|null);

        /** Content callMessage. */
        public callMessage?: (signalservice.ICallMessage|null);

        /** Content nullMessage. */
        public nullMessage?: (signalservice.INullMessage|null);

        /** Content receiptMessage. */
        public receiptMessage?: (signalservice.IReceiptMessage|null);

        /** Content typingMessage. */
        public typingMessage?: (signalservice.ITypingMessage|null);

        /** Content senderKeyDistributionMessage. */
        public senderKeyDistributionMessage: Uint8Array;

        /** Content decryptionErrorMessage. */
        public decryptionErrorMessage: Uint8Array;

        /** Content storyMessage. */
        public storyMessage?: (signalservice.IStoryMessage|null);

        /** Content pniSignatureMessage. */
        public pniSignatureMessage?: (signalservice.IPniSignatureMessage|null);

        /** Content editMessage. */
        public editMessage?: (signalservice.IEditMessage|null);

        /**
         * Creates a new Content instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Content instance
         */
        public static create(properties?: signalservice.IContent): signalservice.Content;

        /**
         * Encodes the specified Content message. Does not implicitly {@link signalservice.Content.verify|verify} messages.
         * @param message Content message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IContent, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified Content message, length delimited. Does not implicitly {@link signalservice.Content.verify|verify} messages.
         * @param message Content message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IContent, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a Content message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Content
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Content;

        /**
         * Decodes a Content message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Content
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Content;

        /**
         * Verifies a Content message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a Content message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Content
         */
        public static fromObject(object: { [k: string]: any }): signalservice.Content;

        /**
         * Creates a plain object from a Content message. Also converts values to other types if specified.
         * @param message Content
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.Content, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this Content to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Content
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CallMessage. */
    interface ICallMessage {

        /** CallMessage offer */
        offer?: (signalservice.CallMessage.IOffer|null);

        /** CallMessage answer */
        answer?: (signalservice.CallMessage.IAnswer|null);

        /** CallMessage iceUpdate */
        iceUpdate?: (signalservice.CallMessage.IIceUpdate[]|null);

        /** CallMessage busy */
        busy?: (signalservice.CallMessage.IBusy|null);

        /** CallMessage hangup */
        hangup?: (signalservice.CallMessage.IHangup|null);

        /** CallMessage destinationDeviceId */
        destinationDeviceId?: (number|null);

        /** CallMessage opaque */
        opaque?: (signalservice.CallMessage.IOpaque|null);
    }

    /** Represents a CallMessage. */
    class CallMessage implements ICallMessage {

        /**
         * Constructs a new CallMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ICallMessage);

        /** CallMessage offer. */
        public offer?: (signalservice.CallMessage.IOffer|null);

        /** CallMessage answer. */
        public answer?: (signalservice.CallMessage.IAnswer|null);

        /** CallMessage iceUpdate. */
        public iceUpdate: signalservice.CallMessage.IIceUpdate[];

        /** CallMessage busy. */
        public busy?: (signalservice.CallMessage.IBusy|null);

        /** CallMessage hangup. */
        public hangup?: (signalservice.CallMessage.IHangup|null);

        /** CallMessage destinationDeviceId. */
        public destinationDeviceId: number;

        /** CallMessage opaque. */
        public opaque?: (signalservice.CallMessage.IOpaque|null);

        /**
         * Creates a new CallMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CallMessage instance
         */
        public static create(properties?: signalservice.ICallMessage): signalservice.CallMessage;

        /**
         * Encodes the specified CallMessage message. Does not implicitly {@link signalservice.CallMessage.verify|verify} messages.
         * @param message CallMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ICallMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified CallMessage message, length delimited. Does not implicitly {@link signalservice.CallMessage.verify|verify} messages.
         * @param message CallMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ICallMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a CallMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CallMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallMessage;

        /**
         * Decodes a CallMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CallMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallMessage;

        /**
         * Verifies a CallMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a CallMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CallMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.CallMessage;

        /**
         * Creates a plain object from a CallMessage message. Also converts values to other types if specified.
         * @param message CallMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.CallMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this CallMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CallMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace CallMessage {

        /** Properties of an Offer. */
        interface IOffer {

            /** Offer id */
            id?: (Long|null);

            /** Offer type */
            type?: (signalservice.CallMessage.Offer.Type|null);

            /** Offer opaque */
            opaque?: (Uint8Array|null);
        }

        /** Represents an Offer. */
        class Offer implements IOffer {

            /**
             * Constructs a new Offer.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.CallMessage.IOffer);

            /** Offer id. */
            public id: Long;

            /** Offer type. */
            public type: signalservice.CallMessage.Offer.Type;

            /** Offer opaque. */
            public opaque: Uint8Array;

            /**
             * Creates a new Offer instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Offer instance
             */
            public static create(properties?: signalservice.CallMessage.IOffer): signalservice.CallMessage.Offer;

            /**
             * Encodes the specified Offer message. Does not implicitly {@link signalservice.CallMessage.Offer.verify|verify} messages.
             * @param message Offer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.CallMessage.IOffer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Offer message, length delimited. Does not implicitly {@link signalservice.CallMessage.Offer.verify|verify} messages.
             * @param message Offer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.CallMessage.IOffer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Offer message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Offer
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallMessage.Offer;

            /**
             * Decodes an Offer message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Offer
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallMessage.Offer;

            /**
             * Verifies an Offer message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Offer message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Offer
             */
            public static fromObject(object: { [k: string]: any }): signalservice.CallMessage.Offer;

            /**
             * Creates a plain object from an Offer message. Also converts values to other types if specified.
             * @param message Offer
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.CallMessage.Offer, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Offer to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Offer
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Offer {

            /** Type enum. */
            enum Type {
                OFFER_AUDIO_CALL = 0,
                OFFER_VIDEO_CALL = 1
            }
        }

        /** Properties of an Answer. */
        interface IAnswer {

            /** Answer id */
            id?: (Long|null);

            /** Answer opaque */
            opaque?: (Uint8Array|null);
        }

        /** Represents an Answer. */
        class Answer implements IAnswer {

            /**
             * Constructs a new Answer.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.CallMessage.IAnswer);

            /** Answer id. */
            public id: Long;

            /** Answer opaque. */
            public opaque: Uint8Array;

            /**
             * Creates a new Answer instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Answer instance
             */
            public static create(properties?: signalservice.CallMessage.IAnswer): signalservice.CallMessage.Answer;

            /**
             * Encodes the specified Answer message. Does not implicitly {@link signalservice.CallMessage.Answer.verify|verify} messages.
             * @param message Answer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.CallMessage.IAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Answer message, length delimited. Does not implicitly {@link signalservice.CallMessage.Answer.verify|verify} messages.
             * @param message Answer message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.CallMessage.IAnswer, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Answer message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Answer
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallMessage.Answer;

            /**
             * Decodes an Answer message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Answer
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallMessage.Answer;

            /**
             * Verifies an Answer message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Answer message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Answer
             */
            public static fromObject(object: { [k: string]: any }): signalservice.CallMessage.Answer;

            /**
             * Creates a plain object from an Answer message. Also converts values to other types if specified.
             * @param message Answer
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.CallMessage.Answer, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Answer to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Answer
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an IceUpdate. */
        interface IIceUpdate {

            /** IceUpdate id */
            id?: (Long|null);

            /** IceUpdate opaque */
            opaque?: (Uint8Array|null);
        }

        /** Represents an IceUpdate. */
        class IceUpdate implements IIceUpdate {

            /**
             * Constructs a new IceUpdate.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.CallMessage.IIceUpdate);

            /** IceUpdate id. */
            public id: Long;

            /** IceUpdate opaque. */
            public opaque: Uint8Array;

            /**
             * Creates a new IceUpdate instance using the specified properties.
             * @param [properties] Properties to set
             * @returns IceUpdate instance
             */
            public static create(properties?: signalservice.CallMessage.IIceUpdate): signalservice.CallMessage.IceUpdate;

            /**
             * Encodes the specified IceUpdate message. Does not implicitly {@link signalservice.CallMessage.IceUpdate.verify|verify} messages.
             * @param message IceUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.CallMessage.IIceUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified IceUpdate message, length delimited. Does not implicitly {@link signalservice.CallMessage.IceUpdate.verify|verify} messages.
             * @param message IceUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.CallMessage.IIceUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an IceUpdate message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns IceUpdate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallMessage.IceUpdate;

            /**
             * Decodes an IceUpdate message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns IceUpdate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallMessage.IceUpdate;

            /**
             * Verifies an IceUpdate message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an IceUpdate message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns IceUpdate
             */
            public static fromObject(object: { [k: string]: any }): signalservice.CallMessage.IceUpdate;

            /**
             * Creates a plain object from an IceUpdate message. Also converts values to other types if specified.
             * @param message IceUpdate
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.CallMessage.IceUpdate, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this IceUpdate to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for IceUpdate
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Busy. */
        interface IBusy {

            /** Busy id */
            id?: (Long|null);
        }

        /** Represents a Busy. */
        class Busy implements IBusy {

            /**
             * Constructs a new Busy.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.CallMessage.IBusy);

            /** Busy id. */
            public id: Long;

            /**
             * Creates a new Busy instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Busy instance
             */
            public static create(properties?: signalservice.CallMessage.IBusy): signalservice.CallMessage.Busy;

            /**
             * Encodes the specified Busy message. Does not implicitly {@link signalservice.CallMessage.Busy.verify|verify} messages.
             * @param message Busy message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.CallMessage.IBusy, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Busy message, length delimited. Does not implicitly {@link signalservice.CallMessage.Busy.verify|verify} messages.
             * @param message Busy message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.CallMessage.IBusy, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Busy message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Busy
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallMessage.Busy;

            /**
             * Decodes a Busy message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Busy
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallMessage.Busy;

            /**
             * Verifies a Busy message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Busy message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Busy
             */
            public static fromObject(object: { [k: string]: any }): signalservice.CallMessage.Busy;

            /**
             * Creates a plain object from a Busy message. Also converts values to other types if specified.
             * @param message Busy
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.CallMessage.Busy, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Busy to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Busy
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Hangup. */
        interface IHangup {

            /** Hangup id */
            id?: (Long|null);

            /** Hangup type */
            type?: (signalservice.CallMessage.Hangup.Type|null);

            /** Hangup deviceId */
            deviceId?: (number|null);
        }

        /** Represents a Hangup. */
        class Hangup implements IHangup {

            /**
             * Constructs a new Hangup.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.CallMessage.IHangup);

            /** Hangup id. */
            public id: Long;

            /** Hangup type. */
            public type: signalservice.CallMessage.Hangup.Type;

            /** Hangup deviceId. */
            public deviceId: number;

            /**
             * Creates a new Hangup instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Hangup instance
             */
            public static create(properties?: signalservice.CallMessage.IHangup): signalservice.CallMessage.Hangup;

            /**
             * Encodes the specified Hangup message. Does not implicitly {@link signalservice.CallMessage.Hangup.verify|verify} messages.
             * @param message Hangup message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.CallMessage.IHangup, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Hangup message, length delimited. Does not implicitly {@link signalservice.CallMessage.Hangup.verify|verify} messages.
             * @param message Hangup message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.CallMessage.IHangup, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Hangup message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Hangup
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallMessage.Hangup;

            /**
             * Decodes a Hangup message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Hangup
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallMessage.Hangup;

            /**
             * Verifies a Hangup message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Hangup message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Hangup
             */
            public static fromObject(object: { [k: string]: any }): signalservice.CallMessage.Hangup;

            /**
             * Creates a plain object from a Hangup message. Also converts values to other types if specified.
             * @param message Hangup
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.CallMessage.Hangup, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Hangup to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Hangup
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Hangup {

            /** Type enum. */
            enum Type {
                HANGUP_NORMAL = 0,
                HANGUP_ACCEPTED = 1,
                HANGUP_DECLINED = 2,
                HANGUP_BUSY = 3,
                HANGUP_NEED_PERMISSION = 4
            }
        }

        /** Properties of an Opaque. */
        interface IOpaque {

            /** Opaque data */
            data?: (Uint8Array|null);

            /** Opaque urgency */
            urgency?: (signalservice.CallMessage.Opaque.Urgency|null);
        }

        /** Represents an Opaque. */
        class Opaque implements IOpaque {

            /**
             * Constructs a new Opaque.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.CallMessage.IOpaque);

            /** Opaque data. */
            public data: Uint8Array;

            /** Opaque urgency. */
            public urgency: signalservice.CallMessage.Opaque.Urgency;

            /**
             * Creates a new Opaque instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Opaque instance
             */
            public static create(properties?: signalservice.CallMessage.IOpaque): signalservice.CallMessage.Opaque;

            /**
             * Encodes the specified Opaque message. Does not implicitly {@link signalservice.CallMessage.Opaque.verify|verify} messages.
             * @param message Opaque message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.CallMessage.IOpaque, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Opaque message, length delimited. Does not implicitly {@link signalservice.CallMessage.Opaque.verify|verify} messages.
             * @param message Opaque message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.CallMessage.IOpaque, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Opaque message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Opaque
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallMessage.Opaque;

            /**
             * Decodes an Opaque message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Opaque
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallMessage.Opaque;

            /**
             * Verifies an Opaque message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Opaque message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Opaque
             */
            public static fromObject(object: { [k: string]: any }): signalservice.CallMessage.Opaque;

            /**
             * Creates a plain object from an Opaque message. Also converts values to other types if specified.
             * @param message Opaque
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.CallMessage.Opaque, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Opaque to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Opaque
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Opaque {

            /** Urgency enum. */
            enum Urgency {
                DROPPABLE = 0,
                HANDLE_IMMEDIATELY = 1
            }
        }
    }

    /** Properties of a DataMessage. */
    interface IDataMessage {

        /** DataMessage body */
        body?: (string|null);

        /** DataMessage attachments */
        attachments?: (signalservice.IAttachmentPointer[]|null);

        /** DataMessage groupV2 */
        groupV2?: (signalservice.IGroupContextV2|null);

        /** DataMessage flags */
        flags?: (number|null);

        /** DataMessage expireTimer */
        expireTimer?: (number|null);

        /** DataMessage expireTimerVersion */
        expireTimerVersion?: (number|null);

        /** DataMessage profileKey */
        profileKey?: (Uint8Array|null);

        /** DataMessage timestamp */
        timestamp?: (Long|null);

        /** DataMessage quote */
        quote?: (signalservice.DataMessage.IQuote|null);

        /** DataMessage contact */
        contact?: (signalservice.DataMessage.IContact[]|null);

        /** DataMessage preview */
        preview?: (signalservice.IPreview[]|null);

        /** DataMessage sticker */
        sticker?: (signalservice.DataMessage.ISticker|null);

        /** DataMessage requiredProtocolVersion */
        requiredProtocolVersion?: (number|null);

        /** DataMessage isViewOnce */
        isViewOnce?: (boolean|null);

        /** DataMessage reaction */
        reaction?: (signalservice.DataMessage.IReaction|null);

        /** DataMessage delete */
        "delete"?: (signalservice.DataMessage.IDelete|null);

        /** DataMessage bodyRanges */
        bodyRanges?: (signalservice.IBodyRange[]|null);

        /** DataMessage groupCallUpdate */
        groupCallUpdate?: (signalservice.DataMessage.IGroupCallUpdate|null);

        /** DataMessage payment */
        payment?: (signalservice.DataMessage.IPayment|null);

        /** DataMessage storyContext */
        storyContext?: (signalservice.DataMessage.IStoryContext|null);

        /** DataMessage giftBadge */
        giftBadge?: (signalservice.DataMessage.IGiftBadge|null);
    }

    /** Represents a DataMessage. */
    class DataMessage implements IDataMessage {

        /**
         * Constructs a new DataMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IDataMessage);

        /** DataMessage body. */
        public body: string;

        /** DataMessage attachments. */
        public attachments: signalservice.IAttachmentPointer[];

        /** DataMessage groupV2. */
        public groupV2?: (signalservice.IGroupContextV2|null);

        /** DataMessage flags. */
        public flags: number;

        /** DataMessage expireTimer. */
        public expireTimer: number;

        /** DataMessage expireTimerVersion. */
        public expireTimerVersion: number;

        /** DataMessage profileKey. */
        public profileKey: Uint8Array;

        /** DataMessage timestamp. */
        public timestamp: Long;

        /** DataMessage quote. */
        public quote?: (signalservice.DataMessage.IQuote|null);

        /** DataMessage contact. */
        public contact: signalservice.DataMessage.IContact[];

        /** DataMessage preview. */
        public preview: signalservice.IPreview[];

        /** DataMessage sticker. */
        public sticker?: (signalservice.DataMessage.ISticker|null);

        /** DataMessage requiredProtocolVersion. */
        public requiredProtocolVersion: number;

        /** DataMessage isViewOnce. */
        public isViewOnce: boolean;

        /** DataMessage reaction. */
        public reaction?: (signalservice.DataMessage.IReaction|null);

        /** DataMessage delete. */
        public delete?: (signalservice.DataMessage.IDelete|null);

        /** DataMessage bodyRanges. */
        public bodyRanges: signalservice.IBodyRange[];

        /** DataMessage groupCallUpdate. */
        public groupCallUpdate?: (signalservice.DataMessage.IGroupCallUpdate|null);

        /** DataMessage payment. */
        public payment?: (signalservice.DataMessage.IPayment|null);

        /** DataMessage storyContext. */
        public storyContext?: (signalservice.DataMessage.IStoryContext|null);

        /** DataMessage giftBadge. */
        public giftBadge?: (signalservice.DataMessage.IGiftBadge|null);

        /**
         * Creates a new DataMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DataMessage instance
         */
        public static create(properties?: signalservice.IDataMessage): signalservice.DataMessage;

        /**
         * Encodes the specified DataMessage message. Does not implicitly {@link signalservice.DataMessage.verify|verify} messages.
         * @param message DataMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IDataMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified DataMessage message, length delimited. Does not implicitly {@link signalservice.DataMessage.verify|verify} messages.
         * @param message DataMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IDataMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a DataMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DataMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage;

        /**
         * Decodes a DataMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DataMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage;

        /**
         * Verifies a DataMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a DataMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DataMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.DataMessage;

        /**
         * Creates a plain object from a DataMessage message. Also converts values to other types if specified.
         * @param message DataMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.DataMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this DataMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DataMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace DataMessage {

        /** Flags enum. */
        enum Flags {
            END_SESSION = 1,
            EXPIRATION_TIMER_UPDATE = 2,
            PROFILE_KEY_UPDATE = 4,
            FORWARD = 8
        }

        /** Properties of a Payment. */
        interface IPayment {

            /** Payment notification */
            notification?: (signalservice.DataMessage.Payment.INotification|null);

            /** Payment activation */
            activation?: (signalservice.DataMessage.Payment.IActivation|null);
        }

        /** Represents a Payment. */
        class Payment implements IPayment {

            /**
             * Constructs a new Payment.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IPayment);

            /** Payment notification. */
            public notification?: (signalservice.DataMessage.Payment.INotification|null);

            /** Payment activation. */
            public activation?: (signalservice.DataMessage.Payment.IActivation|null);

            /** Payment Item. */
            public Item?: ("notification"|"activation");

            /**
             * Creates a new Payment instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Payment instance
             */
            public static create(properties?: signalservice.DataMessage.IPayment): signalservice.DataMessage.Payment;

            /**
             * Encodes the specified Payment message. Does not implicitly {@link signalservice.DataMessage.Payment.verify|verify} messages.
             * @param message Payment message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IPayment, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Payment message, length delimited. Does not implicitly {@link signalservice.DataMessage.Payment.verify|verify} messages.
             * @param message Payment message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IPayment, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Payment message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Payment
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Payment;

            /**
             * Decodes a Payment message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Payment
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Payment;

            /**
             * Verifies a Payment message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Payment message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Payment
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Payment;

            /**
             * Creates a plain object from a Payment message. Also converts values to other types if specified.
             * @param message Payment
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.Payment, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Payment to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Payment
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Payment {

            /** Properties of an Amount. */
            interface IAmount {

                /** Amount mobileCoin */
                mobileCoin?: (signalservice.DataMessage.Payment.Amount.IMobileCoin|null);
            }

            /** Represents an Amount. */
            class Amount implements IAmount {

                /**
                 * Constructs a new Amount.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Payment.IAmount);

                /** Amount mobileCoin. */
                public mobileCoin?: (signalservice.DataMessage.Payment.Amount.IMobileCoin|null);

                /** Amount Amount. */
                public Amount?: "mobileCoin";

                /**
                 * Creates a new Amount instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Amount instance
                 */
                public static create(properties?: signalservice.DataMessage.Payment.IAmount): signalservice.DataMessage.Payment.Amount;

                /**
                 * Encodes the specified Amount message. Does not implicitly {@link signalservice.DataMessage.Payment.Amount.verify|verify} messages.
                 * @param message Amount message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Payment.IAmount, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Amount message, length delimited. Does not implicitly {@link signalservice.DataMessage.Payment.Amount.verify|verify} messages.
                 * @param message Amount message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Payment.IAmount, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an Amount message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Amount
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Payment.Amount;

                /**
                 * Decodes an Amount message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Amount
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Payment.Amount;

                /**
                 * Verifies an Amount message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an Amount message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Amount
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Payment.Amount;

                /**
                 * Creates a plain object from an Amount message. Also converts values to other types if specified.
                 * @param message Amount
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Payment.Amount, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Amount to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Amount
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace Amount {

                /** Properties of a MobileCoin. */
                interface IMobileCoin {

                    /** MobileCoin picoMob */
                    picoMob?: (Long|null);
                }

                /** Represents a MobileCoin. */
                class MobileCoin implements IMobileCoin {

                    /**
                     * Constructs a new MobileCoin.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: signalservice.DataMessage.Payment.Amount.IMobileCoin);

                    /** MobileCoin picoMob. */
                    public picoMob: Long;

                    /**
                     * Creates a new MobileCoin instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MobileCoin instance
                     */
                    public static create(properties?: signalservice.DataMessage.Payment.Amount.IMobileCoin): signalservice.DataMessage.Payment.Amount.MobileCoin;

                    /**
                     * Encodes the specified MobileCoin message. Does not implicitly {@link signalservice.DataMessage.Payment.Amount.MobileCoin.verify|verify} messages.
                     * @param message MobileCoin message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: signalservice.DataMessage.Payment.Amount.IMobileCoin, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MobileCoin message, length delimited. Does not implicitly {@link signalservice.DataMessage.Payment.Amount.MobileCoin.verify|verify} messages.
                     * @param message MobileCoin message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: signalservice.DataMessage.Payment.Amount.IMobileCoin, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MobileCoin message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MobileCoin
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Payment.Amount.MobileCoin;

                    /**
                     * Decodes a MobileCoin message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MobileCoin
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Payment.Amount.MobileCoin;

                    /**
                     * Verifies a MobileCoin message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a MobileCoin message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MobileCoin
                     */
                    public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Payment.Amount.MobileCoin;

                    /**
                     * Creates a plain object from a MobileCoin message. Also converts values to other types if specified.
                     * @param message MobileCoin
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: signalservice.DataMessage.Payment.Amount.MobileCoin, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MobileCoin to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MobileCoin
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of a Notification. */
            interface INotification {

                /** Notification mobileCoin */
                mobileCoin?: (signalservice.DataMessage.Payment.Notification.IMobileCoin|null);

                /** Notification note */
                note?: (string|null);
            }

            /** Represents a Notification. */
            class Notification implements INotification {

                /**
                 * Constructs a new Notification.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Payment.INotification);

                /** Notification mobileCoin. */
                public mobileCoin?: (signalservice.DataMessage.Payment.Notification.IMobileCoin|null);

                /** Notification note. */
                public note: string;

                /** Notification Transaction. */
                public Transaction?: "mobileCoin";

                /**
                 * Creates a new Notification instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Notification instance
                 */
                public static create(properties?: signalservice.DataMessage.Payment.INotification): signalservice.DataMessage.Payment.Notification;

                /**
                 * Encodes the specified Notification message. Does not implicitly {@link signalservice.DataMessage.Payment.Notification.verify|verify} messages.
                 * @param message Notification message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Payment.INotification, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Notification message, length delimited. Does not implicitly {@link signalservice.DataMessage.Payment.Notification.verify|verify} messages.
                 * @param message Notification message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Payment.INotification, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Notification message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Notification
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Payment.Notification;

                /**
                 * Decodes a Notification message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Notification
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Payment.Notification;

                /**
                 * Verifies a Notification message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Notification message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Notification
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Payment.Notification;

                /**
                 * Creates a plain object from a Notification message. Also converts values to other types if specified.
                 * @param message Notification
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Payment.Notification, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Notification to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Notification
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace Notification {

                /** Properties of a MobileCoin. */
                interface IMobileCoin {

                    /** MobileCoin receipt */
                    receipt?: (Uint8Array|null);
                }

                /** Represents a MobileCoin. */
                class MobileCoin implements IMobileCoin {

                    /**
                     * Constructs a new MobileCoin.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: signalservice.DataMessage.Payment.Notification.IMobileCoin);

                    /** MobileCoin receipt. */
                    public receipt: Uint8Array;

                    /**
                     * Creates a new MobileCoin instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns MobileCoin instance
                     */
                    public static create(properties?: signalservice.DataMessage.Payment.Notification.IMobileCoin): signalservice.DataMessage.Payment.Notification.MobileCoin;

                    /**
                     * Encodes the specified MobileCoin message. Does not implicitly {@link signalservice.DataMessage.Payment.Notification.MobileCoin.verify|verify} messages.
                     * @param message MobileCoin message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: signalservice.DataMessage.Payment.Notification.IMobileCoin, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified MobileCoin message, length delimited. Does not implicitly {@link signalservice.DataMessage.Payment.Notification.MobileCoin.verify|verify} messages.
                     * @param message MobileCoin message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: signalservice.DataMessage.Payment.Notification.IMobileCoin, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a MobileCoin message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns MobileCoin
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Payment.Notification.MobileCoin;

                    /**
                     * Decodes a MobileCoin message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns MobileCoin
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Payment.Notification.MobileCoin;

                    /**
                     * Verifies a MobileCoin message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a MobileCoin message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns MobileCoin
                     */
                    public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Payment.Notification.MobileCoin;

                    /**
                     * Creates a plain object from a MobileCoin message. Also converts values to other types if specified.
                     * @param message MobileCoin
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: signalservice.DataMessage.Payment.Notification.MobileCoin, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this MobileCoin to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for MobileCoin
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of an Activation. */
            interface IActivation {

                /** Activation type */
                type?: (signalservice.DataMessage.Payment.Activation.Type|null);
            }

            /** Represents an Activation. */
            class Activation implements IActivation {

                /**
                 * Constructs a new Activation.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Payment.IActivation);

                /** Activation type. */
                public type: signalservice.DataMessage.Payment.Activation.Type;

                /**
                 * Creates a new Activation instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Activation instance
                 */
                public static create(properties?: signalservice.DataMessage.Payment.IActivation): signalservice.DataMessage.Payment.Activation;

                /**
                 * Encodes the specified Activation message. Does not implicitly {@link signalservice.DataMessage.Payment.Activation.verify|verify} messages.
                 * @param message Activation message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Payment.IActivation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Activation message, length delimited. Does not implicitly {@link signalservice.DataMessage.Payment.Activation.verify|verify} messages.
                 * @param message Activation message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Payment.IActivation, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an Activation message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Activation
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Payment.Activation;

                /**
                 * Decodes an Activation message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Activation
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Payment.Activation;

                /**
                 * Verifies an Activation message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an Activation message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Activation
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Payment.Activation;

                /**
                 * Creates a plain object from an Activation message. Also converts values to other types if specified.
                 * @param message Activation
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Payment.Activation, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Activation to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Activation
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace Activation {

                /** Type enum. */
                enum Type {
                    REQUEST = 0,
                    ACTIVATED = 1
                }
            }
        }

        /** Properties of a Quote. */
        interface IQuote {

            /** Quote id */
            id?: (Long|null);

            /** Quote authorAci */
            authorAci?: (string|null);

            /** Quote text */
            text?: (string|null);

            /** Quote attachments */
            attachments?: (signalservice.DataMessage.Quote.IQuotedAttachment[]|null);

            /** Quote bodyRanges */
            bodyRanges?: (signalservice.IBodyRange[]|null);

            /** Quote type */
            type?: (signalservice.DataMessage.Quote.Type|null);
        }

        /** Represents a Quote. */
        class Quote implements IQuote {

            /**
             * Constructs a new Quote.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IQuote);

            /** Quote id. */
            public id: Long;

            /** Quote authorAci. */
            public authorAci: string;

            /** Quote text. */
            public text: string;

            /** Quote attachments. */
            public attachments: signalservice.DataMessage.Quote.IQuotedAttachment[];

            /** Quote bodyRanges. */
            public bodyRanges: signalservice.IBodyRange[];

            /** Quote type. */
            public type: signalservice.DataMessage.Quote.Type;

            /**
             * Creates a new Quote instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Quote instance
             */
            public static create(properties?: signalservice.DataMessage.IQuote): signalservice.DataMessage.Quote;

            /**
             * Encodes the specified Quote message. Does not implicitly {@link signalservice.DataMessage.Quote.verify|verify} messages.
             * @param message Quote message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IQuote, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Quote message, length delimited. Does not implicitly {@link signalservice.DataMessage.Quote.verify|verify} messages.
             * @param message Quote message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IQuote, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Quote message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Quote
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Quote;

            /**
             * Decodes a Quote message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Quote
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Quote;

            /**
             * Verifies a Quote message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Quote message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Quote
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Quote;

            /**
             * Creates a plain object from a Quote message. Also converts values to other types if specified.
             * @param message Quote
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.Quote, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Quote to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Quote
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Quote {

            /** Type enum. */
            enum Type {
                NORMAL = 0,
                GIFT_BADGE = 1
            }

            /** Properties of a QuotedAttachment. */
            interface IQuotedAttachment {

                /** QuotedAttachment contentType */
                contentType?: (string|null);

                /** QuotedAttachment fileName */
                fileName?: (string|null);

                /** QuotedAttachment thumbnail */
                thumbnail?: (signalservice.IAttachmentPointer|null);
            }

            /** Represents a QuotedAttachment. */
            class QuotedAttachment implements IQuotedAttachment {

                /**
                 * Constructs a new QuotedAttachment.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Quote.IQuotedAttachment);

                /** QuotedAttachment contentType. */
                public contentType: string;

                /** QuotedAttachment fileName. */
                public fileName: string;

                /** QuotedAttachment thumbnail. */
                public thumbnail?: (signalservice.IAttachmentPointer|null);

                /**
                 * Creates a new QuotedAttachment instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns QuotedAttachment instance
                 */
                public static create(properties?: signalservice.DataMessage.Quote.IQuotedAttachment): signalservice.DataMessage.Quote.QuotedAttachment;

                /**
                 * Encodes the specified QuotedAttachment message. Does not implicitly {@link signalservice.DataMessage.Quote.QuotedAttachment.verify|verify} messages.
                 * @param message QuotedAttachment message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Quote.IQuotedAttachment, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified QuotedAttachment message, length delimited. Does not implicitly {@link signalservice.DataMessage.Quote.QuotedAttachment.verify|verify} messages.
                 * @param message QuotedAttachment message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Quote.IQuotedAttachment, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a QuotedAttachment message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns QuotedAttachment
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Quote.QuotedAttachment;

                /**
                 * Decodes a QuotedAttachment message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns QuotedAttachment
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Quote.QuotedAttachment;

                /**
                 * Verifies a QuotedAttachment message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a QuotedAttachment message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns QuotedAttachment
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Quote.QuotedAttachment;

                /**
                 * Creates a plain object from a QuotedAttachment message. Also converts values to other types if specified.
                 * @param message QuotedAttachment
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Quote.QuotedAttachment, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this QuotedAttachment to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for QuotedAttachment
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a Contact. */
        interface IContact {

            /** Contact name */
            name?: (signalservice.DataMessage.Contact.IName|null);

            /** Contact number */
            number?: (signalservice.DataMessage.Contact.IPhone[]|null);

            /** Contact email */
            email?: (signalservice.DataMessage.Contact.IEmail[]|null);

            /** Contact address */
            address?: (signalservice.DataMessage.Contact.IPostalAddress[]|null);

            /** Contact avatar */
            avatar?: (signalservice.DataMessage.Contact.IAvatar|null);

            /** Contact organization */
            organization?: (string|null);
        }

        /** Represents a Contact. */
        class Contact implements IContact {

            /**
             * Constructs a new Contact.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IContact);

            /** Contact name. */
            public name?: (signalservice.DataMessage.Contact.IName|null);

            /** Contact number. */
            public number: signalservice.DataMessage.Contact.IPhone[];

            /** Contact email. */
            public email: signalservice.DataMessage.Contact.IEmail[];

            /** Contact address. */
            public address: signalservice.DataMessage.Contact.IPostalAddress[];

            /** Contact avatar. */
            public avatar?: (signalservice.DataMessage.Contact.IAvatar|null);

            /** Contact organization. */
            public organization: string;

            /**
             * Creates a new Contact instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Contact instance
             */
            public static create(properties?: signalservice.DataMessage.IContact): signalservice.DataMessage.Contact;

            /**
             * Encodes the specified Contact message. Does not implicitly {@link signalservice.DataMessage.Contact.verify|verify} messages.
             * @param message Contact message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IContact, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Contact message, length delimited. Does not implicitly {@link signalservice.DataMessage.Contact.verify|verify} messages.
             * @param message Contact message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IContact, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Contact message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Contact
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Contact;

            /**
             * Decodes a Contact message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Contact
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Contact;

            /**
             * Verifies a Contact message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Contact message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Contact
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Contact;

            /**
             * Creates a plain object from a Contact message. Also converts values to other types if specified.
             * @param message Contact
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.Contact, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Contact to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Contact
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Contact {

            /** Properties of a Name. */
            interface IName {

                /** Name givenName */
                givenName?: (string|null);

                /** Name familyName */
                familyName?: (string|null);

                /** Name prefix */
                prefix?: (string|null);

                /** Name suffix */
                suffix?: (string|null);

                /** Name middleName */
                middleName?: (string|null);

                /** Name nickname */
                nickname?: (string|null);
            }

            /** Represents a Name. */
            class Name implements IName {

                /**
                 * Constructs a new Name.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Contact.IName);

                /** Name givenName. */
                public givenName: string;

                /** Name familyName. */
                public familyName: string;

                /** Name prefix. */
                public prefix: string;

                /** Name suffix. */
                public suffix: string;

                /** Name middleName. */
                public middleName: string;

                /** Name nickname. */
                public nickname: string;

                /**
                 * Creates a new Name instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Name instance
                 */
                public static create(properties?: signalservice.DataMessage.Contact.IName): signalservice.DataMessage.Contact.Name;

                /**
                 * Encodes the specified Name message. Does not implicitly {@link signalservice.DataMessage.Contact.Name.verify|verify} messages.
                 * @param message Name message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Contact.IName, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Name message, length delimited. Does not implicitly {@link signalservice.DataMessage.Contact.Name.verify|verify} messages.
                 * @param message Name message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Contact.IName, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Name message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Name
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Contact.Name;

                /**
                 * Decodes a Name message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Name
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Contact.Name;

                /**
                 * Verifies a Name message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Name message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Name
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Contact.Name;

                /**
                 * Creates a plain object from a Name message. Also converts values to other types if specified.
                 * @param message Name
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Contact.Name, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Name to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Name
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a Phone. */
            interface IPhone {

                /** Phone value */
                value?: (string|null);

                /** Phone type */
                type?: (signalservice.DataMessage.Contact.Phone.Type|null);

                /** Phone label */
                label?: (string|null);
            }

            /** Represents a Phone. */
            class Phone implements IPhone {

                /**
                 * Constructs a new Phone.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Contact.IPhone);

                /** Phone value. */
                public value: string;

                /** Phone type. */
                public type: signalservice.DataMessage.Contact.Phone.Type;

                /** Phone label. */
                public label: string;

                /**
                 * Creates a new Phone instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Phone instance
                 */
                public static create(properties?: signalservice.DataMessage.Contact.IPhone): signalservice.DataMessage.Contact.Phone;

                /**
                 * Encodes the specified Phone message. Does not implicitly {@link signalservice.DataMessage.Contact.Phone.verify|verify} messages.
                 * @param message Phone message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Contact.IPhone, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Phone message, length delimited. Does not implicitly {@link signalservice.DataMessage.Contact.Phone.verify|verify} messages.
                 * @param message Phone message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Contact.IPhone, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Phone message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Phone
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Contact.Phone;

                /**
                 * Decodes a Phone message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Phone
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Contact.Phone;

                /**
                 * Verifies a Phone message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Phone message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Phone
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Contact.Phone;

                /**
                 * Creates a plain object from a Phone message. Also converts values to other types if specified.
                 * @param message Phone
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Contact.Phone, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Phone to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Phone
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace Phone {

                /** Type enum. */
                enum Type {
                    HOME = 1,
                    MOBILE = 2,
                    WORK = 3,
                    CUSTOM = 4
                }
            }

            /** Properties of an Email. */
            interface IEmail {

                /** Email value */
                value?: (string|null);

                /** Email type */
                type?: (signalservice.DataMessage.Contact.Email.Type|null);

                /** Email label */
                label?: (string|null);
            }

            /** Represents an Email. */
            class Email implements IEmail {

                /**
                 * Constructs a new Email.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Contact.IEmail);

                /** Email value. */
                public value: string;

                /** Email type. */
                public type: signalservice.DataMessage.Contact.Email.Type;

                /** Email label. */
                public label: string;

                /**
                 * Creates a new Email instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Email instance
                 */
                public static create(properties?: signalservice.DataMessage.Contact.IEmail): signalservice.DataMessage.Contact.Email;

                /**
                 * Encodes the specified Email message. Does not implicitly {@link signalservice.DataMessage.Contact.Email.verify|verify} messages.
                 * @param message Email message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Contact.IEmail, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Email message, length delimited. Does not implicitly {@link signalservice.DataMessage.Contact.Email.verify|verify} messages.
                 * @param message Email message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Contact.IEmail, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an Email message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Email
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Contact.Email;

                /**
                 * Decodes an Email message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Email
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Contact.Email;

                /**
                 * Verifies an Email message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an Email message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Email
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Contact.Email;

                /**
                 * Creates a plain object from an Email message. Also converts values to other types if specified.
                 * @param message Email
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Contact.Email, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Email to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Email
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace Email {

                /** Type enum. */
                enum Type {
                    HOME = 1,
                    MOBILE = 2,
                    WORK = 3,
                    CUSTOM = 4
                }
            }

            /** Properties of a PostalAddress. */
            interface IPostalAddress {

                /** PostalAddress type */
                type?: (signalservice.DataMessage.Contact.PostalAddress.Type|null);

                /** PostalAddress label */
                label?: (string|null);

                /** PostalAddress street */
                street?: (string|null);

                /** PostalAddress pobox */
                pobox?: (string|null);

                /** PostalAddress neighborhood */
                neighborhood?: (string|null);

                /** PostalAddress city */
                city?: (string|null);

                /** PostalAddress region */
                region?: (string|null);

                /** PostalAddress postcode */
                postcode?: (string|null);

                /** PostalAddress country */
                country?: (string|null);
            }

            /** Represents a PostalAddress. */
            class PostalAddress implements IPostalAddress {

                /**
                 * Constructs a new PostalAddress.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Contact.IPostalAddress);

                /** PostalAddress type. */
                public type: signalservice.DataMessage.Contact.PostalAddress.Type;

                /** PostalAddress label. */
                public label: string;

                /** PostalAddress street. */
                public street: string;

                /** PostalAddress pobox. */
                public pobox: string;

                /** PostalAddress neighborhood. */
                public neighborhood: string;

                /** PostalAddress city. */
                public city: string;

                /** PostalAddress region. */
                public region: string;

                /** PostalAddress postcode. */
                public postcode: string;

                /** PostalAddress country. */
                public country: string;

                /**
                 * Creates a new PostalAddress instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PostalAddress instance
                 */
                public static create(properties?: signalservice.DataMessage.Contact.IPostalAddress): signalservice.DataMessage.Contact.PostalAddress;

                /**
                 * Encodes the specified PostalAddress message. Does not implicitly {@link signalservice.DataMessage.Contact.PostalAddress.verify|verify} messages.
                 * @param message PostalAddress message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Contact.IPostalAddress, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PostalAddress message, length delimited. Does not implicitly {@link signalservice.DataMessage.Contact.PostalAddress.verify|verify} messages.
                 * @param message PostalAddress message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Contact.IPostalAddress, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PostalAddress message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PostalAddress
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Contact.PostalAddress;

                /**
                 * Decodes a PostalAddress message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PostalAddress
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Contact.PostalAddress;

                /**
                 * Verifies a PostalAddress message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PostalAddress message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PostalAddress
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Contact.PostalAddress;

                /**
                 * Creates a plain object from a PostalAddress message. Also converts values to other types if specified.
                 * @param message PostalAddress
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Contact.PostalAddress, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PostalAddress to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PostalAddress
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace PostalAddress {

                /** Type enum. */
                enum Type {
                    HOME = 1,
                    WORK = 2,
                    CUSTOM = 3
                }
            }

            /** Properties of an Avatar. */
            interface IAvatar {

                /** Avatar avatar */
                avatar?: (signalservice.IAttachmentPointer|null);

                /** Avatar isProfile */
                isProfile?: (boolean|null);
            }

            /** Represents an Avatar. */
            class Avatar implements IAvatar {

                /**
                 * Constructs a new Avatar.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.DataMessage.Contact.IAvatar);

                /** Avatar avatar. */
                public avatar?: (signalservice.IAttachmentPointer|null);

                /** Avatar isProfile. */
                public isProfile: boolean;

                /**
                 * Creates a new Avatar instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Avatar instance
                 */
                public static create(properties?: signalservice.DataMessage.Contact.IAvatar): signalservice.DataMessage.Contact.Avatar;

                /**
                 * Encodes the specified Avatar message. Does not implicitly {@link signalservice.DataMessage.Contact.Avatar.verify|verify} messages.
                 * @param message Avatar message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.DataMessage.Contact.IAvatar, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Avatar message, length delimited. Does not implicitly {@link signalservice.DataMessage.Contact.Avatar.verify|verify} messages.
                 * @param message Avatar message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.DataMessage.Contact.IAvatar, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an Avatar message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Avatar
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Contact.Avatar;

                /**
                 * Decodes an Avatar message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Avatar
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Contact.Avatar;

                /**
                 * Verifies an Avatar message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an Avatar message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Avatar
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Contact.Avatar;

                /**
                 * Creates a plain object from an Avatar message. Also converts values to other types if specified.
                 * @param message Avatar
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.DataMessage.Contact.Avatar, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Avatar to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Avatar
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a Sticker. */
        interface ISticker {

            /** Sticker packId */
            packId?: (Uint8Array|null);

            /** Sticker packKey */
            packKey?: (Uint8Array|null);

            /** Sticker stickerId */
            stickerId?: (number|null);

            /** Sticker data */
            data?: (signalservice.IAttachmentPointer|null);

            /** Sticker emoji */
            emoji?: (string|null);
        }

        /** Represents a Sticker. */
        class Sticker implements ISticker {

            /**
             * Constructs a new Sticker.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.ISticker);

            /** Sticker packId. */
            public packId: Uint8Array;

            /** Sticker packKey. */
            public packKey: Uint8Array;

            /** Sticker stickerId. */
            public stickerId: number;

            /** Sticker data. */
            public data?: (signalservice.IAttachmentPointer|null);

            /** Sticker emoji. */
            public emoji: string;

            /**
             * Creates a new Sticker instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Sticker instance
             */
            public static create(properties?: signalservice.DataMessage.ISticker): signalservice.DataMessage.Sticker;

            /**
             * Encodes the specified Sticker message. Does not implicitly {@link signalservice.DataMessage.Sticker.verify|verify} messages.
             * @param message Sticker message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.ISticker, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Sticker message, length delimited. Does not implicitly {@link signalservice.DataMessage.Sticker.verify|verify} messages.
             * @param message Sticker message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.ISticker, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Sticker message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Sticker
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Sticker;

            /**
             * Decodes a Sticker message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Sticker
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Sticker;

            /**
             * Verifies a Sticker message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Sticker message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Sticker
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Sticker;

            /**
             * Creates a plain object from a Sticker message. Also converts values to other types if specified.
             * @param message Sticker
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.Sticker, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Sticker to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Sticker
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Reaction. */
        interface IReaction {

            /** Reaction emoji */
            emoji?: (string|null);

            /** Reaction remove */
            remove?: (boolean|null);

            /** Reaction targetAuthorAci */
            targetAuthorAci?: (string|null);

            /** Reaction targetSentTimestamp */
            targetSentTimestamp?: (Long|null);
        }

        /** Represents a Reaction. */
        class Reaction implements IReaction {

            /**
             * Constructs a new Reaction.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IReaction);

            /** Reaction emoji. */
            public emoji: string;

            /** Reaction remove. */
            public remove: boolean;

            /** Reaction targetAuthorAci. */
            public targetAuthorAci: string;

            /** Reaction targetSentTimestamp. */
            public targetSentTimestamp: Long;

            /**
             * Creates a new Reaction instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Reaction instance
             */
            public static create(properties?: signalservice.DataMessage.IReaction): signalservice.DataMessage.Reaction;

            /**
             * Encodes the specified Reaction message. Does not implicitly {@link signalservice.DataMessage.Reaction.verify|verify} messages.
             * @param message Reaction message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IReaction, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Reaction message, length delimited. Does not implicitly {@link signalservice.DataMessage.Reaction.verify|verify} messages.
             * @param message Reaction message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IReaction, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Reaction message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Reaction
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Reaction;

            /**
             * Decodes a Reaction message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Reaction
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Reaction;

            /**
             * Verifies a Reaction message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Reaction message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Reaction
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Reaction;

            /**
             * Creates a plain object from a Reaction message. Also converts values to other types if specified.
             * @param message Reaction
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.Reaction, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Reaction to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Reaction
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Delete. */
        interface IDelete {

            /** Delete targetSentTimestamp */
            targetSentTimestamp?: (Long|null);
        }

        /** Represents a Delete. */
        class Delete implements IDelete {

            /**
             * Constructs a new Delete.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IDelete);

            /** Delete targetSentTimestamp. */
            public targetSentTimestamp: Long;

            /**
             * Creates a new Delete instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Delete instance
             */
            public static create(properties?: signalservice.DataMessage.IDelete): signalservice.DataMessage.Delete;

            /**
             * Encodes the specified Delete message. Does not implicitly {@link signalservice.DataMessage.Delete.verify|verify} messages.
             * @param message Delete message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IDelete, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Delete message, length delimited. Does not implicitly {@link signalservice.DataMessage.Delete.verify|verify} messages.
             * @param message Delete message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IDelete, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Delete message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Delete
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.Delete;

            /**
             * Decodes a Delete message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Delete
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.Delete;

            /**
             * Verifies a Delete message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Delete message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Delete
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.Delete;

            /**
             * Creates a plain object from a Delete message. Also converts values to other types if specified.
             * @param message Delete
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.Delete, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Delete to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Delete
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a GroupCallUpdate. */
        interface IGroupCallUpdate {

            /** GroupCallUpdate eraId */
            eraId?: (string|null);
        }

        /** Represents a GroupCallUpdate. */
        class GroupCallUpdate implements IGroupCallUpdate {

            /**
             * Constructs a new GroupCallUpdate.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IGroupCallUpdate);

            /** GroupCallUpdate eraId. */
            public eraId: string;

            /**
             * Creates a new GroupCallUpdate instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GroupCallUpdate instance
             */
            public static create(properties?: signalservice.DataMessage.IGroupCallUpdate): signalservice.DataMessage.GroupCallUpdate;

            /**
             * Encodes the specified GroupCallUpdate message. Does not implicitly {@link signalservice.DataMessage.GroupCallUpdate.verify|verify} messages.
             * @param message GroupCallUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IGroupCallUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GroupCallUpdate message, length delimited. Does not implicitly {@link signalservice.DataMessage.GroupCallUpdate.verify|verify} messages.
             * @param message GroupCallUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IGroupCallUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GroupCallUpdate message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GroupCallUpdate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.GroupCallUpdate;

            /**
             * Decodes a GroupCallUpdate message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GroupCallUpdate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.GroupCallUpdate;

            /**
             * Verifies a GroupCallUpdate message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GroupCallUpdate message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GroupCallUpdate
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.GroupCallUpdate;

            /**
             * Creates a plain object from a GroupCallUpdate message. Also converts values to other types if specified.
             * @param message GroupCallUpdate
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.GroupCallUpdate, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GroupCallUpdate to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GroupCallUpdate
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a StoryContext. */
        interface IStoryContext {

            /** StoryContext authorAci */
            authorAci?: (string|null);

            /** StoryContext sentTimestamp */
            sentTimestamp?: (Long|null);
        }

        /** Represents a StoryContext. */
        class StoryContext implements IStoryContext {

            /**
             * Constructs a new StoryContext.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IStoryContext);

            /** StoryContext authorAci. */
            public authorAci: string;

            /** StoryContext sentTimestamp. */
            public sentTimestamp: Long;

            /**
             * Creates a new StoryContext instance using the specified properties.
             * @param [properties] Properties to set
             * @returns StoryContext instance
             */
            public static create(properties?: signalservice.DataMessage.IStoryContext): signalservice.DataMessage.StoryContext;

            /**
             * Encodes the specified StoryContext message. Does not implicitly {@link signalservice.DataMessage.StoryContext.verify|verify} messages.
             * @param message StoryContext message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IStoryContext, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified StoryContext message, length delimited. Does not implicitly {@link signalservice.DataMessage.StoryContext.verify|verify} messages.
             * @param message StoryContext message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IStoryContext, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a StoryContext message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns StoryContext
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.StoryContext;

            /**
             * Decodes a StoryContext message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns StoryContext
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.StoryContext;

            /**
             * Verifies a StoryContext message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a StoryContext message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns StoryContext
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.StoryContext;

            /**
             * Creates a plain object from a StoryContext message. Also converts values to other types if specified.
             * @param message StoryContext
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.StoryContext, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this StoryContext to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for StoryContext
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** ProtocolVersion enum. */
        enum ProtocolVersion {
            INITIAL = 0,
            MESSAGE_TIMERS = 1,
            VIEW_ONCE = 2,
            VIEW_ONCE_VIDEO = 3,
            REACTIONS = 4,
            CDN_SELECTOR_ATTACHMENTS = 5,
            MENTIONS = 6,
            PAYMENTS = 7,
            CURRENT = 7
        }

        /** Properties of a GiftBadge. */
        interface IGiftBadge {

            /** GiftBadge receiptCredentialPresentation */
            receiptCredentialPresentation?: (Uint8Array|null);
        }

        /** Represents a GiftBadge. */
        class GiftBadge implements IGiftBadge {

            /**
             * Constructs a new GiftBadge.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.DataMessage.IGiftBadge);

            /** GiftBadge receiptCredentialPresentation. */
            public receiptCredentialPresentation: Uint8Array;

            /**
             * Creates a new GiftBadge instance using the specified properties.
             * @param [properties] Properties to set
             * @returns GiftBadge instance
             */
            public static create(properties?: signalservice.DataMessage.IGiftBadge): signalservice.DataMessage.GiftBadge;

            /**
             * Encodes the specified GiftBadge message. Does not implicitly {@link signalservice.DataMessage.GiftBadge.verify|verify} messages.
             * @param message GiftBadge message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.DataMessage.IGiftBadge, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified GiftBadge message, length delimited. Does not implicitly {@link signalservice.DataMessage.GiftBadge.verify|verify} messages.
             * @param message GiftBadge message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.DataMessage.IGiftBadge, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a GiftBadge message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns GiftBadge
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DataMessage.GiftBadge;

            /**
             * Decodes a GiftBadge message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns GiftBadge
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DataMessage.GiftBadge;

            /**
             * Verifies a GiftBadge message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a GiftBadge message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns GiftBadge
             */
            public static fromObject(object: { [k: string]: any }): signalservice.DataMessage.GiftBadge;

            /**
             * Creates a plain object from a GiftBadge message. Also converts values to other types if specified.
             * @param message GiftBadge
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.DataMessage.GiftBadge, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this GiftBadge to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for GiftBadge
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a NullMessage. */
    interface INullMessage {

        /** NullMessage padding */
        padding?: (Uint8Array|null);
    }

    /** Represents a NullMessage. */
    class NullMessage implements INullMessage {

        /**
         * Constructs a new NullMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.INullMessage);

        /** NullMessage padding. */
        public padding: Uint8Array;

        /**
         * Creates a new NullMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NullMessage instance
         */
        public static create(properties?: signalservice.INullMessage): signalservice.NullMessage;

        /**
         * Encodes the specified NullMessage message. Does not implicitly {@link signalservice.NullMessage.verify|verify} messages.
         * @param message NullMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.INullMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified NullMessage message, length delimited. Does not implicitly {@link signalservice.NullMessage.verify|verify} messages.
         * @param message NullMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.INullMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a NullMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NullMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.NullMessage;

        /**
         * Decodes a NullMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NullMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.NullMessage;

        /**
         * Verifies a NullMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a NullMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NullMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.NullMessage;

        /**
         * Creates a plain object from a NullMessage message. Also converts values to other types if specified.
         * @param message NullMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.NullMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this NullMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NullMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ReceiptMessage. */
    interface IReceiptMessage {

        /** ReceiptMessage type */
        type?: (signalservice.ReceiptMessage.Type|null);

        /** ReceiptMessage timestamp */
        timestamp?: (Long[]|null);
    }

    /** Represents a ReceiptMessage. */
    class ReceiptMessage implements IReceiptMessage {

        /**
         * Constructs a new ReceiptMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IReceiptMessage);

        /** ReceiptMessage type. */
        public type: signalservice.ReceiptMessage.Type;

        /** ReceiptMessage timestamp. */
        public timestamp: Long[];

        /**
         * Creates a new ReceiptMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ReceiptMessage instance
         */
        public static create(properties?: signalservice.IReceiptMessage): signalservice.ReceiptMessage;

        /**
         * Encodes the specified ReceiptMessage message. Does not implicitly {@link signalservice.ReceiptMessage.verify|verify} messages.
         * @param message ReceiptMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IReceiptMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ReceiptMessage message, length delimited. Does not implicitly {@link signalservice.ReceiptMessage.verify|verify} messages.
         * @param message ReceiptMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IReceiptMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ReceiptMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ReceiptMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ReceiptMessage;

        /**
         * Decodes a ReceiptMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ReceiptMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ReceiptMessage;

        /**
         * Verifies a ReceiptMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ReceiptMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ReceiptMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ReceiptMessage;

        /**
         * Creates a plain object from a ReceiptMessage message. Also converts values to other types if specified.
         * @param message ReceiptMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ReceiptMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ReceiptMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ReceiptMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ReceiptMessage {

        /** Type enum. */
        enum Type {
            DELIVERY = 0,
            READ = 1,
            VIEWED = 2
        }
    }

    /** Properties of a TypingMessage. */
    interface ITypingMessage {

        /** TypingMessage timestamp */
        timestamp?: (Long|null);

        /** TypingMessage action */
        action?: (signalservice.TypingMessage.Action|null);

        /** TypingMessage groupId */
        groupId?: (Uint8Array|null);
    }

    /** Represents a TypingMessage. */
    class TypingMessage implements ITypingMessage {

        /**
         * Constructs a new TypingMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ITypingMessage);

        /** TypingMessage timestamp. */
        public timestamp: Long;

        /** TypingMessage action. */
        public action: signalservice.TypingMessage.Action;

        /** TypingMessage groupId. */
        public groupId: Uint8Array;

        /**
         * Creates a new TypingMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TypingMessage instance
         */
        public static create(properties?: signalservice.ITypingMessage): signalservice.TypingMessage;

        /**
         * Encodes the specified TypingMessage message. Does not implicitly {@link signalservice.TypingMessage.verify|verify} messages.
         * @param message TypingMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ITypingMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified TypingMessage message, length delimited. Does not implicitly {@link signalservice.TypingMessage.verify|verify} messages.
         * @param message TypingMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ITypingMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a TypingMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TypingMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.TypingMessage;

        /**
         * Decodes a TypingMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TypingMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.TypingMessage;

        /**
         * Verifies a TypingMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a TypingMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TypingMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.TypingMessage;

        /**
         * Creates a plain object from a TypingMessage message. Also converts values to other types if specified.
         * @param message TypingMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.TypingMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this TypingMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TypingMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace TypingMessage {

        /** Action enum. */
        enum Action {
            STARTED = 0,
            STOPPED = 1
        }
    }

    /** Properties of a StoryMessage. */
    interface IStoryMessage {

        /** StoryMessage profileKey */
        profileKey?: (Uint8Array|null);

        /** StoryMessage group */
        group?: (signalservice.IGroupContextV2|null);

        /** StoryMessage fileAttachment */
        fileAttachment?: (signalservice.IAttachmentPointer|null);

        /** StoryMessage textAttachment */
        textAttachment?: (signalservice.ITextAttachment|null);

        /** StoryMessage allowsReplies */
        allowsReplies?: (boolean|null);

        /** StoryMessage bodyRanges */
        bodyRanges?: (signalservice.IBodyRange[]|null);
    }

    /** Represents a StoryMessage. */
    class StoryMessage implements IStoryMessage {

        /**
         * Constructs a new StoryMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStoryMessage);

        /** StoryMessage profileKey. */
        public profileKey: Uint8Array;

        /** StoryMessage group. */
        public group?: (signalservice.IGroupContextV2|null);

        /** StoryMessage fileAttachment. */
        public fileAttachment?: (signalservice.IAttachmentPointer|null);

        /** StoryMessage textAttachment. */
        public textAttachment?: (signalservice.ITextAttachment|null);

        /** StoryMessage allowsReplies. */
        public allowsReplies: boolean;

        /** StoryMessage bodyRanges. */
        public bodyRanges: signalservice.IBodyRange[];

        /** StoryMessage attachment. */
        public attachment?: ("fileAttachment"|"textAttachment");

        /**
         * Creates a new StoryMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StoryMessage instance
         */
        public static create(properties?: signalservice.IStoryMessage): signalservice.StoryMessage;

        /**
         * Encodes the specified StoryMessage message. Does not implicitly {@link signalservice.StoryMessage.verify|verify} messages.
         * @param message StoryMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStoryMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StoryMessage message, length delimited. Does not implicitly {@link signalservice.StoryMessage.verify|verify} messages.
         * @param message StoryMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStoryMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StoryMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StoryMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StoryMessage;

        /**
         * Decodes a StoryMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StoryMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StoryMessage;

        /**
         * Verifies a StoryMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StoryMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StoryMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StoryMessage;

        /**
         * Creates a plain object from a StoryMessage message. Also converts values to other types if specified.
         * @param message StoryMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StoryMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StoryMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StoryMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Preview. */
    interface IPreview {

        /** Preview url */
        url?: (string|null);

        /** Preview title */
        title?: (string|null);

        /** Preview image */
        image?: (signalservice.IAttachmentPointer|null);

        /** Preview description */
        description?: (string|null);

        /** Preview date */
        date?: (Long|null);
    }

    /** Represents a Preview. */
    class Preview implements IPreview {

        /**
         * Constructs a new Preview.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IPreview);

        /** Preview url. */
        public url: string;

        /** Preview title. */
        public title: string;

        /** Preview image. */
        public image?: (signalservice.IAttachmentPointer|null);

        /** Preview description. */
        public description: string;

        /** Preview date. */
        public date: Long;

        /**
         * Creates a new Preview instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Preview instance
         */
        public static create(properties?: signalservice.IPreview): signalservice.Preview;

        /**
         * Encodes the specified Preview message. Does not implicitly {@link signalservice.Preview.verify|verify} messages.
         * @param message Preview message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IPreview, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified Preview message, length delimited. Does not implicitly {@link signalservice.Preview.verify|verify} messages.
         * @param message Preview message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IPreview, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a Preview message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Preview
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Preview;

        /**
         * Decodes a Preview message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Preview
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Preview;

        /**
         * Verifies a Preview message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a Preview message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Preview
         */
        public static fromObject(object: { [k: string]: any }): signalservice.Preview;

        /**
         * Creates a plain object from a Preview message. Also converts values to other types if specified.
         * @param message Preview
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.Preview, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this Preview to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Preview
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a TextAttachment. */
    interface ITextAttachment {

        /** TextAttachment text */
        text?: (string|null);

        /** TextAttachment textStyle */
        textStyle?: (signalservice.TextAttachment.Style|null);

        /** TextAttachment textForegroundColor */
        textForegroundColor?: (number|null);

        /** TextAttachment textBackgroundColor */
        textBackgroundColor?: (number|null);

        /** TextAttachment preview */
        preview?: (signalservice.IPreview|null);

        /** TextAttachment gradient */
        gradient?: (signalservice.TextAttachment.IGradient|null);

        /** TextAttachment color */
        color?: (number|null);
    }

    /** Represents a TextAttachment. */
    class TextAttachment implements ITextAttachment {

        /**
         * Constructs a new TextAttachment.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ITextAttachment);

        /** TextAttachment text. */
        public text: string;

        /** TextAttachment textStyle. */
        public textStyle: signalservice.TextAttachment.Style;

        /** TextAttachment textForegroundColor. */
        public textForegroundColor: number;

        /** TextAttachment textBackgroundColor. */
        public textBackgroundColor: number;

        /** TextAttachment preview. */
        public preview?: (signalservice.IPreview|null);

        /** TextAttachment gradient. */
        public gradient?: (signalservice.TextAttachment.IGradient|null);

        /** TextAttachment color. */
        public color?: (number|null);

        /** TextAttachment background. */
        public background?: ("gradient"|"color");

        /**
         * Creates a new TextAttachment instance using the specified properties.
         * @param [properties] Properties to set
         * @returns TextAttachment instance
         */
        public static create(properties?: signalservice.ITextAttachment): signalservice.TextAttachment;

        /**
         * Encodes the specified TextAttachment message. Does not implicitly {@link signalservice.TextAttachment.verify|verify} messages.
         * @param message TextAttachment message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ITextAttachment, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified TextAttachment message, length delimited. Does not implicitly {@link signalservice.TextAttachment.verify|verify} messages.
         * @param message TextAttachment message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ITextAttachment, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a TextAttachment message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns TextAttachment
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.TextAttachment;

        /**
         * Decodes a TextAttachment message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns TextAttachment
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.TextAttachment;

        /**
         * Verifies a TextAttachment message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a TextAttachment message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns TextAttachment
         */
        public static fromObject(object: { [k: string]: any }): signalservice.TextAttachment;

        /**
         * Creates a plain object from a TextAttachment message. Also converts values to other types if specified.
         * @param message TextAttachment
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.TextAttachment, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this TextAttachment to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for TextAttachment
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace TextAttachment {

        /** Style enum. */
        enum Style {
            DEFAULT = 0,
            REGULAR = 1,
            BOLD = 2,
            SERIF = 3,
            SCRIPT = 4,
            CONDENSED = 5
        }

        /** Properties of a Gradient. */
        interface IGradient {

            /** Gradient startColor */
            startColor?: (number|null);

            /** Gradient endColor */
            endColor?: (number|null);

            /** Gradient angle */
            angle?: (number|null);

            /** Gradient colors */
            colors?: (number[]|null);

            /** Gradient positions */
            positions?: (number[]|null);
        }

        /** Represents a Gradient. */
        class Gradient implements IGradient {

            /**
             * Constructs a new Gradient.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.TextAttachment.IGradient);

            /** Gradient startColor. */
            public startColor: number;

            /** Gradient endColor. */
            public endColor: number;

            /** Gradient angle. */
            public angle: number;

            /** Gradient colors. */
            public colors: number[];

            /** Gradient positions. */
            public positions: number[];

            /**
             * Creates a new Gradient instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Gradient instance
             */
            public static create(properties?: signalservice.TextAttachment.IGradient): signalservice.TextAttachment.Gradient;

            /**
             * Encodes the specified Gradient message. Does not implicitly {@link signalservice.TextAttachment.Gradient.verify|verify} messages.
             * @param message Gradient message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.TextAttachment.IGradient, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Gradient message, length delimited. Does not implicitly {@link signalservice.TextAttachment.Gradient.verify|verify} messages.
             * @param message Gradient message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.TextAttachment.IGradient, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Gradient message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Gradient
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.TextAttachment.Gradient;

            /**
             * Decodes a Gradient message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Gradient
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.TextAttachment.Gradient;

            /**
             * Verifies a Gradient message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Gradient message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Gradient
             */
            public static fromObject(object: { [k: string]: any }): signalservice.TextAttachment.Gradient;

            /**
             * Creates a plain object from a Gradient message. Also converts values to other types if specified.
             * @param message Gradient
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.TextAttachment.Gradient, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Gradient to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Gradient
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a Verified. */
    interface IVerified {

        /** Verified destinationAci */
        destinationAci?: (string|null);

        /** Verified identityKey */
        identityKey?: (Uint8Array|null);

        /** Verified state */
        state?: (signalservice.Verified.State|null);

        /** Verified nullMessage */
        nullMessage?: (Uint8Array|null);
    }

    /** Represents a Verified. */
    class Verified implements IVerified {

        /**
         * Constructs a new Verified.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IVerified);

        /** Verified destinationAci. */
        public destinationAci: string;

        /** Verified identityKey. */
        public identityKey: Uint8Array;

        /** Verified state. */
        public state: signalservice.Verified.State;

        /** Verified nullMessage. */
        public nullMessage: Uint8Array;

        /**
         * Creates a new Verified instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Verified instance
         */
        public static create(properties?: signalservice.IVerified): signalservice.Verified;

        /**
         * Encodes the specified Verified message. Does not implicitly {@link signalservice.Verified.verify|verify} messages.
         * @param message Verified message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IVerified, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified Verified message, length delimited. Does not implicitly {@link signalservice.Verified.verify|verify} messages.
         * @param message Verified message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IVerified, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a Verified message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Verified
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Verified;

        /**
         * Decodes a Verified message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Verified
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Verified;

        /**
         * Verifies a Verified message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a Verified message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Verified
         */
        public static fromObject(object: { [k: string]: any }): signalservice.Verified;

        /**
         * Creates a plain object from a Verified message. Also converts values to other types if specified.
         * @param message Verified
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.Verified, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this Verified to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Verified
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Verified {

        /** State enum. */
        enum State {
            DEFAULT = 0,
            VERIFIED = 1,
            UNVERIFIED = 2
        }
    }

    /** Properties of a SyncMessage. */
    interface ISyncMessage {

        /** SyncMessage sent */
        sent?: (signalservice.SyncMessage.ISent|null);

        /** SyncMessage contacts */
        contacts?: (signalservice.SyncMessage.IContacts|null);

        /** SyncMessage request */
        request?: (signalservice.SyncMessage.IRequest|null);

        /** SyncMessage read */
        read?: (signalservice.SyncMessage.IRead[]|null);

        /** SyncMessage blocked */
        blocked?: (signalservice.SyncMessage.IBlocked|null);

        /** SyncMessage verified */
        verified?: (signalservice.IVerified|null);

        /** SyncMessage configuration */
        configuration?: (signalservice.SyncMessage.IConfiguration|null);

        /** SyncMessage padding */
        padding?: (Uint8Array|null);

        /** SyncMessage stickerPackOperation */
        stickerPackOperation?: (signalservice.SyncMessage.IStickerPackOperation[]|null);

        /** SyncMessage viewOnceOpen */
        viewOnceOpen?: (signalservice.SyncMessage.IViewOnceOpen|null);

        /** SyncMessage fetchLatest */
        fetchLatest?: (signalservice.SyncMessage.IFetchLatest|null);

        /** SyncMessage keys */
        keys?: (signalservice.SyncMessage.IKeys|null);

        /** SyncMessage messageRequestResponse */
        messageRequestResponse?: (signalservice.SyncMessage.IMessageRequestResponse|null);

        /** SyncMessage viewed */
        viewed?: (signalservice.SyncMessage.IViewed[]|null);

        /** SyncMessage pniChangeNumber */
        pniChangeNumber?: (signalservice.SyncMessage.IPniChangeNumber|null);

        /** SyncMessage callEvent */
        callEvent?: (signalservice.SyncMessage.ICallEvent|null);

        /** SyncMessage callLinkUpdate */
        callLinkUpdate?: (signalservice.SyncMessage.ICallLinkUpdate|null);

        /** SyncMessage callLogEvent */
        callLogEvent?: (signalservice.SyncMessage.ICallLogEvent|null);

        /** SyncMessage deleteForMe */
        deleteForMe?: (signalservice.SyncMessage.IDeleteForMe|null);

        /** SyncMessage deviceNameChange */
        deviceNameChange?: (signalservice.SyncMessage.IDeviceNameChange|null);

        /** SyncMessage attachmentBackfillRequest */
        attachmentBackfillRequest?: (signalservice.SyncMessage.IAttachmentBackfillRequest|null);

        /** SyncMessage attachmentBackfillResponse */
        attachmentBackfillResponse?: (signalservice.SyncMessage.IAttachmentBackfillResponse|null);
    }

    /** Represents a SyncMessage. */
    class SyncMessage implements ISyncMessage {

        /**
         * Constructs a new SyncMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ISyncMessage);

        /** SyncMessage sent. */
        public sent?: (signalservice.SyncMessage.ISent|null);

        /** SyncMessage contacts. */
        public contacts?: (signalservice.SyncMessage.IContacts|null);

        /** SyncMessage request. */
        public request?: (signalservice.SyncMessage.IRequest|null);

        /** SyncMessage read. */
        public read: signalservice.SyncMessage.IRead[];

        /** SyncMessage blocked. */
        public blocked?: (signalservice.SyncMessage.IBlocked|null);

        /** SyncMessage verified. */
        public verified?: (signalservice.IVerified|null);

        /** SyncMessage configuration. */
        public configuration?: (signalservice.SyncMessage.IConfiguration|null);

        /** SyncMessage padding. */
        public padding: Uint8Array;

        /** SyncMessage stickerPackOperation. */
        public stickerPackOperation: signalservice.SyncMessage.IStickerPackOperation[];

        /** SyncMessage viewOnceOpen. */
        public viewOnceOpen?: (signalservice.SyncMessage.IViewOnceOpen|null);

        /** SyncMessage fetchLatest. */
        public fetchLatest?: (signalservice.SyncMessage.IFetchLatest|null);

        /** SyncMessage keys. */
        public keys?: (signalservice.SyncMessage.IKeys|null);

        /** SyncMessage messageRequestResponse. */
        public messageRequestResponse?: (signalservice.SyncMessage.IMessageRequestResponse|null);

        /** SyncMessage viewed. */
        public viewed: signalservice.SyncMessage.IViewed[];

        /** SyncMessage pniChangeNumber. */
        public pniChangeNumber?: (signalservice.SyncMessage.IPniChangeNumber|null);

        /** SyncMessage callEvent. */
        public callEvent?: (signalservice.SyncMessage.ICallEvent|null);

        /** SyncMessage callLinkUpdate. */
        public callLinkUpdate?: (signalservice.SyncMessage.ICallLinkUpdate|null);

        /** SyncMessage callLogEvent. */
        public callLogEvent?: (signalservice.SyncMessage.ICallLogEvent|null);

        /** SyncMessage deleteForMe. */
        public deleteForMe?: (signalservice.SyncMessage.IDeleteForMe|null);

        /** SyncMessage deviceNameChange. */
        public deviceNameChange?: (signalservice.SyncMessage.IDeviceNameChange|null);

        /** SyncMessage attachmentBackfillRequest. */
        public attachmentBackfillRequest?: (signalservice.SyncMessage.IAttachmentBackfillRequest|null);

        /** SyncMessage attachmentBackfillResponse. */
        public attachmentBackfillResponse?: (signalservice.SyncMessage.IAttachmentBackfillResponse|null);

        /**
         * Creates a new SyncMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SyncMessage instance
         */
        public static create(properties?: signalservice.ISyncMessage): signalservice.SyncMessage;

        /**
         * Encodes the specified SyncMessage message. Does not implicitly {@link signalservice.SyncMessage.verify|verify} messages.
         * @param message SyncMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ISyncMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified SyncMessage message, length delimited. Does not implicitly {@link signalservice.SyncMessage.verify|verify} messages.
         * @param message SyncMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ISyncMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a SyncMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SyncMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage;

        /**
         * Decodes a SyncMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SyncMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage;

        /**
         * Verifies a SyncMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a SyncMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SyncMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage;

        /**
         * Creates a plain object from a SyncMessage message. Also converts values to other types if specified.
         * @param message SyncMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.SyncMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this SyncMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SyncMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace SyncMessage {

        /** Properties of a Sent. */
        interface ISent {

            /** Sent destinationE164 */
            destinationE164?: (string|null);

            /** Sent destinationServiceId */
            destinationServiceId?: (string|null);

            /** Sent timestamp */
            timestamp?: (Long|null);

            /** Sent message */
            message?: (signalservice.IDataMessage|null);

            /** Sent expirationStartTimestamp */
            expirationStartTimestamp?: (Long|null);

            /** Sent unidentifiedStatus */
            unidentifiedStatus?: (signalservice.SyncMessage.Sent.IUnidentifiedDeliveryStatus[]|null);

            /** Sent isRecipientUpdate */
            isRecipientUpdate?: (boolean|null);

            /** Sent storyMessage */
            storyMessage?: (signalservice.IStoryMessage|null);

            /** Sent storyMessageRecipients */
            storyMessageRecipients?: (signalservice.SyncMessage.Sent.IStoryMessageRecipient[]|null);

            /** Sent editMessage */
            editMessage?: (signalservice.IEditMessage|null);
        }

        /** Represents a Sent. */
        class Sent implements ISent {

            /**
             * Constructs a new Sent.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.ISent);

            /** Sent destinationE164. */
            public destinationE164: string;

            /** Sent destinationServiceId. */
            public destinationServiceId: string;

            /** Sent timestamp. */
            public timestamp: Long;

            /** Sent message. */
            public message?: (signalservice.IDataMessage|null);

            /** Sent expirationStartTimestamp. */
            public expirationStartTimestamp: Long;

            /** Sent unidentifiedStatus. */
            public unidentifiedStatus: signalservice.SyncMessage.Sent.IUnidentifiedDeliveryStatus[];

            /** Sent isRecipientUpdate. */
            public isRecipientUpdate: boolean;

            /** Sent storyMessage. */
            public storyMessage?: (signalservice.IStoryMessage|null);

            /** Sent storyMessageRecipients. */
            public storyMessageRecipients: signalservice.SyncMessage.Sent.IStoryMessageRecipient[];

            /** Sent editMessage. */
            public editMessage?: (signalservice.IEditMessage|null);

            /**
             * Creates a new Sent instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Sent instance
             */
            public static create(properties?: signalservice.SyncMessage.ISent): signalservice.SyncMessage.Sent;

            /**
             * Encodes the specified Sent message. Does not implicitly {@link signalservice.SyncMessage.Sent.verify|verify} messages.
             * @param message Sent message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.ISent, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Sent message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Sent.verify|verify} messages.
             * @param message Sent message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.ISent, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Sent message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Sent
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Sent;

            /**
             * Decodes a Sent message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Sent
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Sent;

            /**
             * Verifies a Sent message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Sent message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Sent
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Sent;

            /**
             * Creates a plain object from a Sent message. Also converts values to other types if specified.
             * @param message Sent
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Sent, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Sent to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Sent
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Sent {

            /** Properties of an UnidentifiedDeliveryStatus. */
            interface IUnidentifiedDeliveryStatus {

                /** UnidentifiedDeliveryStatus destinationServiceId */
                destinationServiceId?: (string|null);

                /** UnidentifiedDeliveryStatus unidentified */
                unidentified?: (boolean|null);

                /** UnidentifiedDeliveryStatus destinationPniIdentityKey */
                destinationPniIdentityKey?: (Uint8Array|null);
            }

            /** Represents an UnidentifiedDeliveryStatus. */
            class UnidentifiedDeliveryStatus implements IUnidentifiedDeliveryStatus {

                /**
                 * Constructs a new UnidentifiedDeliveryStatus.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.Sent.IUnidentifiedDeliveryStatus);

                /** UnidentifiedDeliveryStatus destinationServiceId. */
                public destinationServiceId: string;

                /** UnidentifiedDeliveryStatus unidentified. */
                public unidentified: boolean;

                /** UnidentifiedDeliveryStatus destinationPniIdentityKey. */
                public destinationPniIdentityKey: Uint8Array;

                /**
                 * Creates a new UnidentifiedDeliveryStatus instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns UnidentifiedDeliveryStatus instance
                 */
                public static create(properties?: signalservice.SyncMessage.Sent.IUnidentifiedDeliveryStatus): signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus;

                /**
                 * Encodes the specified UnidentifiedDeliveryStatus message. Does not implicitly {@link signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus.verify|verify} messages.
                 * @param message UnidentifiedDeliveryStatus message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.Sent.IUnidentifiedDeliveryStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified UnidentifiedDeliveryStatus message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus.verify|verify} messages.
                 * @param message UnidentifiedDeliveryStatus message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.Sent.IUnidentifiedDeliveryStatus, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an UnidentifiedDeliveryStatus message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns UnidentifiedDeliveryStatus
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus;

                /**
                 * Decodes an UnidentifiedDeliveryStatus message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns UnidentifiedDeliveryStatus
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus;

                /**
                 * Verifies an UnidentifiedDeliveryStatus message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an UnidentifiedDeliveryStatus message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns UnidentifiedDeliveryStatus
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus;

                /**
                 * Creates a plain object from an UnidentifiedDeliveryStatus message. Also converts values to other types if specified.
                 * @param message UnidentifiedDeliveryStatus
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.Sent.UnidentifiedDeliveryStatus, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this UnidentifiedDeliveryStatus to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for UnidentifiedDeliveryStatus
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a StoryMessageRecipient. */
            interface IStoryMessageRecipient {

                /** StoryMessageRecipient destinationServiceId */
                destinationServiceId?: (string|null);

                /** StoryMessageRecipient distributionListIds */
                distributionListIds?: (string[]|null);

                /** StoryMessageRecipient isAllowedToReply */
                isAllowedToReply?: (boolean|null);
            }

            /** Represents a StoryMessageRecipient. */
            class StoryMessageRecipient implements IStoryMessageRecipient {

                /**
                 * Constructs a new StoryMessageRecipient.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.Sent.IStoryMessageRecipient);

                /** StoryMessageRecipient destinationServiceId. */
                public destinationServiceId: string;

                /** StoryMessageRecipient distributionListIds. */
                public distributionListIds: string[];

                /** StoryMessageRecipient isAllowedToReply. */
                public isAllowedToReply: boolean;

                /**
                 * Creates a new StoryMessageRecipient instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns StoryMessageRecipient instance
                 */
                public static create(properties?: signalservice.SyncMessage.Sent.IStoryMessageRecipient): signalservice.SyncMessage.Sent.StoryMessageRecipient;

                /**
                 * Encodes the specified StoryMessageRecipient message. Does not implicitly {@link signalservice.SyncMessage.Sent.StoryMessageRecipient.verify|verify} messages.
                 * @param message StoryMessageRecipient message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.Sent.IStoryMessageRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified StoryMessageRecipient message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Sent.StoryMessageRecipient.verify|verify} messages.
                 * @param message StoryMessageRecipient message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.Sent.IStoryMessageRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a StoryMessageRecipient message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns StoryMessageRecipient
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Sent.StoryMessageRecipient;

                /**
                 * Decodes a StoryMessageRecipient message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns StoryMessageRecipient
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Sent.StoryMessageRecipient;

                /**
                 * Verifies a StoryMessageRecipient message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a StoryMessageRecipient message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns StoryMessageRecipient
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Sent.StoryMessageRecipient;

                /**
                 * Creates a plain object from a StoryMessageRecipient message. Also converts values to other types if specified.
                 * @param message StoryMessageRecipient
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.Sent.StoryMessageRecipient, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this StoryMessageRecipient to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for StoryMessageRecipient
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a Contacts. */
        interface IContacts {

            /** Contacts blob */
            blob?: (signalservice.IAttachmentPointer|null);

            /** Contacts complete */
            complete?: (boolean|null);
        }

        /** Represents a Contacts. */
        class Contacts implements IContacts {

            /**
             * Constructs a new Contacts.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IContacts);

            /** Contacts blob. */
            public blob?: (signalservice.IAttachmentPointer|null);

            /** Contacts complete. */
            public complete: boolean;

            /**
             * Creates a new Contacts instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Contacts instance
             */
            public static create(properties?: signalservice.SyncMessage.IContacts): signalservice.SyncMessage.Contacts;

            /**
             * Encodes the specified Contacts message. Does not implicitly {@link signalservice.SyncMessage.Contacts.verify|verify} messages.
             * @param message Contacts message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IContacts, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Contacts message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Contacts.verify|verify} messages.
             * @param message Contacts message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IContacts, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Contacts message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Contacts
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Contacts;

            /**
             * Decodes a Contacts message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Contacts
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Contacts;

            /**
             * Verifies a Contacts message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Contacts message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Contacts
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Contacts;

            /**
             * Creates a plain object from a Contacts message. Also converts values to other types if specified.
             * @param message Contacts
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Contacts, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Contacts to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Contacts
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Blocked. */
        interface IBlocked {

            /** Blocked numbers */
            numbers?: (string[]|null);

            /** Blocked acis */
            acis?: (string[]|null);

            /** Blocked groupIds */
            groupIds?: (Uint8Array[]|null);
        }

        /** Represents a Blocked. */
        class Blocked implements IBlocked {

            /**
             * Constructs a new Blocked.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IBlocked);

            /** Blocked numbers. */
            public numbers: string[];

            /** Blocked acis. */
            public acis: string[];

            /** Blocked groupIds. */
            public groupIds: Uint8Array[];

            /**
             * Creates a new Blocked instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Blocked instance
             */
            public static create(properties?: signalservice.SyncMessage.IBlocked): signalservice.SyncMessage.Blocked;

            /**
             * Encodes the specified Blocked message. Does not implicitly {@link signalservice.SyncMessage.Blocked.verify|verify} messages.
             * @param message Blocked message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IBlocked, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Blocked message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Blocked.verify|verify} messages.
             * @param message Blocked message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IBlocked, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Blocked message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Blocked
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Blocked;

            /**
             * Decodes a Blocked message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Blocked
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Blocked;

            /**
             * Verifies a Blocked message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Blocked message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Blocked
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Blocked;

            /**
             * Creates a plain object from a Blocked message. Also converts values to other types if specified.
             * @param message Blocked
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Blocked, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Blocked to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Blocked
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Request. */
        interface IRequest {

            /** Request type */
            type?: (signalservice.SyncMessage.Request.Type|null);
        }

        /** Represents a Request. */
        class Request implements IRequest {

            /**
             * Constructs a new Request.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IRequest);

            /** Request type. */
            public type: signalservice.SyncMessage.Request.Type;

            /**
             * Creates a new Request instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Request instance
             */
            public static create(properties?: signalservice.SyncMessage.IRequest): signalservice.SyncMessage.Request;

            /**
             * Encodes the specified Request message. Does not implicitly {@link signalservice.SyncMessage.Request.verify|verify} messages.
             * @param message Request message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Request message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Request.verify|verify} messages.
             * @param message Request message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Request message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Request
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Request;

            /**
             * Decodes a Request message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Request
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Request;

            /**
             * Verifies a Request message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Request message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Request
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Request;

            /**
             * Creates a plain object from a Request message. Also converts values to other types if specified.
             * @param message Request
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Request, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Request to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Request
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Request {

            /** Type enum. */
            enum Type {
                UNKNOWN = 0,
                CONTACTS = 1,
                BLOCKED = 3,
                CONFIGURATION = 4,
                KEYS = 5
            }
        }

        /** Properties of a Read. */
        interface IRead {

            /** Read senderAci */
            senderAci?: (string|null);

            /** Read timestamp */
            timestamp?: (Long|null);
        }

        /** Represents a Read. */
        class Read implements IRead {

            /**
             * Constructs a new Read.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IRead);

            /** Read senderAci. */
            public senderAci: string;

            /** Read timestamp. */
            public timestamp: Long;

            /**
             * Creates a new Read instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Read instance
             */
            public static create(properties?: signalservice.SyncMessage.IRead): signalservice.SyncMessage.Read;

            /**
             * Encodes the specified Read message. Does not implicitly {@link signalservice.SyncMessage.Read.verify|verify} messages.
             * @param message Read message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IRead, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Read message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Read.verify|verify} messages.
             * @param message Read message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IRead, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Read message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Read
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Read;

            /**
             * Decodes a Read message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Read
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Read;

            /**
             * Verifies a Read message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Read message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Read
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Read;

            /**
             * Creates a plain object from a Read message. Also converts values to other types if specified.
             * @param message Read
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Read, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Read to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Read
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Viewed. */
        interface IViewed {

            /** Viewed senderAci */
            senderAci?: (string|null);

            /** Viewed timestamp */
            timestamp?: (Long|null);
        }

        /** Represents a Viewed. */
        class Viewed implements IViewed {

            /**
             * Constructs a new Viewed.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IViewed);

            /** Viewed senderAci. */
            public senderAci: string;

            /** Viewed timestamp. */
            public timestamp: Long;

            /**
             * Creates a new Viewed instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Viewed instance
             */
            public static create(properties?: signalservice.SyncMessage.IViewed): signalservice.SyncMessage.Viewed;

            /**
             * Encodes the specified Viewed message. Does not implicitly {@link signalservice.SyncMessage.Viewed.verify|verify} messages.
             * @param message Viewed message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IViewed, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Viewed message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Viewed.verify|verify} messages.
             * @param message Viewed message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IViewed, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Viewed message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Viewed
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Viewed;

            /**
             * Decodes a Viewed message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Viewed
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Viewed;

            /**
             * Verifies a Viewed message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Viewed message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Viewed
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Viewed;

            /**
             * Creates a plain object from a Viewed message. Also converts values to other types if specified.
             * @param message Viewed
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Viewed, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Viewed to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Viewed
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a Configuration. */
        interface IConfiguration {

            /** Configuration readReceipts */
            readReceipts?: (boolean|null);

            /** Configuration unidentifiedDeliveryIndicators */
            unidentifiedDeliveryIndicators?: (boolean|null);

            /** Configuration typingIndicators */
            typingIndicators?: (boolean|null);

            /** Configuration provisioningVersion */
            provisioningVersion?: (number|null);

            /** Configuration linkPreviews */
            linkPreviews?: (boolean|null);
        }

        /** Represents a Configuration. */
        class Configuration implements IConfiguration {

            /**
             * Constructs a new Configuration.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IConfiguration);

            /** Configuration readReceipts. */
            public readReceipts: boolean;

            /** Configuration unidentifiedDeliveryIndicators. */
            public unidentifiedDeliveryIndicators: boolean;

            /** Configuration typingIndicators. */
            public typingIndicators: boolean;

            /** Configuration provisioningVersion. */
            public provisioningVersion: number;

            /** Configuration linkPreviews. */
            public linkPreviews: boolean;

            /**
             * Creates a new Configuration instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Configuration instance
             */
            public static create(properties?: signalservice.SyncMessage.IConfiguration): signalservice.SyncMessage.Configuration;

            /**
             * Encodes the specified Configuration message. Does not implicitly {@link signalservice.SyncMessage.Configuration.verify|verify} messages.
             * @param message Configuration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IConfiguration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Configuration message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Configuration.verify|verify} messages.
             * @param message Configuration message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IConfiguration, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Configuration message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Configuration
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Configuration;

            /**
             * Decodes a Configuration message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Configuration
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Configuration;

            /**
             * Verifies a Configuration message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Configuration message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Configuration
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Configuration;

            /**
             * Creates a plain object from a Configuration message. Also converts values to other types if specified.
             * @param message Configuration
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Configuration, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Configuration to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Configuration
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a StickerPackOperation. */
        interface IStickerPackOperation {

            /** StickerPackOperation packId */
            packId?: (Uint8Array|null);

            /** StickerPackOperation packKey */
            packKey?: (Uint8Array|null);

            /** StickerPackOperation type */
            type?: (signalservice.SyncMessage.StickerPackOperation.Type|null);
        }

        /** Represents a StickerPackOperation. */
        class StickerPackOperation implements IStickerPackOperation {

            /**
             * Constructs a new StickerPackOperation.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IStickerPackOperation);

            /** StickerPackOperation packId. */
            public packId: Uint8Array;

            /** StickerPackOperation packKey. */
            public packKey: Uint8Array;

            /** StickerPackOperation type. */
            public type: signalservice.SyncMessage.StickerPackOperation.Type;

            /**
             * Creates a new StickerPackOperation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns StickerPackOperation instance
             */
            public static create(properties?: signalservice.SyncMessage.IStickerPackOperation): signalservice.SyncMessage.StickerPackOperation;

            /**
             * Encodes the specified StickerPackOperation message. Does not implicitly {@link signalservice.SyncMessage.StickerPackOperation.verify|verify} messages.
             * @param message StickerPackOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IStickerPackOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified StickerPackOperation message, length delimited. Does not implicitly {@link signalservice.SyncMessage.StickerPackOperation.verify|verify} messages.
             * @param message StickerPackOperation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IStickerPackOperation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a StickerPackOperation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns StickerPackOperation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.StickerPackOperation;

            /**
             * Decodes a StickerPackOperation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns StickerPackOperation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.StickerPackOperation;

            /**
             * Verifies a StickerPackOperation message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a StickerPackOperation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns StickerPackOperation
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.StickerPackOperation;

            /**
             * Creates a plain object from a StickerPackOperation message. Also converts values to other types if specified.
             * @param message StickerPackOperation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.StickerPackOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this StickerPackOperation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for StickerPackOperation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace StickerPackOperation {

            /** Type enum. */
            enum Type {
                INSTALL = 0,
                REMOVE = 1
            }
        }

        /** Properties of a ViewOnceOpen. */
        interface IViewOnceOpen {

            /** ViewOnceOpen senderAci */
            senderAci?: (string|null);

            /** ViewOnceOpen timestamp */
            timestamp?: (Long|null);
        }

        /** Represents a ViewOnceOpen. */
        class ViewOnceOpen implements IViewOnceOpen {

            /**
             * Constructs a new ViewOnceOpen.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IViewOnceOpen);

            /** ViewOnceOpen senderAci. */
            public senderAci: string;

            /** ViewOnceOpen timestamp. */
            public timestamp: Long;

            /**
             * Creates a new ViewOnceOpen instance using the specified properties.
             * @param [properties] Properties to set
             * @returns ViewOnceOpen instance
             */
            public static create(properties?: signalservice.SyncMessage.IViewOnceOpen): signalservice.SyncMessage.ViewOnceOpen;

            /**
             * Encodes the specified ViewOnceOpen message. Does not implicitly {@link signalservice.SyncMessage.ViewOnceOpen.verify|verify} messages.
             * @param message ViewOnceOpen message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IViewOnceOpen, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified ViewOnceOpen message, length delimited. Does not implicitly {@link signalservice.SyncMessage.ViewOnceOpen.verify|verify} messages.
             * @param message ViewOnceOpen message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IViewOnceOpen, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a ViewOnceOpen message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns ViewOnceOpen
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.ViewOnceOpen;

            /**
             * Decodes a ViewOnceOpen message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns ViewOnceOpen
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.ViewOnceOpen;

            /**
             * Verifies a ViewOnceOpen message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a ViewOnceOpen message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns ViewOnceOpen
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.ViewOnceOpen;

            /**
             * Creates a plain object from a ViewOnceOpen message. Also converts values to other types if specified.
             * @param message ViewOnceOpen
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.ViewOnceOpen, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this ViewOnceOpen to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for ViewOnceOpen
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a FetchLatest. */
        interface IFetchLatest {

            /** FetchLatest type */
            type?: (signalservice.SyncMessage.FetchLatest.Type|null);
        }

        /** Represents a FetchLatest. */
        class FetchLatest implements IFetchLatest {

            /**
             * Constructs a new FetchLatest.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IFetchLatest);

            /** FetchLatest type. */
            public type: signalservice.SyncMessage.FetchLatest.Type;

            /**
             * Creates a new FetchLatest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns FetchLatest instance
             */
            public static create(properties?: signalservice.SyncMessage.IFetchLatest): signalservice.SyncMessage.FetchLatest;

            /**
             * Encodes the specified FetchLatest message. Does not implicitly {@link signalservice.SyncMessage.FetchLatest.verify|verify} messages.
             * @param message FetchLatest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IFetchLatest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified FetchLatest message, length delimited. Does not implicitly {@link signalservice.SyncMessage.FetchLatest.verify|verify} messages.
             * @param message FetchLatest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IFetchLatest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a FetchLatest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns FetchLatest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.FetchLatest;

            /**
             * Decodes a FetchLatest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns FetchLatest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.FetchLatest;

            /**
             * Verifies a FetchLatest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a FetchLatest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns FetchLatest
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.FetchLatest;

            /**
             * Creates a plain object from a FetchLatest message. Also converts values to other types if specified.
             * @param message FetchLatest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.FetchLatest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this FetchLatest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for FetchLatest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace FetchLatest {

            /** Type enum. */
            enum Type {
                UNKNOWN = 0,
                LOCAL_PROFILE = 1,
                STORAGE_MANIFEST = 2,
                SUBSCRIPTION_STATUS = 3
            }
        }

        /** Properties of a Keys. */
        interface IKeys {

            /** Keys master */
            master?: (Uint8Array|null);

            /** Keys accountEntropyPool */
            accountEntropyPool?: (string|null);

            /** Keys mediaRootBackupKey */
            mediaRootBackupKey?: (Uint8Array|null);
        }

        /** Represents a Keys. */
        class Keys implements IKeys {

            /**
             * Constructs a new Keys.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IKeys);

            /** Keys master. */
            public master: Uint8Array;

            /** Keys accountEntropyPool. */
            public accountEntropyPool: string;

            /** Keys mediaRootBackupKey. */
            public mediaRootBackupKey: Uint8Array;

            /**
             * Creates a new Keys instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Keys instance
             */
            public static create(properties?: signalservice.SyncMessage.IKeys): signalservice.SyncMessage.Keys;

            /**
             * Encodes the specified Keys message. Does not implicitly {@link signalservice.SyncMessage.Keys.verify|verify} messages.
             * @param message Keys message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IKeys, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Keys message, length delimited. Does not implicitly {@link signalservice.SyncMessage.Keys.verify|verify} messages.
             * @param message Keys message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IKeys, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Keys message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Keys
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.Keys;

            /**
             * Decodes a Keys message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Keys
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.Keys;

            /**
             * Verifies a Keys message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Keys message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Keys
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.Keys;

            /**
             * Creates a plain object from a Keys message. Also converts values to other types if specified.
             * @param message Keys
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.Keys, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Keys to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Keys
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a PniIdentity. */
        interface IPniIdentity {

            /** PniIdentity publicKey */
            publicKey?: (Uint8Array|null);

            /** PniIdentity privateKey */
            privateKey?: (Uint8Array|null);
        }

        /** Represents a PniIdentity. */
        class PniIdentity implements IPniIdentity {

            /**
             * Constructs a new PniIdentity.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IPniIdentity);

            /** PniIdentity publicKey. */
            public publicKey: Uint8Array;

            /** PniIdentity privateKey. */
            public privateKey: Uint8Array;

            /**
             * Creates a new PniIdentity instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PniIdentity instance
             */
            public static create(properties?: signalservice.SyncMessage.IPniIdentity): signalservice.SyncMessage.PniIdentity;

            /**
             * Encodes the specified PniIdentity message. Does not implicitly {@link signalservice.SyncMessage.PniIdentity.verify|verify} messages.
             * @param message PniIdentity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IPniIdentity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PniIdentity message, length delimited. Does not implicitly {@link signalservice.SyncMessage.PniIdentity.verify|verify} messages.
             * @param message PniIdentity message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IPniIdentity, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PniIdentity message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PniIdentity
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.PniIdentity;

            /**
             * Decodes a PniIdentity message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PniIdentity
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.PniIdentity;

            /**
             * Verifies a PniIdentity message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PniIdentity message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PniIdentity
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.PniIdentity;

            /**
             * Creates a plain object from a PniIdentity message. Also converts values to other types if specified.
             * @param message PniIdentity
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.PniIdentity, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PniIdentity to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PniIdentity
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a MessageRequestResponse. */
        interface IMessageRequestResponse {

            /** MessageRequestResponse threadAci */
            threadAci?: (string|null);

            /** MessageRequestResponse groupId */
            groupId?: (Uint8Array|null);

            /** MessageRequestResponse type */
            type?: (signalservice.SyncMessage.MessageRequestResponse.Type|null);
        }

        /** Represents a MessageRequestResponse. */
        class MessageRequestResponse implements IMessageRequestResponse {

            /**
             * Constructs a new MessageRequestResponse.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IMessageRequestResponse);

            /** MessageRequestResponse threadAci. */
            public threadAci: string;

            /** MessageRequestResponse groupId. */
            public groupId: Uint8Array;

            /** MessageRequestResponse type. */
            public type: signalservice.SyncMessage.MessageRequestResponse.Type;

            /**
             * Creates a new MessageRequestResponse instance using the specified properties.
             * @param [properties] Properties to set
             * @returns MessageRequestResponse instance
             */
            public static create(properties?: signalservice.SyncMessage.IMessageRequestResponse): signalservice.SyncMessage.MessageRequestResponse;

            /**
             * Encodes the specified MessageRequestResponse message. Does not implicitly {@link signalservice.SyncMessage.MessageRequestResponse.verify|verify} messages.
             * @param message MessageRequestResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IMessageRequestResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified MessageRequestResponse message, length delimited. Does not implicitly {@link signalservice.SyncMessage.MessageRequestResponse.verify|verify} messages.
             * @param message MessageRequestResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IMessageRequestResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a MessageRequestResponse message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns MessageRequestResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.MessageRequestResponse;

            /**
             * Decodes a MessageRequestResponse message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns MessageRequestResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.MessageRequestResponse;

            /**
             * Verifies a MessageRequestResponse message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a MessageRequestResponse message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns MessageRequestResponse
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.MessageRequestResponse;

            /**
             * Creates a plain object from a MessageRequestResponse message. Also converts values to other types if specified.
             * @param message MessageRequestResponse
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.MessageRequestResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this MessageRequestResponse to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for MessageRequestResponse
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace MessageRequestResponse {

            /** Type enum. */
            enum Type {
                UNKNOWN = 0,
                ACCEPT = 1,
                DELETE = 2,
                BLOCK = 3,
                BLOCK_AND_DELETE = 4,
                SPAM = 5,
                BLOCK_AND_SPAM = 6
            }
        }

        /** Properties of a PniChangeNumber. */
        interface IPniChangeNumber {

            /** PniChangeNumber identityKeyPair */
            identityKeyPair?: (Uint8Array|null);

            /** PniChangeNumber signedPreKey */
            signedPreKey?: (Uint8Array|null);

            /** PniChangeNumber lastResortKyberPreKey */
            lastResortKyberPreKey?: (Uint8Array|null);

            /** PniChangeNumber registrationId */
            registrationId?: (number|null);

            /** PniChangeNumber newE164 */
            newE164?: (string|null);
        }

        /** Represents a PniChangeNumber. */
        class PniChangeNumber implements IPniChangeNumber {

            /**
             * Constructs a new PniChangeNumber.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IPniChangeNumber);

            /** PniChangeNumber identityKeyPair. */
            public identityKeyPair: Uint8Array;

            /** PniChangeNumber signedPreKey. */
            public signedPreKey: Uint8Array;

            /** PniChangeNumber lastResortKyberPreKey. */
            public lastResortKyberPreKey: Uint8Array;

            /** PniChangeNumber registrationId. */
            public registrationId: number;

            /** PniChangeNumber newE164. */
            public newE164: string;

            /**
             * Creates a new PniChangeNumber instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PniChangeNumber instance
             */
            public static create(properties?: signalservice.SyncMessage.IPniChangeNumber): signalservice.SyncMessage.PniChangeNumber;

            /**
             * Encodes the specified PniChangeNumber message. Does not implicitly {@link signalservice.SyncMessage.PniChangeNumber.verify|verify} messages.
             * @param message PniChangeNumber message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IPniChangeNumber, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PniChangeNumber message, length delimited. Does not implicitly {@link signalservice.SyncMessage.PniChangeNumber.verify|verify} messages.
             * @param message PniChangeNumber message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IPniChangeNumber, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PniChangeNumber message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PniChangeNumber
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.PniChangeNumber;

            /**
             * Decodes a PniChangeNumber message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PniChangeNumber
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.PniChangeNumber;

            /**
             * Verifies a PniChangeNumber message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PniChangeNumber message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PniChangeNumber
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.PniChangeNumber;

            /**
             * Creates a plain object from a PniChangeNumber message. Also converts values to other types if specified.
             * @param message PniChangeNumber
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.PniChangeNumber, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PniChangeNumber to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PniChangeNumber
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a CallEvent. */
        interface ICallEvent {

            /** CallEvent peerId */
            peerId?: (Uint8Array|null);

            /** CallEvent callId */
            callId?: (Long|null);

            /** CallEvent timestamp */
            timestamp?: (Long|null);

            /** CallEvent type */
            type?: (signalservice.SyncMessage.CallEvent.Type|null);

            /** CallEvent direction */
            direction?: (signalservice.SyncMessage.CallEvent.Direction|null);

            /** CallEvent event */
            event?: (signalservice.SyncMessage.CallEvent.Event|null);
        }

        /** Represents a CallEvent. */
        class CallEvent implements ICallEvent {

            /**
             * Constructs a new CallEvent.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.ICallEvent);

            /** CallEvent peerId. */
            public peerId: Uint8Array;

            /** CallEvent callId. */
            public callId: Long;

            /** CallEvent timestamp. */
            public timestamp: Long;

            /** CallEvent type. */
            public type: signalservice.SyncMessage.CallEvent.Type;

            /** CallEvent direction. */
            public direction: signalservice.SyncMessage.CallEvent.Direction;

            /** CallEvent event. */
            public event: signalservice.SyncMessage.CallEvent.Event;

            /**
             * Creates a new CallEvent instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CallEvent instance
             */
            public static create(properties?: signalservice.SyncMessage.ICallEvent): signalservice.SyncMessage.CallEvent;

            /**
             * Encodes the specified CallEvent message. Does not implicitly {@link signalservice.SyncMessage.CallEvent.verify|verify} messages.
             * @param message CallEvent message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.ICallEvent, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CallEvent message, length delimited. Does not implicitly {@link signalservice.SyncMessage.CallEvent.verify|verify} messages.
             * @param message CallEvent message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.ICallEvent, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CallEvent message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CallEvent
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.CallEvent;

            /**
             * Decodes a CallEvent message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CallEvent
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.CallEvent;

            /**
             * Verifies a CallEvent message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CallEvent message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CallEvent
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.CallEvent;

            /**
             * Creates a plain object from a CallEvent message. Also converts values to other types if specified.
             * @param message CallEvent
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.CallEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CallEvent to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CallEvent
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace CallEvent {

            /** Type enum. */
            enum Type {
                UNKNOWN_TYPE = 0,
                AUDIO_CALL = 1,
                VIDEO_CALL = 2,
                GROUP_CALL = 3,
                AD_HOC_CALL = 4
            }

            /** Direction enum. */
            enum Direction {
                UNKNOWN_DIRECTION = 0,
                INCOMING = 1,
                OUTGOING = 2
            }

            /** Event enum. */
            enum Event {
                UNKNOWN_EVENT = 0,
                ACCEPTED = 1,
                NOT_ACCEPTED = 2,
                DELETE = 3,
                OBSERVED = 4
            }
        }

        /** Properties of a CallLinkUpdate. */
        interface ICallLinkUpdate {

            /** CallLinkUpdate rootKey */
            rootKey?: (Uint8Array|null);

            /** CallLinkUpdate adminPasskey */
            adminPasskey?: (Uint8Array|null);

            /** CallLinkUpdate type */
            type?: (signalservice.SyncMessage.CallLinkUpdate.Type|null);
        }

        /** Represents a CallLinkUpdate. */
        class CallLinkUpdate implements ICallLinkUpdate {

            /**
             * Constructs a new CallLinkUpdate.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.ICallLinkUpdate);

            /** CallLinkUpdate rootKey. */
            public rootKey: Uint8Array;

            /** CallLinkUpdate adminPasskey. */
            public adminPasskey: Uint8Array;

            /** CallLinkUpdate type. */
            public type: signalservice.SyncMessage.CallLinkUpdate.Type;

            /**
             * Creates a new CallLinkUpdate instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CallLinkUpdate instance
             */
            public static create(properties?: signalservice.SyncMessage.ICallLinkUpdate): signalservice.SyncMessage.CallLinkUpdate;

            /**
             * Encodes the specified CallLinkUpdate message. Does not implicitly {@link signalservice.SyncMessage.CallLinkUpdate.verify|verify} messages.
             * @param message CallLinkUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.ICallLinkUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CallLinkUpdate message, length delimited. Does not implicitly {@link signalservice.SyncMessage.CallLinkUpdate.verify|verify} messages.
             * @param message CallLinkUpdate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.ICallLinkUpdate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CallLinkUpdate message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CallLinkUpdate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.CallLinkUpdate;

            /**
             * Decodes a CallLinkUpdate message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CallLinkUpdate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.CallLinkUpdate;

            /**
             * Verifies a CallLinkUpdate message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CallLinkUpdate message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CallLinkUpdate
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.CallLinkUpdate;

            /**
             * Creates a plain object from a CallLinkUpdate message. Also converts values to other types if specified.
             * @param message CallLinkUpdate
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.CallLinkUpdate, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CallLinkUpdate to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CallLinkUpdate
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace CallLinkUpdate {

            /** Type enum. */
            enum Type {
                UPDATE = 0
            }
        }

        /** Properties of a CallLogEvent. */
        interface ICallLogEvent {

            /** CallLogEvent type */
            type?: (signalservice.SyncMessage.CallLogEvent.Type|null);

            /** CallLogEvent timestamp */
            timestamp?: (Long|null);

            /** CallLogEvent peerId */
            peerId?: (Uint8Array|null);

            /** CallLogEvent callId */
            callId?: (Long|null);
        }

        /** Represents a CallLogEvent. */
        class CallLogEvent implements ICallLogEvent {

            /**
             * Constructs a new CallLogEvent.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.ICallLogEvent);

            /** CallLogEvent type. */
            public type: signalservice.SyncMessage.CallLogEvent.Type;

            /** CallLogEvent timestamp. */
            public timestamp: Long;

            /** CallLogEvent peerId. */
            public peerId: Uint8Array;

            /** CallLogEvent callId. */
            public callId: Long;

            /**
             * Creates a new CallLogEvent instance using the specified properties.
             * @param [properties] Properties to set
             * @returns CallLogEvent instance
             */
            public static create(properties?: signalservice.SyncMessage.ICallLogEvent): signalservice.SyncMessage.CallLogEvent;

            /**
             * Encodes the specified CallLogEvent message. Does not implicitly {@link signalservice.SyncMessage.CallLogEvent.verify|verify} messages.
             * @param message CallLogEvent message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.ICallLogEvent, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified CallLogEvent message, length delimited. Does not implicitly {@link signalservice.SyncMessage.CallLogEvent.verify|verify} messages.
             * @param message CallLogEvent message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.ICallLogEvent, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a CallLogEvent message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns CallLogEvent
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.CallLogEvent;

            /**
             * Decodes a CallLogEvent message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns CallLogEvent
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.CallLogEvent;

            /**
             * Verifies a CallLogEvent message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a CallLogEvent message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns CallLogEvent
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.CallLogEvent;

            /**
             * Creates a plain object from a CallLogEvent message. Also converts values to other types if specified.
             * @param message CallLogEvent
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.CallLogEvent, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this CallLogEvent to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for CallLogEvent
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace CallLogEvent {

            /** Type enum. */
            enum Type {
                CLEAR = 0,
                MARKED_AS_READ = 1,
                MARKED_AS_READ_IN_CONVERSATION = 2,
                CLEAR_IN_CONVERSATION = 3
            }
        }

        /** Properties of a DeleteForMe. */
        interface IDeleteForMe {

            /** DeleteForMe messageDeletes */
            messageDeletes?: (signalservice.SyncMessage.DeleteForMe.IMessageDeletes[]|null);

            /** DeleteForMe conversationDeletes */
            conversationDeletes?: (signalservice.SyncMessage.DeleteForMe.IConversationDelete[]|null);

            /** DeleteForMe localOnlyConversationDeletes */
            localOnlyConversationDeletes?: (signalservice.SyncMessage.DeleteForMe.ILocalOnlyConversationDelete[]|null);

            /** DeleteForMe attachmentDeletes */
            attachmentDeletes?: (signalservice.SyncMessage.DeleteForMe.IAttachmentDelete[]|null);
        }

        /** Represents a DeleteForMe. */
        class DeleteForMe implements IDeleteForMe {

            /**
             * Constructs a new DeleteForMe.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IDeleteForMe);

            /** DeleteForMe messageDeletes. */
            public messageDeletes: signalservice.SyncMessage.DeleteForMe.IMessageDeletes[];

            /** DeleteForMe conversationDeletes. */
            public conversationDeletes: signalservice.SyncMessage.DeleteForMe.IConversationDelete[];

            /** DeleteForMe localOnlyConversationDeletes. */
            public localOnlyConversationDeletes: signalservice.SyncMessage.DeleteForMe.ILocalOnlyConversationDelete[];

            /** DeleteForMe attachmentDeletes. */
            public attachmentDeletes: signalservice.SyncMessage.DeleteForMe.IAttachmentDelete[];

            /**
             * Creates a new DeleteForMe instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DeleteForMe instance
             */
            public static create(properties?: signalservice.SyncMessage.IDeleteForMe): signalservice.SyncMessage.DeleteForMe;

            /**
             * Encodes the specified DeleteForMe message. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.verify|verify} messages.
             * @param message DeleteForMe message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IDeleteForMe, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DeleteForMe message, length delimited. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.verify|verify} messages.
             * @param message DeleteForMe message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IDeleteForMe, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DeleteForMe message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DeleteForMe
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.DeleteForMe;

            /**
             * Decodes a DeleteForMe message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DeleteForMe
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.DeleteForMe;

            /**
             * Verifies a DeleteForMe message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DeleteForMe message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DeleteForMe
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.DeleteForMe;

            /**
             * Creates a plain object from a DeleteForMe message. Also converts values to other types if specified.
             * @param message DeleteForMe
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.DeleteForMe, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DeleteForMe to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DeleteForMe
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace DeleteForMe {

            /** Properties of a MessageDeletes. */
            interface IMessageDeletes {

                /** MessageDeletes conversation */
                conversation?: (signalservice.IConversationIdentifier|null);

                /** MessageDeletes messages */
                messages?: (signalservice.IAddressableMessage[]|null);
            }

            /** Represents a MessageDeletes. */
            class MessageDeletes implements IMessageDeletes {

                /**
                 * Constructs a new MessageDeletes.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.DeleteForMe.IMessageDeletes);

                /** MessageDeletes conversation. */
                public conversation?: (signalservice.IConversationIdentifier|null);

                /** MessageDeletes messages. */
                public messages: signalservice.IAddressableMessage[];

                /**
                 * Creates a new MessageDeletes instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns MessageDeletes instance
                 */
                public static create(properties?: signalservice.SyncMessage.DeleteForMe.IMessageDeletes): signalservice.SyncMessage.DeleteForMe.MessageDeletes;

                /**
                 * Encodes the specified MessageDeletes message. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.MessageDeletes.verify|verify} messages.
                 * @param message MessageDeletes message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.DeleteForMe.IMessageDeletes, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified MessageDeletes message, length delimited. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.MessageDeletes.verify|verify} messages.
                 * @param message MessageDeletes message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.DeleteForMe.IMessageDeletes, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a MessageDeletes message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns MessageDeletes
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.DeleteForMe.MessageDeletes;

                /**
                 * Decodes a MessageDeletes message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns MessageDeletes
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.DeleteForMe.MessageDeletes;

                /**
                 * Verifies a MessageDeletes message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a MessageDeletes message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns MessageDeletes
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.DeleteForMe.MessageDeletes;

                /**
                 * Creates a plain object from a MessageDeletes message. Also converts values to other types if specified.
                 * @param message MessageDeletes
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.DeleteForMe.MessageDeletes, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this MessageDeletes to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for MessageDeletes
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an AttachmentDelete. */
            interface IAttachmentDelete {

                /** AttachmentDelete conversation */
                conversation?: (signalservice.IConversationIdentifier|null);

                /** AttachmentDelete targetMessage */
                targetMessage?: (signalservice.IAddressableMessage|null);

                /** AttachmentDelete clientUuid */
                clientUuid?: (Uint8Array|null);

                /** AttachmentDelete fallbackDigest */
                fallbackDigest?: (Uint8Array|null);

                /** AttachmentDelete fallbackPlaintextHash */
                fallbackPlaintextHash?: (Uint8Array|null);
            }

            /** Represents an AttachmentDelete. */
            class AttachmentDelete implements IAttachmentDelete {

                /**
                 * Constructs a new AttachmentDelete.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.DeleteForMe.IAttachmentDelete);

                /** AttachmentDelete conversation. */
                public conversation?: (signalservice.IConversationIdentifier|null);

                /** AttachmentDelete targetMessage. */
                public targetMessage?: (signalservice.IAddressableMessage|null);

                /** AttachmentDelete clientUuid. */
                public clientUuid: Uint8Array;

                /** AttachmentDelete fallbackDigest. */
                public fallbackDigest: Uint8Array;

                /** AttachmentDelete fallbackPlaintextHash. */
                public fallbackPlaintextHash: Uint8Array;

                /**
                 * Creates a new AttachmentDelete instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AttachmentDelete instance
                 */
                public static create(properties?: signalservice.SyncMessage.DeleteForMe.IAttachmentDelete): signalservice.SyncMessage.DeleteForMe.AttachmentDelete;

                /**
                 * Encodes the specified AttachmentDelete message. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.AttachmentDelete.verify|verify} messages.
                 * @param message AttachmentDelete message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.DeleteForMe.IAttachmentDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AttachmentDelete message, length delimited. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.AttachmentDelete.verify|verify} messages.
                 * @param message AttachmentDelete message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.DeleteForMe.IAttachmentDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AttachmentDelete message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AttachmentDelete
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.DeleteForMe.AttachmentDelete;

                /**
                 * Decodes an AttachmentDelete message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AttachmentDelete
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.DeleteForMe.AttachmentDelete;

                /**
                 * Verifies an AttachmentDelete message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AttachmentDelete message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AttachmentDelete
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.DeleteForMe.AttachmentDelete;

                /**
                 * Creates a plain object from an AttachmentDelete message. Also converts values to other types if specified.
                 * @param message AttachmentDelete
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.DeleteForMe.AttachmentDelete, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AttachmentDelete to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AttachmentDelete
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a ConversationDelete. */
            interface IConversationDelete {

                /** ConversationDelete conversation */
                conversation?: (signalservice.IConversationIdentifier|null);

                /** ConversationDelete mostRecentMessages */
                mostRecentMessages?: (signalservice.IAddressableMessage[]|null);

                /** ConversationDelete isFullDelete */
                isFullDelete?: (boolean|null);

                /** ConversationDelete mostRecentNonExpiringMessages */
                mostRecentNonExpiringMessages?: (signalservice.IAddressableMessage[]|null);
            }

            /** Represents a ConversationDelete. */
            class ConversationDelete implements IConversationDelete {

                /**
                 * Constructs a new ConversationDelete.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.DeleteForMe.IConversationDelete);

                /** ConversationDelete conversation. */
                public conversation?: (signalservice.IConversationIdentifier|null);

                /** ConversationDelete mostRecentMessages. */
                public mostRecentMessages: signalservice.IAddressableMessage[];

                /** ConversationDelete isFullDelete. */
                public isFullDelete: boolean;

                /** ConversationDelete mostRecentNonExpiringMessages. */
                public mostRecentNonExpiringMessages: signalservice.IAddressableMessage[];

                /**
                 * Creates a new ConversationDelete instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ConversationDelete instance
                 */
                public static create(properties?: signalservice.SyncMessage.DeleteForMe.IConversationDelete): signalservice.SyncMessage.DeleteForMe.ConversationDelete;

                /**
                 * Encodes the specified ConversationDelete message. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.ConversationDelete.verify|verify} messages.
                 * @param message ConversationDelete message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.DeleteForMe.IConversationDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ConversationDelete message, length delimited. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.ConversationDelete.verify|verify} messages.
                 * @param message ConversationDelete message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.DeleteForMe.IConversationDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ConversationDelete message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ConversationDelete
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.DeleteForMe.ConversationDelete;

                /**
                 * Decodes a ConversationDelete message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ConversationDelete
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.DeleteForMe.ConversationDelete;

                /**
                 * Verifies a ConversationDelete message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ConversationDelete message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ConversationDelete
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.DeleteForMe.ConversationDelete;

                /**
                 * Creates a plain object from a ConversationDelete message. Also converts values to other types if specified.
                 * @param message ConversationDelete
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.DeleteForMe.ConversationDelete, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ConversationDelete to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ConversationDelete
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a LocalOnlyConversationDelete. */
            interface ILocalOnlyConversationDelete {

                /** LocalOnlyConversationDelete conversation */
                conversation?: (signalservice.IConversationIdentifier|null);
            }

            /** Represents a LocalOnlyConversationDelete. */
            class LocalOnlyConversationDelete implements ILocalOnlyConversationDelete {

                /**
                 * Constructs a new LocalOnlyConversationDelete.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.DeleteForMe.ILocalOnlyConversationDelete);

                /** LocalOnlyConversationDelete conversation. */
                public conversation?: (signalservice.IConversationIdentifier|null);

                /**
                 * Creates a new LocalOnlyConversationDelete instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns LocalOnlyConversationDelete instance
                 */
                public static create(properties?: signalservice.SyncMessage.DeleteForMe.ILocalOnlyConversationDelete): signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete;

                /**
                 * Encodes the specified LocalOnlyConversationDelete message. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.verify|verify} messages.
                 * @param message LocalOnlyConversationDelete message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.DeleteForMe.ILocalOnlyConversationDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified LocalOnlyConversationDelete message, length delimited. Does not implicitly {@link signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete.verify|verify} messages.
                 * @param message LocalOnlyConversationDelete message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.DeleteForMe.ILocalOnlyConversationDelete, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a LocalOnlyConversationDelete message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns LocalOnlyConversationDelete
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete;

                /**
                 * Decodes a LocalOnlyConversationDelete message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns LocalOnlyConversationDelete
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete;

                /**
                 * Verifies a LocalOnlyConversationDelete message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a LocalOnlyConversationDelete message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns LocalOnlyConversationDelete
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete;

                /**
                 * Creates a plain object from a LocalOnlyConversationDelete message. Also converts values to other types if specified.
                 * @param message LocalOnlyConversationDelete
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.DeleteForMe.LocalOnlyConversationDelete, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this LocalOnlyConversationDelete to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for LocalOnlyConversationDelete
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a DeviceNameChange. */
        interface IDeviceNameChange {

            /** DeviceNameChange deviceId */
            deviceId?: (number|null);
        }

        /** Represents a DeviceNameChange. */
        class DeviceNameChange implements IDeviceNameChange {

            /**
             * Constructs a new DeviceNameChange.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IDeviceNameChange);

            /** DeviceNameChange deviceId. */
            public deviceId: number;

            /**
             * Creates a new DeviceNameChange instance using the specified properties.
             * @param [properties] Properties to set
             * @returns DeviceNameChange instance
             */
            public static create(properties?: signalservice.SyncMessage.IDeviceNameChange): signalservice.SyncMessage.DeviceNameChange;

            /**
             * Encodes the specified DeviceNameChange message. Does not implicitly {@link signalservice.SyncMessage.DeviceNameChange.verify|verify} messages.
             * @param message DeviceNameChange message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IDeviceNameChange, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified DeviceNameChange message, length delimited. Does not implicitly {@link signalservice.SyncMessage.DeviceNameChange.verify|verify} messages.
             * @param message DeviceNameChange message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IDeviceNameChange, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a DeviceNameChange message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns DeviceNameChange
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.DeviceNameChange;

            /**
             * Decodes a DeviceNameChange message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns DeviceNameChange
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.DeviceNameChange;

            /**
             * Verifies a DeviceNameChange message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a DeviceNameChange message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns DeviceNameChange
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.DeviceNameChange;

            /**
             * Creates a plain object from a DeviceNameChange message. Also converts values to other types if specified.
             * @param message DeviceNameChange
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.DeviceNameChange, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this DeviceNameChange to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for DeviceNameChange
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an AttachmentBackfillRequest. */
        interface IAttachmentBackfillRequest {

            /** AttachmentBackfillRequest targetMessage */
            targetMessage?: (signalservice.IAddressableMessage|null);

            /** AttachmentBackfillRequest targetConversation */
            targetConversation?: (signalservice.IConversationIdentifier|null);
        }

        /** Represents an AttachmentBackfillRequest. */
        class AttachmentBackfillRequest implements IAttachmentBackfillRequest {

            /**
             * Constructs a new AttachmentBackfillRequest.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IAttachmentBackfillRequest);

            /** AttachmentBackfillRequest targetMessage. */
            public targetMessage?: (signalservice.IAddressableMessage|null);

            /** AttachmentBackfillRequest targetConversation. */
            public targetConversation?: (signalservice.IConversationIdentifier|null);

            /**
             * Creates a new AttachmentBackfillRequest instance using the specified properties.
             * @param [properties] Properties to set
             * @returns AttachmentBackfillRequest instance
             */
            public static create(properties?: signalservice.SyncMessage.IAttachmentBackfillRequest): signalservice.SyncMessage.AttachmentBackfillRequest;

            /**
             * Encodes the specified AttachmentBackfillRequest message. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillRequest.verify|verify} messages.
             * @param message AttachmentBackfillRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IAttachmentBackfillRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified AttachmentBackfillRequest message, length delimited. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillRequest.verify|verify} messages.
             * @param message AttachmentBackfillRequest message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IAttachmentBackfillRequest, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an AttachmentBackfillRequest message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns AttachmentBackfillRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.AttachmentBackfillRequest;

            /**
             * Decodes an AttachmentBackfillRequest message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns AttachmentBackfillRequest
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.AttachmentBackfillRequest;

            /**
             * Verifies an AttachmentBackfillRequest message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an AttachmentBackfillRequest message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns AttachmentBackfillRequest
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.AttachmentBackfillRequest;

            /**
             * Creates a plain object from an AttachmentBackfillRequest message. Also converts values to other types if specified.
             * @param message AttachmentBackfillRequest
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.AttachmentBackfillRequest, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this AttachmentBackfillRequest to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for AttachmentBackfillRequest
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of an AttachmentBackfillResponse. */
        interface IAttachmentBackfillResponse {

            /** AttachmentBackfillResponse targetMessage */
            targetMessage?: (signalservice.IAddressableMessage|null);

            /** AttachmentBackfillResponse targetConversation */
            targetConversation?: (signalservice.IConversationIdentifier|null);

            /** AttachmentBackfillResponse attachments */
            attachments?: (signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentDataList|null);

            /** AttachmentBackfillResponse error */
            error?: (signalservice.SyncMessage.AttachmentBackfillResponse.Error|null);
        }

        /** Represents an AttachmentBackfillResponse. */
        class AttachmentBackfillResponse implements IAttachmentBackfillResponse {

            /**
             * Constructs a new AttachmentBackfillResponse.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SyncMessage.IAttachmentBackfillResponse);

            /** AttachmentBackfillResponse targetMessage. */
            public targetMessage?: (signalservice.IAddressableMessage|null);

            /** AttachmentBackfillResponse targetConversation. */
            public targetConversation?: (signalservice.IConversationIdentifier|null);

            /** AttachmentBackfillResponse attachments. */
            public attachments?: (signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentDataList|null);

            /** AttachmentBackfillResponse error. */
            public error?: (signalservice.SyncMessage.AttachmentBackfillResponse.Error|null);

            /** AttachmentBackfillResponse data. */
            public data?: ("attachments"|"error");

            /**
             * Creates a new AttachmentBackfillResponse instance using the specified properties.
             * @param [properties] Properties to set
             * @returns AttachmentBackfillResponse instance
             */
            public static create(properties?: signalservice.SyncMessage.IAttachmentBackfillResponse): signalservice.SyncMessage.AttachmentBackfillResponse;

            /**
             * Encodes the specified AttachmentBackfillResponse message. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillResponse.verify|verify} messages.
             * @param message AttachmentBackfillResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SyncMessage.IAttachmentBackfillResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified AttachmentBackfillResponse message, length delimited. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillResponse.verify|verify} messages.
             * @param message AttachmentBackfillResponse message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SyncMessage.IAttachmentBackfillResponse, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an AttachmentBackfillResponse message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns AttachmentBackfillResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.AttachmentBackfillResponse;

            /**
             * Decodes an AttachmentBackfillResponse message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns AttachmentBackfillResponse
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.AttachmentBackfillResponse;

            /**
             * Verifies an AttachmentBackfillResponse message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an AttachmentBackfillResponse message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns AttachmentBackfillResponse
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.AttachmentBackfillResponse;

            /**
             * Creates a plain object from an AttachmentBackfillResponse message. Also converts values to other types if specified.
             * @param message AttachmentBackfillResponse
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SyncMessage.AttachmentBackfillResponse, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this AttachmentBackfillResponse to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for AttachmentBackfillResponse
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace AttachmentBackfillResponse {

            /** Properties of an AttachmentData. */
            interface IAttachmentData {

                /** AttachmentData attachment */
                attachment?: (signalservice.IAttachmentPointer|null);

                /** AttachmentData status */
                status?: (signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status|null);
            }

            /** Represents an AttachmentData. */
            class AttachmentData implements IAttachmentData {

                /**
                 * Constructs a new AttachmentData.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData);

                /** AttachmentData attachment. */
                public attachment?: (signalservice.IAttachmentPointer|null);

                /** AttachmentData status. */
                public status?: (signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.Status|null);

                /** AttachmentData data. */
                public data?: ("attachment"|"status");

                /**
                 * Creates a new AttachmentData instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AttachmentData instance
                 */
                public static create(properties?: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData;

                /**
                 * Encodes the specified AttachmentData message. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.verify|verify} messages.
                 * @param message AttachmentData message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AttachmentData message, length delimited. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData.verify|verify} messages.
                 * @param message AttachmentData message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AttachmentData message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AttachmentData
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData;

                /**
                 * Decodes an AttachmentData message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AttachmentData
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData;

                /**
                 * Verifies an AttachmentData message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AttachmentData message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AttachmentData
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData;

                /**
                 * Creates a plain object from an AttachmentData message. Also converts values to other types if specified.
                 * @param message AttachmentData
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentData, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AttachmentData to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AttachmentData
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace AttachmentData {

                /** Status enum. */
                enum Status {
                    PENDING = 0,
                    TERMINAL_ERROR = 1
                }
            }

            /** Error enum. */
            enum Error {
                MESSAGE_NOT_FOUND = 0
            }

            /** Properties of an AttachmentDataList. */
            interface IAttachmentDataList {

                /** AttachmentDataList attachments */
                attachments?: (signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData[]|null);

                /** AttachmentDataList longText */
                longText?: (signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData|null);
            }

            /** Represents an AttachmentDataList. */
            class AttachmentDataList implements IAttachmentDataList {

                /**
                 * Constructs a new AttachmentDataList.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentDataList);

                /** AttachmentDataList attachments. */
                public attachments: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData[];

                /** AttachmentDataList longText. */
                public longText?: (signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentData|null);

                /**
                 * Creates a new AttachmentDataList instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns AttachmentDataList instance
                 */
                public static create(properties?: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentDataList): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList;

                /**
                 * Encodes the specified AttachmentDataList message. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.verify|verify} messages.
                 * @param message AttachmentDataList message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentDataList, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified AttachmentDataList message, length delimited. Does not implicitly {@link signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList.verify|verify} messages.
                 * @param message AttachmentDataList message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.SyncMessage.AttachmentBackfillResponse.IAttachmentDataList, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an AttachmentDataList message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns AttachmentDataList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList;

                /**
                 * Decodes an AttachmentDataList message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns AttachmentDataList
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList;

                /**
                 * Verifies an AttachmentDataList message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an AttachmentDataList message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns AttachmentDataList
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList;

                /**
                 * Creates a plain object from an AttachmentDataList message. Also converts values to other types if specified.
                 * @param message AttachmentDataList
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.SyncMessage.AttachmentBackfillResponse.AttachmentDataList, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this AttachmentDataList to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for AttachmentDataList
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }
    }

    /** Properties of an AttachmentPointer. */
    interface IAttachmentPointer {

        /** AttachmentPointer cdnId */
        cdnId?: (Long|null);

        /** AttachmentPointer cdnKey */
        cdnKey?: (string|null);

        /** AttachmentPointer clientUuid */
        clientUuid?: (Uint8Array|null);

        /** AttachmentPointer contentType */
        contentType?: (string|null);

        /** AttachmentPointer key */
        key?: (Uint8Array|null);

        /** AttachmentPointer size */
        size?: (number|null);

        /** AttachmentPointer thumbnail */
        thumbnail?: (Uint8Array|null);

        /** AttachmentPointer digest */
        digest?: (Uint8Array|null);

        /** AttachmentPointer incrementalMac */
        incrementalMac?: (Uint8Array|null);

        /** AttachmentPointer chunkSize */
        chunkSize?: (number|null);

        /** AttachmentPointer fileName */
        fileName?: (string|null);

        /** AttachmentPointer flags */
        flags?: (number|null);

        /** AttachmentPointer width */
        width?: (number|null);

        /** AttachmentPointer height */
        height?: (number|null);

        /** AttachmentPointer caption */
        caption?: (string|null);

        /** AttachmentPointer blurHash */
        blurHash?: (string|null);

        /** AttachmentPointer uploadTimestamp */
        uploadTimestamp?: (Long|null);

        /** AttachmentPointer cdnNumber */
        cdnNumber?: (number|null);
    }

    /** Represents an AttachmentPointer. */
    class AttachmentPointer implements IAttachmentPointer {

        /**
         * Constructs a new AttachmentPointer.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IAttachmentPointer);

        /** AttachmentPointer cdnId. */
        public cdnId?: (Long|null);

        /** AttachmentPointer cdnKey. */
        public cdnKey?: (string|null);

        /** AttachmentPointer clientUuid. */
        public clientUuid: Uint8Array;

        /** AttachmentPointer contentType. */
        public contentType: string;

        /** AttachmentPointer key. */
        public key: Uint8Array;

        /** AttachmentPointer size. */
        public size: number;

        /** AttachmentPointer thumbnail. */
        public thumbnail: Uint8Array;

        /** AttachmentPointer digest. */
        public digest: Uint8Array;

        /** AttachmentPointer incrementalMac. */
        public incrementalMac: Uint8Array;

        /** AttachmentPointer chunkSize. */
        public chunkSize: number;

        /** AttachmentPointer fileName. */
        public fileName: string;

        /** AttachmentPointer flags. */
        public flags: number;

        /** AttachmentPointer width. */
        public width: number;

        /** AttachmentPointer height. */
        public height: number;

        /** AttachmentPointer caption. */
        public caption: string;

        /** AttachmentPointer blurHash. */
        public blurHash: string;

        /** AttachmentPointer uploadTimestamp. */
        public uploadTimestamp: Long;

        /** AttachmentPointer cdnNumber. */
        public cdnNumber: number;

        /** AttachmentPointer attachmentIdentifier. */
        public attachmentIdentifier?: ("cdnId"|"cdnKey");

        /**
         * Creates a new AttachmentPointer instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AttachmentPointer instance
         */
        public static create(properties?: signalservice.IAttachmentPointer): signalservice.AttachmentPointer;

        /**
         * Encodes the specified AttachmentPointer message. Does not implicitly {@link signalservice.AttachmentPointer.verify|verify} messages.
         * @param message AttachmentPointer message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IAttachmentPointer, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified AttachmentPointer message, length delimited. Does not implicitly {@link signalservice.AttachmentPointer.verify|verify} messages.
         * @param message AttachmentPointer message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IAttachmentPointer, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an AttachmentPointer message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AttachmentPointer
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AttachmentPointer;

        /**
         * Decodes an AttachmentPointer message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AttachmentPointer
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AttachmentPointer;

        /**
         * Verifies an AttachmentPointer message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an AttachmentPointer message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AttachmentPointer
         */
        public static fromObject(object: { [k: string]: any }): signalservice.AttachmentPointer;

        /**
         * Creates a plain object from an AttachmentPointer message. Also converts values to other types if specified.
         * @param message AttachmentPointer
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.AttachmentPointer, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this AttachmentPointer to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AttachmentPointer
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace AttachmentPointer {

        /** Flags enum. */
        enum Flags {
            VOICE_MESSAGE = 1,
            BORDERLESS = 2,
            GIF = 8
        }
    }

    /** Properties of a GroupContextV2. */
    interface IGroupContextV2 {

        /** GroupContextV2 masterKey */
        masterKey?: (Uint8Array|null);

        /** GroupContextV2 revision */
        revision?: (number|null);

        /** GroupContextV2 groupChange */
        groupChange?: (Uint8Array|null);
    }

    /** Represents a GroupContextV2. */
    class GroupContextV2 implements IGroupContextV2 {

        /**
         * Constructs a new GroupContextV2.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupContextV2);

        /** GroupContextV2 masterKey. */
        public masterKey: Uint8Array;

        /** GroupContextV2 revision. */
        public revision: number;

        /** GroupContextV2 groupChange. */
        public groupChange: Uint8Array;

        /**
         * Creates a new GroupContextV2 instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupContextV2 instance
         */
        public static create(properties?: signalservice.IGroupContextV2): signalservice.GroupContextV2;

        /**
         * Encodes the specified GroupContextV2 message. Does not implicitly {@link signalservice.GroupContextV2.verify|verify} messages.
         * @param message GroupContextV2 message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupContextV2, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupContextV2 message, length delimited. Does not implicitly {@link signalservice.GroupContextV2.verify|verify} messages.
         * @param message GroupContextV2 message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupContextV2, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupContextV2 message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupContextV2
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupContextV2;

        /**
         * Decodes a GroupContextV2 message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupContextV2
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupContextV2;

        /**
         * Verifies a GroupContextV2 message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupContextV2 message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupContextV2
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupContextV2;

        /**
         * Creates a plain object from a GroupContextV2 message. Also converts values to other types if specified.
         * @param message GroupContextV2
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupContextV2, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupContextV2 to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupContextV2
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ContactDetails. */
    interface IContactDetails {

        /** ContactDetails number */
        number?: (string|null);

        /** ContactDetails aci */
        aci?: (string|null);

        /** ContactDetails name */
        name?: (string|null);

        /** ContactDetails avatar */
        avatar?: (signalservice.ContactDetails.IAvatar|null);

        /** ContactDetails expireTimer */
        expireTimer?: (number|null);

        /** ContactDetails expireTimerVersion */
        expireTimerVersion?: (number|null);

        /** ContactDetails inboxPosition */
        inboxPosition?: (number|null);
    }

    /** Represents a ContactDetails. */
    class ContactDetails implements IContactDetails {

        /**
         * Constructs a new ContactDetails.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IContactDetails);

        /** ContactDetails number. */
        public number: string;

        /** ContactDetails aci. */
        public aci: string;

        /** ContactDetails name. */
        public name: string;

        /** ContactDetails avatar. */
        public avatar?: (signalservice.ContactDetails.IAvatar|null);

        /** ContactDetails expireTimer. */
        public expireTimer: number;

        /** ContactDetails expireTimerVersion. */
        public expireTimerVersion: number;

        /** ContactDetails inboxPosition. */
        public inboxPosition: number;

        /**
         * Creates a new ContactDetails instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ContactDetails instance
         */
        public static create(properties?: signalservice.IContactDetails): signalservice.ContactDetails;

        /**
         * Encodes the specified ContactDetails message. Does not implicitly {@link signalservice.ContactDetails.verify|verify} messages.
         * @param message ContactDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IContactDetails, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ContactDetails message, length delimited. Does not implicitly {@link signalservice.ContactDetails.verify|verify} messages.
         * @param message ContactDetails message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IContactDetails, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ContactDetails message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ContactDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ContactDetails;

        /**
         * Decodes a ContactDetails message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ContactDetails
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ContactDetails;

        /**
         * Verifies a ContactDetails message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ContactDetails message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ContactDetails
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ContactDetails;

        /**
         * Creates a plain object from a ContactDetails message. Also converts values to other types if specified.
         * @param message ContactDetails
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ContactDetails, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ContactDetails to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ContactDetails
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ContactDetails {

        /** Properties of an Avatar. */
        interface IAvatar {

            /** Avatar contentType */
            contentType?: (string|null);

            /** Avatar length */
            length?: (number|null);
        }

        /** Represents an Avatar. */
        class Avatar implements IAvatar {

            /**
             * Constructs a new Avatar.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.ContactDetails.IAvatar);

            /** Avatar contentType. */
            public contentType: string;

            /** Avatar length. */
            public length: number;

            /**
             * Creates a new Avatar instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Avatar instance
             */
            public static create(properties?: signalservice.ContactDetails.IAvatar): signalservice.ContactDetails.Avatar;

            /**
             * Encodes the specified Avatar message. Does not implicitly {@link signalservice.ContactDetails.Avatar.verify|verify} messages.
             * @param message Avatar message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.ContactDetails.IAvatar, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Avatar message, length delimited. Does not implicitly {@link signalservice.ContactDetails.Avatar.verify|verify} messages.
             * @param message Avatar message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.ContactDetails.IAvatar, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Avatar message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Avatar
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ContactDetails.Avatar;

            /**
             * Decodes an Avatar message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Avatar
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ContactDetails.Avatar;

            /**
             * Verifies an Avatar message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Avatar message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Avatar
             */
            public static fromObject(object: { [k: string]: any }): signalservice.ContactDetails.Avatar;

            /**
             * Creates a plain object from an Avatar message. Also converts values to other types if specified.
             * @param message Avatar
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.ContactDetails.Avatar, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Avatar to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Avatar
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a DecryptionErrorMessage. */
    interface IDecryptionErrorMessage {

        /** DecryptionErrorMessage ratchetKey */
        ratchetKey?: (Uint8Array|null);

        /** DecryptionErrorMessage timestamp */
        timestamp?: (Long|null);

        /** DecryptionErrorMessage deviceId */
        deviceId?: (number|null);
    }

    /** Represents a DecryptionErrorMessage. */
    class DecryptionErrorMessage implements IDecryptionErrorMessage {

        /**
         * Constructs a new DecryptionErrorMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IDecryptionErrorMessage);

        /** DecryptionErrorMessage ratchetKey. */
        public ratchetKey: Uint8Array;

        /** DecryptionErrorMessage timestamp. */
        public timestamp: Long;

        /** DecryptionErrorMessage deviceId. */
        public deviceId: number;

        /**
         * Creates a new DecryptionErrorMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns DecryptionErrorMessage instance
         */
        public static create(properties?: signalservice.IDecryptionErrorMessage): signalservice.DecryptionErrorMessage;

        /**
         * Encodes the specified DecryptionErrorMessage message. Does not implicitly {@link signalservice.DecryptionErrorMessage.verify|verify} messages.
         * @param message DecryptionErrorMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IDecryptionErrorMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified DecryptionErrorMessage message, length delimited. Does not implicitly {@link signalservice.DecryptionErrorMessage.verify|verify} messages.
         * @param message DecryptionErrorMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IDecryptionErrorMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a DecryptionErrorMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns DecryptionErrorMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.DecryptionErrorMessage;

        /**
         * Decodes a DecryptionErrorMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns DecryptionErrorMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.DecryptionErrorMessage;

        /**
         * Verifies a DecryptionErrorMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a DecryptionErrorMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns DecryptionErrorMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.DecryptionErrorMessage;

        /**
         * Creates a plain object from a DecryptionErrorMessage message. Also converts values to other types if specified.
         * @param message DecryptionErrorMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.DecryptionErrorMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this DecryptionErrorMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for DecryptionErrorMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a PniSignatureMessage. */
    interface IPniSignatureMessage {

        /** PniSignatureMessage pni */
        pni?: (Uint8Array|null);

        /** PniSignatureMessage signature */
        signature?: (Uint8Array|null);
    }

    /** Represents a PniSignatureMessage. */
    class PniSignatureMessage implements IPniSignatureMessage {

        /**
         * Constructs a new PniSignatureMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IPniSignatureMessage);

        /** PniSignatureMessage pni. */
        public pni: Uint8Array;

        /** PniSignatureMessage signature. */
        public signature: Uint8Array;

        /**
         * Creates a new PniSignatureMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns PniSignatureMessage instance
         */
        public static create(properties?: signalservice.IPniSignatureMessage): signalservice.PniSignatureMessage;

        /**
         * Encodes the specified PniSignatureMessage message. Does not implicitly {@link signalservice.PniSignatureMessage.verify|verify} messages.
         * @param message PniSignatureMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IPniSignatureMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified PniSignatureMessage message, length delimited. Does not implicitly {@link signalservice.PniSignatureMessage.verify|verify} messages.
         * @param message PniSignatureMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IPniSignatureMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a PniSignatureMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns PniSignatureMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.PniSignatureMessage;

        /**
         * Decodes a PniSignatureMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns PniSignatureMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.PniSignatureMessage;

        /**
         * Verifies a PniSignatureMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a PniSignatureMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns PniSignatureMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.PniSignatureMessage;

        /**
         * Creates a plain object from a PniSignatureMessage message. Also converts values to other types if specified.
         * @param message PniSignatureMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.PniSignatureMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this PniSignatureMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for PniSignatureMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of an EditMessage. */
    interface IEditMessage {

        /** EditMessage targetSentTimestamp */
        targetSentTimestamp?: (Long|null);

        /** EditMessage dataMessage */
        dataMessage?: (signalservice.IDataMessage|null);
    }

    /** Represents an EditMessage. */
    class EditMessage implements IEditMessage {

        /**
         * Constructs a new EditMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IEditMessage);

        /** EditMessage targetSentTimestamp. */
        public targetSentTimestamp: Long;

        /** EditMessage dataMessage. */
        public dataMessage?: (signalservice.IDataMessage|null);

        /**
         * Creates a new EditMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns EditMessage instance
         */
        public static create(properties?: signalservice.IEditMessage): signalservice.EditMessage;

        /**
         * Encodes the specified EditMessage message. Does not implicitly {@link signalservice.EditMessage.verify|verify} messages.
         * @param message EditMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IEditMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified EditMessage message, length delimited. Does not implicitly {@link signalservice.EditMessage.verify|verify} messages.
         * @param message EditMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IEditMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an EditMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns EditMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.EditMessage;

        /**
         * Decodes an EditMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns EditMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.EditMessage;

        /**
         * Verifies an EditMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an EditMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns EditMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.EditMessage;

        /**
         * Creates a plain object from an EditMessage message. Also converts values to other types if specified.
         * @param message EditMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.EditMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this EditMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for EditMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a BodyRange. */
    interface IBodyRange {

        /** BodyRange start */
        start?: (number|null);

        /** BodyRange length */
        length?: (number|null);

        /** BodyRange mentionAci */
        mentionAci?: (string|null);

        /** BodyRange style */
        style?: (signalservice.BodyRange.Style|null);
    }

    /** Represents a BodyRange. */
    class BodyRange implements IBodyRange {

        /**
         * Constructs a new BodyRange.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IBodyRange);

        /** BodyRange start. */
        public start: number;

        /** BodyRange length. */
        public length: number;

        /** BodyRange mentionAci. */
        public mentionAci?: (string|null);

        /** BodyRange style. */
        public style?: (signalservice.BodyRange.Style|null);

        /** BodyRange associatedValue. */
        public associatedValue?: ("mentionAci"|"style");

        /**
         * Creates a new BodyRange instance using the specified properties.
         * @param [properties] Properties to set
         * @returns BodyRange instance
         */
        public static create(properties?: signalservice.IBodyRange): signalservice.BodyRange;

        /**
         * Encodes the specified BodyRange message. Does not implicitly {@link signalservice.BodyRange.verify|verify} messages.
         * @param message BodyRange message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IBodyRange, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified BodyRange message, length delimited. Does not implicitly {@link signalservice.BodyRange.verify|verify} messages.
         * @param message BodyRange message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IBodyRange, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a BodyRange message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns BodyRange
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.BodyRange;

        /**
         * Decodes a BodyRange message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns BodyRange
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.BodyRange;

        /**
         * Verifies a BodyRange message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a BodyRange message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns BodyRange
         */
        public static fromObject(object: { [k: string]: any }): signalservice.BodyRange;

        /**
         * Creates a plain object from a BodyRange message. Also converts values to other types if specified.
         * @param message BodyRange
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.BodyRange, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this BodyRange to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for BodyRange
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace BodyRange {

        /** Style enum. */
        enum Style {
            NONE = 0,
            BOLD = 1,
            ITALIC = 2,
            SPOILER = 3,
            STRIKETHROUGH = 4,
            MONOSPACE = 5
        }
    }

    /** Properties of an AddressableMessage. */
    interface IAddressableMessage {

        /** AddressableMessage authorServiceId */
        authorServiceId?: (string|null);

        /** AddressableMessage authorE164 */
        authorE164?: (string|null);

        /** AddressableMessage sentTimestamp */
        sentTimestamp?: (Long|null);
    }

    /** Represents an AddressableMessage. */
    class AddressableMessage implements IAddressableMessage {

        /**
         * Constructs a new AddressableMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IAddressableMessage);

        /** AddressableMessage authorServiceId. */
        public authorServiceId?: (string|null);

        /** AddressableMessage authorE164. */
        public authorE164?: (string|null);

        /** AddressableMessage sentTimestamp. */
        public sentTimestamp: Long;

        /** AddressableMessage author. */
        public author?: ("authorServiceId"|"authorE164");

        /**
         * Creates a new AddressableMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AddressableMessage instance
         */
        public static create(properties?: signalservice.IAddressableMessage): signalservice.AddressableMessage;

        /**
         * Encodes the specified AddressableMessage message. Does not implicitly {@link signalservice.AddressableMessage.verify|verify} messages.
         * @param message AddressableMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IAddressableMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified AddressableMessage message, length delimited. Does not implicitly {@link signalservice.AddressableMessage.verify|verify} messages.
         * @param message AddressableMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IAddressableMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an AddressableMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AddressableMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AddressableMessage;

        /**
         * Decodes an AddressableMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AddressableMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AddressableMessage;

        /**
         * Verifies an AddressableMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an AddressableMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AddressableMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.AddressableMessage;

        /**
         * Creates a plain object from an AddressableMessage message. Also converts values to other types if specified.
         * @param message AddressableMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.AddressableMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this AddressableMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AddressableMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ConversationIdentifier. */
    interface IConversationIdentifier {

        /** ConversationIdentifier threadServiceId */
        threadServiceId?: (string|null);

        /** ConversationIdentifier threadGroupId */
        threadGroupId?: (Uint8Array|null);

        /** ConversationIdentifier threadE164 */
        threadE164?: (string|null);
    }

    /** Represents a ConversationIdentifier. */
    class ConversationIdentifier implements IConversationIdentifier {

        /**
         * Constructs a new ConversationIdentifier.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IConversationIdentifier);

        /** ConversationIdentifier threadServiceId. */
        public threadServiceId?: (string|null);

        /** ConversationIdentifier threadGroupId. */
        public threadGroupId?: (Uint8Array|null);

        /** ConversationIdentifier threadE164. */
        public threadE164?: (string|null);

        /** ConversationIdentifier identifier. */
        public identifier?: ("threadServiceId"|"threadGroupId"|"threadE164");

        /**
         * Creates a new ConversationIdentifier instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ConversationIdentifier instance
         */
        public static create(properties?: signalservice.IConversationIdentifier): signalservice.ConversationIdentifier;

        /**
         * Encodes the specified ConversationIdentifier message. Does not implicitly {@link signalservice.ConversationIdentifier.verify|verify} messages.
         * @param message ConversationIdentifier message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IConversationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ConversationIdentifier message, length delimited. Does not implicitly {@link signalservice.ConversationIdentifier.verify|verify} messages.
         * @param message ConversationIdentifier message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IConversationIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ConversationIdentifier message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ConversationIdentifier
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ConversationIdentifier;

        /**
         * Decodes a ConversationIdentifier message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ConversationIdentifier
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ConversationIdentifier;

        /**
         * Verifies a ConversationIdentifier message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ConversationIdentifier message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ConversationIdentifier
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ConversationIdentifier;

        /**
         * Creates a plain object from a ConversationIdentifier message. Also converts values to other types if specified.
         * @param message ConversationIdentifier
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ConversationIdentifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ConversationIdentifier to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ConversationIdentifier
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** OptionalBool enum. */
    enum OptionalBool {
        UNSET = 0,
        ENABLED = 1,
        DISABLED = 2
    }

    /** Properties of a StorageManifest. */
    interface IStorageManifest {

        /** StorageManifest version */
        version?: (Long|null);

        /** StorageManifest value */
        value?: (Uint8Array|null);
    }

    /** Represents a StorageManifest. */
    class StorageManifest implements IStorageManifest {

        /**
         * Constructs a new StorageManifest.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStorageManifest);

        /** StorageManifest version. */
        public version: Long;

        /** StorageManifest value. */
        public value: Uint8Array;

        /**
         * Creates a new StorageManifest instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StorageManifest instance
         */
        public static create(properties?: signalservice.IStorageManifest): signalservice.StorageManifest;

        /**
         * Encodes the specified StorageManifest message. Does not implicitly {@link signalservice.StorageManifest.verify|verify} messages.
         * @param message StorageManifest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStorageManifest, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StorageManifest message, length delimited. Does not implicitly {@link signalservice.StorageManifest.verify|verify} messages.
         * @param message StorageManifest message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStorageManifest, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StorageManifest message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StorageManifest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StorageManifest;

        /**
         * Decodes a StorageManifest message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StorageManifest
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StorageManifest;

        /**
         * Verifies a StorageManifest message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StorageManifest message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StorageManifest
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StorageManifest;

        /**
         * Creates a plain object from a StorageManifest message. Also converts values to other types if specified.
         * @param message StorageManifest
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StorageManifest, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StorageManifest to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StorageManifest
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StorageItem. */
    interface IStorageItem {

        /** StorageItem key */
        key?: (Uint8Array|null);

        /** StorageItem value */
        value?: (Uint8Array|null);
    }

    /** Represents a StorageItem. */
    class StorageItem implements IStorageItem {

        /**
         * Constructs a new StorageItem.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStorageItem);

        /** StorageItem key. */
        public key: Uint8Array;

        /** StorageItem value. */
        public value: Uint8Array;

        /**
         * Creates a new StorageItem instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StorageItem instance
         */
        public static create(properties?: signalservice.IStorageItem): signalservice.StorageItem;

        /**
         * Encodes the specified StorageItem message. Does not implicitly {@link signalservice.StorageItem.verify|verify} messages.
         * @param message StorageItem message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStorageItem, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StorageItem message, length delimited. Does not implicitly {@link signalservice.StorageItem.verify|verify} messages.
         * @param message StorageItem message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStorageItem, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StorageItem message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StorageItem
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StorageItem;

        /**
         * Decodes a StorageItem message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StorageItem
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StorageItem;

        /**
         * Verifies a StorageItem message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StorageItem message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StorageItem
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StorageItem;

        /**
         * Creates a plain object from a StorageItem message. Also converts values to other types if specified.
         * @param message StorageItem
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StorageItem, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StorageItem to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StorageItem
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StorageItems. */
    interface IStorageItems {

        /** StorageItems items */
        items?: (signalservice.IStorageItem[]|null);
    }

    /** Represents a StorageItems. */
    class StorageItems implements IStorageItems {

        /**
         * Constructs a new StorageItems.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStorageItems);

        /** StorageItems items. */
        public items: signalservice.IStorageItem[];

        /**
         * Creates a new StorageItems instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StorageItems instance
         */
        public static create(properties?: signalservice.IStorageItems): signalservice.StorageItems;

        /**
         * Encodes the specified StorageItems message. Does not implicitly {@link signalservice.StorageItems.verify|verify} messages.
         * @param message StorageItems message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStorageItems, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StorageItems message, length delimited. Does not implicitly {@link signalservice.StorageItems.verify|verify} messages.
         * @param message StorageItems message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStorageItems, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StorageItems message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StorageItems
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StorageItems;

        /**
         * Decodes a StorageItems message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StorageItems
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StorageItems;

        /**
         * Verifies a StorageItems message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StorageItems message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StorageItems
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StorageItems;

        /**
         * Creates a plain object from a StorageItems message. Also converts values to other types if specified.
         * @param message StorageItems
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StorageItems, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StorageItems to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StorageItems
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WriteOperation. */
    interface IWriteOperation {

        /** WriteOperation manifest */
        manifest?: (signalservice.IStorageManifest|null);

        /** WriteOperation insertItem */
        insertItem?: (signalservice.IStorageItem[]|null);

        /** WriteOperation deleteKey */
        deleteKey?: (Uint8Array[]|null);

        /** WriteOperation clearAll */
        clearAll?: (boolean|null);
    }

    /** Represents a WriteOperation. */
    class WriteOperation implements IWriteOperation {

        /**
         * Constructs a new WriteOperation.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IWriteOperation);

        /** WriteOperation manifest. */
        public manifest?: (signalservice.IStorageManifest|null);

        /** WriteOperation insertItem. */
        public insertItem: signalservice.IStorageItem[];

        /** WriteOperation deleteKey. */
        public deleteKey: Uint8Array[];

        /** WriteOperation clearAll. */
        public clearAll: boolean;

        /**
         * Creates a new WriteOperation instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WriteOperation instance
         */
        public static create(properties?: signalservice.IWriteOperation): signalservice.WriteOperation;

        /**
         * Encodes the specified WriteOperation message. Does not implicitly {@link signalservice.WriteOperation.verify|verify} messages.
         * @param message WriteOperation message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IWriteOperation, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified WriteOperation message, length delimited. Does not implicitly {@link signalservice.WriteOperation.verify|verify} messages.
         * @param message WriteOperation message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IWriteOperation, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a WriteOperation message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WriteOperation
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.WriteOperation;

        /**
         * Decodes a WriteOperation message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WriteOperation
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.WriteOperation;

        /**
         * Verifies a WriteOperation message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a WriteOperation message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WriteOperation
         */
        public static fromObject(object: { [k: string]: any }): signalservice.WriteOperation;

        /**
         * Creates a plain object from a WriteOperation message. Also converts values to other types if specified.
         * @param message WriteOperation
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.WriteOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this WriteOperation to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WriteOperation
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ReadOperation. */
    interface IReadOperation {

        /** ReadOperation readKey */
        readKey?: (Uint8Array[]|null);
    }

    /** Represents a ReadOperation. */
    class ReadOperation implements IReadOperation {

        /**
         * Constructs a new ReadOperation.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IReadOperation);

        /** ReadOperation readKey. */
        public readKey: Uint8Array[];

        /**
         * Creates a new ReadOperation instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ReadOperation instance
         */
        public static create(properties?: signalservice.IReadOperation): signalservice.ReadOperation;

        /**
         * Encodes the specified ReadOperation message. Does not implicitly {@link signalservice.ReadOperation.verify|verify} messages.
         * @param message ReadOperation message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IReadOperation, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ReadOperation message, length delimited. Does not implicitly {@link signalservice.ReadOperation.verify|verify} messages.
         * @param message ReadOperation message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IReadOperation, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ReadOperation message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ReadOperation
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ReadOperation;

        /**
         * Decodes a ReadOperation message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ReadOperation
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ReadOperation;

        /**
         * Verifies a ReadOperation message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ReadOperation message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ReadOperation
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ReadOperation;

        /**
         * Creates a plain object from a ReadOperation message. Also converts values to other types if specified.
         * @param message ReadOperation
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ReadOperation, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ReadOperation to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ReadOperation
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a ManifestRecord. */
    interface IManifestRecord {

        /** ManifestRecord version */
        version?: (Long|null);

        /** ManifestRecord sourceDevice */
        sourceDevice?: (number|null);

        /** ManifestRecord identifiers */
        identifiers?: (signalservice.ManifestRecord.IIdentifier[]|null);

        /** ManifestRecord recordIkm */
        recordIkm?: (Uint8Array|null);
    }

    /** Represents a ManifestRecord. */
    class ManifestRecord implements IManifestRecord {

        /**
         * Constructs a new ManifestRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IManifestRecord);

        /** ManifestRecord version. */
        public version: Long;

        /** ManifestRecord sourceDevice. */
        public sourceDevice: number;

        /** ManifestRecord identifiers. */
        public identifiers: signalservice.ManifestRecord.IIdentifier[];

        /** ManifestRecord recordIkm. */
        public recordIkm: Uint8Array;

        /**
         * Creates a new ManifestRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ManifestRecord instance
         */
        public static create(properties?: signalservice.IManifestRecord): signalservice.ManifestRecord;

        /**
         * Encodes the specified ManifestRecord message. Does not implicitly {@link signalservice.ManifestRecord.verify|verify} messages.
         * @param message ManifestRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IManifestRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ManifestRecord message, length delimited. Does not implicitly {@link signalservice.ManifestRecord.verify|verify} messages.
         * @param message ManifestRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IManifestRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ManifestRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ManifestRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ManifestRecord;

        /**
         * Decodes a ManifestRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ManifestRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ManifestRecord;

        /**
         * Verifies a ManifestRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ManifestRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ManifestRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ManifestRecord;

        /**
         * Creates a plain object from a ManifestRecord message. Also converts values to other types if specified.
         * @param message ManifestRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ManifestRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ManifestRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ManifestRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ManifestRecord {

        /** Properties of an Identifier. */
        interface IIdentifier {

            /** Identifier raw */
            raw?: (Uint8Array|null);

            /** Identifier type */
            type?: (signalservice.ManifestRecord.Identifier.Type|null);
        }

        /** Represents an Identifier. */
        class Identifier implements IIdentifier {

            /**
             * Constructs a new Identifier.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.ManifestRecord.IIdentifier);

            /** Identifier raw. */
            public raw: Uint8Array;

            /** Identifier type. */
            public type: signalservice.ManifestRecord.Identifier.Type;

            /**
             * Creates a new Identifier instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Identifier instance
             */
            public static create(properties?: signalservice.ManifestRecord.IIdentifier): signalservice.ManifestRecord.Identifier;

            /**
             * Encodes the specified Identifier message. Does not implicitly {@link signalservice.ManifestRecord.Identifier.verify|verify} messages.
             * @param message Identifier message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.ManifestRecord.IIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Identifier message, length delimited. Does not implicitly {@link signalservice.ManifestRecord.Identifier.verify|verify} messages.
             * @param message Identifier message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.ManifestRecord.IIdentifier, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes an Identifier message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Identifier
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ManifestRecord.Identifier;

            /**
             * Decodes an Identifier message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Identifier
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ManifestRecord.Identifier;

            /**
             * Verifies an Identifier message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates an Identifier message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Identifier
             */
            public static fromObject(object: { [k: string]: any }): signalservice.ManifestRecord.Identifier;

            /**
             * Creates a plain object from an Identifier message. Also converts values to other types if specified.
             * @param message Identifier
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.ManifestRecord.Identifier, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Identifier to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Identifier
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Identifier {

            /** Type enum. */
            enum Type {
                UNKNOWN = 0,
                CONTACT = 1,
                GROUPV1 = 2,
                GROUPV2 = 3,
                ACCOUNT = 4,
                STORY_DISTRIBUTION_LIST = 5,
                STICKER_PACK = 6,
                CALL_LINK = 7,
                CHAT_FOLDER = 8,
                NOTIFICATION_PROFILE = 9
            }
        }
    }

    /** Properties of a StorageRecord. */
    interface IStorageRecord {

        /** StorageRecord contact */
        contact?: (signalservice.IContactRecord|null);

        /** StorageRecord groupV1 */
        groupV1?: (signalservice.IGroupV1Record|null);

        /** StorageRecord groupV2 */
        groupV2?: (signalservice.IGroupV2Record|null);

        /** StorageRecord account */
        account?: (signalservice.IAccountRecord|null);

        /** StorageRecord storyDistributionList */
        storyDistributionList?: (signalservice.IStoryDistributionListRecord|null);

        /** StorageRecord stickerPack */
        stickerPack?: (signalservice.IStickerPackRecord|null);

        /** StorageRecord callLink */
        callLink?: (signalservice.ICallLinkRecord|null);

        /** StorageRecord chatFolder */
        chatFolder?: (signalservice.IChatFolderRecord|null);

        /** StorageRecord notificationProfile */
        notificationProfile?: (signalservice.INotificationProfile|null);
    }

    /** Represents a StorageRecord. */
    class StorageRecord implements IStorageRecord {

        /**
         * Constructs a new StorageRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStorageRecord);

        /** StorageRecord contact. */
        public contact?: (signalservice.IContactRecord|null);

        /** StorageRecord groupV1. */
        public groupV1?: (signalservice.IGroupV1Record|null);

        /** StorageRecord groupV2. */
        public groupV2?: (signalservice.IGroupV2Record|null);

        /** StorageRecord account. */
        public account?: (signalservice.IAccountRecord|null);

        /** StorageRecord storyDistributionList. */
        public storyDistributionList?: (signalservice.IStoryDistributionListRecord|null);

        /** StorageRecord stickerPack. */
        public stickerPack?: (signalservice.IStickerPackRecord|null);

        /** StorageRecord callLink. */
        public callLink?: (signalservice.ICallLinkRecord|null);

        /** StorageRecord chatFolder. */
        public chatFolder?: (signalservice.IChatFolderRecord|null);

        /** StorageRecord notificationProfile. */
        public notificationProfile?: (signalservice.INotificationProfile|null);

        /** StorageRecord record. */
        public record?: ("contact"|"groupV1"|"groupV2"|"account"|"storyDistributionList"|"stickerPack"|"callLink"|"chatFolder"|"notificationProfile");

        /**
         * Creates a new StorageRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StorageRecord instance
         */
        public static create(properties?: signalservice.IStorageRecord): signalservice.StorageRecord;

        /**
         * Encodes the specified StorageRecord message. Does not implicitly {@link signalservice.StorageRecord.verify|verify} messages.
         * @param message StorageRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStorageRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StorageRecord message, length delimited. Does not implicitly {@link signalservice.StorageRecord.verify|verify} messages.
         * @param message StorageRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStorageRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StorageRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StorageRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StorageRecord;

        /**
         * Decodes a StorageRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StorageRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StorageRecord;

        /**
         * Verifies a StorageRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StorageRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StorageRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StorageRecord;

        /**
         * Creates a plain object from a StorageRecord message. Also converts values to other types if specified.
         * @param message StorageRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StorageRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StorageRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StorageRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** AvatarColor enum. */
    enum AvatarColor {
        A100 = 0,
        A110 = 1,
        A120 = 2,
        A130 = 3,
        A140 = 4,
        A150 = 5,
        A160 = 6,
        A170 = 7,
        A180 = 8,
        A190 = 9,
        A200 = 10,
        A210 = 11
    }

    /** Properties of a ContactRecord. */
    interface IContactRecord {

        /** ContactRecord aci */
        aci?: (string|null);

        /** ContactRecord e164 */
        e164?: (string|null);

        /** ContactRecord pni */
        pni?: (string|null);

        /** ContactRecord profileKey */
        profileKey?: (Uint8Array|null);

        /** ContactRecord identityKey */
        identityKey?: (Uint8Array|null);

        /** ContactRecord identityState */
        identityState?: (signalservice.ContactRecord.IdentityState|null);

        /** ContactRecord givenName */
        givenName?: (string|null);

        /** ContactRecord familyName */
        familyName?: (string|null);

        /** ContactRecord username */
        username?: (string|null);

        /** ContactRecord blocked */
        blocked?: (boolean|null);

        /** ContactRecord whitelisted */
        whitelisted?: (boolean|null);

        /** ContactRecord archived */
        archived?: (boolean|null);

        /** ContactRecord markedUnread */
        markedUnread?: (boolean|null);

        /** ContactRecord mutedUntilTimestamp */
        mutedUntilTimestamp?: (Long|null);

        /** ContactRecord hideStory */
        hideStory?: (boolean|null);

        /** ContactRecord unregisteredAtTimestamp */
        unregisteredAtTimestamp?: (Long|null);

        /** ContactRecord systemGivenName */
        systemGivenName?: (string|null);

        /** ContactRecord systemFamilyName */
        systemFamilyName?: (string|null);

        /** ContactRecord systemNickname */
        systemNickname?: (string|null);

        /** ContactRecord hidden */
        hidden?: (boolean|null);

        /** ContactRecord pniSignatureVerified */
        pniSignatureVerified?: (boolean|null);

        /** ContactRecord nickname */
        nickname?: (signalservice.ContactRecord.IName|null);

        /** ContactRecord note */
        note?: (string|null);

        /** ContactRecord avatarColor */
        avatarColor?: (signalservice.AvatarColor|null);
    }

    /** Represents a ContactRecord. */
    class ContactRecord implements IContactRecord {

        /**
         * Constructs a new ContactRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IContactRecord);

        /** ContactRecord aci. */
        public aci: string;

        /** ContactRecord e164. */
        public e164: string;

        /** ContactRecord pni. */
        public pni: string;

        /** ContactRecord profileKey. */
        public profileKey: Uint8Array;

        /** ContactRecord identityKey. */
        public identityKey: Uint8Array;

        /** ContactRecord identityState. */
        public identityState: signalservice.ContactRecord.IdentityState;

        /** ContactRecord givenName. */
        public givenName: string;

        /** ContactRecord familyName. */
        public familyName: string;

        /** ContactRecord username. */
        public username: string;

        /** ContactRecord blocked. */
        public blocked: boolean;

        /** ContactRecord whitelisted. */
        public whitelisted: boolean;

        /** ContactRecord archived. */
        public archived: boolean;

        /** ContactRecord markedUnread. */
        public markedUnread: boolean;

        /** ContactRecord mutedUntilTimestamp. */
        public mutedUntilTimestamp: Long;

        /** ContactRecord hideStory. */
        public hideStory: boolean;

        /** ContactRecord unregisteredAtTimestamp. */
        public unregisteredAtTimestamp: Long;

        /** ContactRecord systemGivenName. */
        public systemGivenName: string;

        /** ContactRecord systemFamilyName. */
        public systemFamilyName: string;

        /** ContactRecord systemNickname. */
        public systemNickname: string;

        /** ContactRecord hidden. */
        public hidden: boolean;

        /** ContactRecord pniSignatureVerified. */
        public pniSignatureVerified: boolean;

        /** ContactRecord nickname. */
        public nickname?: (signalservice.ContactRecord.IName|null);

        /** ContactRecord note. */
        public note: string;

        /** ContactRecord avatarColor. */
        public avatarColor?: (signalservice.AvatarColor|null);

        /** ContactRecord _avatarColor. */
        public _avatarColor?: "avatarColor";

        /**
         * Creates a new ContactRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ContactRecord instance
         */
        public static create(properties?: signalservice.IContactRecord): signalservice.ContactRecord;

        /**
         * Encodes the specified ContactRecord message. Does not implicitly {@link signalservice.ContactRecord.verify|verify} messages.
         * @param message ContactRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IContactRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ContactRecord message, length delimited. Does not implicitly {@link signalservice.ContactRecord.verify|verify} messages.
         * @param message ContactRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IContactRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ContactRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ContactRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ContactRecord;

        /**
         * Decodes a ContactRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ContactRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ContactRecord;

        /**
         * Verifies a ContactRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ContactRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ContactRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ContactRecord;

        /**
         * Creates a plain object from a ContactRecord message. Also converts values to other types if specified.
         * @param message ContactRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ContactRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ContactRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ContactRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ContactRecord {

        /** IdentityState enum. */
        enum IdentityState {
            DEFAULT = 0,
            VERIFIED = 1,
            UNVERIFIED = 2
        }

        /** Properties of a Name. */
        interface IName {

            /** Name given */
            given?: (string|null);

            /** Name family */
            family?: (string|null);
        }

        /** Represents a Name. */
        class Name implements IName {

            /**
             * Constructs a new Name.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.ContactRecord.IName);

            /** Name given. */
            public given: string;

            /** Name family. */
            public family: string;

            /**
             * Creates a new Name instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Name instance
             */
            public static create(properties?: signalservice.ContactRecord.IName): signalservice.ContactRecord.Name;

            /**
             * Encodes the specified Name message. Does not implicitly {@link signalservice.ContactRecord.Name.verify|verify} messages.
             * @param message Name message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.ContactRecord.IName, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Name message, length delimited. Does not implicitly {@link signalservice.ContactRecord.Name.verify|verify} messages.
             * @param message Name message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.ContactRecord.IName, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Name message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Name
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ContactRecord.Name;

            /**
             * Decodes a Name message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Name
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ContactRecord.Name;

            /**
             * Verifies a Name message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Name message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Name
             */
            public static fromObject(object: { [k: string]: any }): signalservice.ContactRecord.Name;

            /**
             * Creates a plain object from a Name message. Also converts values to other types if specified.
             * @param message Name
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.ContactRecord.Name, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Name to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Name
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a GroupV1Record. */
    interface IGroupV1Record {

        /** GroupV1Record id */
        id?: (Uint8Array|null);
    }

    /** Represents a GroupV1Record. */
    class GroupV1Record implements IGroupV1Record {

        /**
         * Constructs a new GroupV1Record.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupV1Record);

        /** GroupV1Record id. */
        public id: Uint8Array;

        /**
         * Creates a new GroupV1Record instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupV1Record instance
         */
        public static create(properties?: signalservice.IGroupV1Record): signalservice.GroupV1Record;

        /**
         * Encodes the specified GroupV1Record message. Does not implicitly {@link signalservice.GroupV1Record.verify|verify} messages.
         * @param message GroupV1Record message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupV1Record, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupV1Record message, length delimited. Does not implicitly {@link signalservice.GroupV1Record.verify|verify} messages.
         * @param message GroupV1Record message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupV1Record, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupV1Record message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupV1Record
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupV1Record;

        /**
         * Decodes a GroupV1Record message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupV1Record
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupV1Record;

        /**
         * Verifies a GroupV1Record message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupV1Record message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupV1Record
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupV1Record;

        /**
         * Creates a plain object from a GroupV1Record message. Also converts values to other types if specified.
         * @param message GroupV1Record
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupV1Record, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupV1Record to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupV1Record
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a GroupV2Record. */
    interface IGroupV2Record {

        /** GroupV2Record masterKey */
        masterKey?: (Uint8Array|null);

        /** GroupV2Record blocked */
        blocked?: (boolean|null);

        /** GroupV2Record whitelisted */
        whitelisted?: (boolean|null);

        /** GroupV2Record archived */
        archived?: (boolean|null);

        /** GroupV2Record markedUnread */
        markedUnread?: (boolean|null);

        /** GroupV2Record mutedUntilTimestamp */
        mutedUntilTimestamp?: (Long|null);

        /** GroupV2Record dontNotifyForMentionsIfMuted */
        dontNotifyForMentionsIfMuted?: (boolean|null);

        /** GroupV2Record hideStory */
        hideStory?: (boolean|null);

        /** GroupV2Record storySendMode */
        storySendMode?: (signalservice.GroupV2Record.StorySendMode|null);

        /** GroupV2Record avatarColor */
        avatarColor?: (signalservice.AvatarColor|null);
    }

    /** Represents a GroupV2Record. */
    class GroupV2Record implements IGroupV2Record {

        /**
         * Constructs a new GroupV2Record.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IGroupV2Record);

        /** GroupV2Record masterKey. */
        public masterKey: Uint8Array;

        /** GroupV2Record blocked. */
        public blocked: boolean;

        /** GroupV2Record whitelisted. */
        public whitelisted: boolean;

        /** GroupV2Record archived. */
        public archived: boolean;

        /** GroupV2Record markedUnread. */
        public markedUnread: boolean;

        /** GroupV2Record mutedUntilTimestamp. */
        public mutedUntilTimestamp: Long;

        /** GroupV2Record dontNotifyForMentionsIfMuted. */
        public dontNotifyForMentionsIfMuted: boolean;

        /** GroupV2Record hideStory. */
        public hideStory: boolean;

        /** GroupV2Record storySendMode. */
        public storySendMode: signalservice.GroupV2Record.StorySendMode;

        /** GroupV2Record avatarColor. */
        public avatarColor?: (signalservice.AvatarColor|null);

        /** GroupV2Record _avatarColor. */
        public _avatarColor?: "avatarColor";

        /**
         * Creates a new GroupV2Record instance using the specified properties.
         * @param [properties] Properties to set
         * @returns GroupV2Record instance
         */
        public static create(properties?: signalservice.IGroupV2Record): signalservice.GroupV2Record;

        /**
         * Encodes the specified GroupV2Record message. Does not implicitly {@link signalservice.GroupV2Record.verify|verify} messages.
         * @param message GroupV2Record message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IGroupV2Record, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified GroupV2Record message, length delimited. Does not implicitly {@link signalservice.GroupV2Record.verify|verify} messages.
         * @param message GroupV2Record message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IGroupV2Record, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a GroupV2Record message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns GroupV2Record
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.GroupV2Record;

        /**
         * Decodes a GroupV2Record message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns GroupV2Record
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.GroupV2Record;

        /**
         * Verifies a GroupV2Record message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a GroupV2Record message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns GroupV2Record
         */
        public static fromObject(object: { [k: string]: any }): signalservice.GroupV2Record;

        /**
         * Creates a plain object from a GroupV2Record message. Also converts values to other types if specified.
         * @param message GroupV2Record
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.GroupV2Record, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this GroupV2Record to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for GroupV2Record
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace GroupV2Record {

        /** StorySendMode enum. */
        enum StorySendMode {
            DEFAULT = 0,
            DISABLED = 1,
            ENABLED = 2
        }
    }

    /** Properties of an AccountRecord. */
    interface IAccountRecord {

        /** AccountRecord profileKey */
        profileKey?: (Uint8Array|null);

        /** AccountRecord givenName */
        givenName?: (string|null);

        /** AccountRecord familyName */
        familyName?: (string|null);

        /** AccountRecord avatarUrlPath */
        avatarUrlPath?: (string|null);

        /** AccountRecord noteToSelfArchived */
        noteToSelfArchived?: (boolean|null);

        /** AccountRecord readReceipts */
        readReceipts?: (boolean|null);

        /** AccountRecord sealedSenderIndicators */
        sealedSenderIndicators?: (boolean|null);

        /** AccountRecord typingIndicators */
        typingIndicators?: (boolean|null);

        /** AccountRecord noteToSelfMarkedUnread */
        noteToSelfMarkedUnread?: (boolean|null);

        /** AccountRecord linkPreviews */
        linkPreviews?: (boolean|null);

        /** AccountRecord phoneNumberSharingMode */
        phoneNumberSharingMode?: (signalservice.AccountRecord.PhoneNumberSharingMode|null);

        /** AccountRecord unlistedPhoneNumber */
        unlistedPhoneNumber?: (boolean|null);

        /** AccountRecord pinnedConversations */
        pinnedConversations?: (signalservice.AccountRecord.IPinnedConversation[]|null);

        /** AccountRecord preferContactAvatars */
        preferContactAvatars?: (boolean|null);

        /** AccountRecord universalExpireTimer */
        universalExpireTimer?: (number|null);

        /** AccountRecord preferredReactionEmoji */
        preferredReactionEmoji?: (string[]|null);

        /** AccountRecord donorSubscriberId */
        donorSubscriberId?: (Uint8Array|null);

        /** AccountRecord donorSubscriberCurrencyCode */
        donorSubscriberCurrencyCode?: (string|null);

        /** AccountRecord displayBadgesOnProfile */
        displayBadgesOnProfile?: (boolean|null);

        /** AccountRecord donorSubscriptionManuallyCancelled */
        donorSubscriptionManuallyCancelled?: (boolean|null);

        /** AccountRecord keepMutedChatsArchived */
        keepMutedChatsArchived?: (boolean|null);

        /** AccountRecord hasSetMyStoriesPrivacy */
        hasSetMyStoriesPrivacy?: (boolean|null);

        /** AccountRecord hasViewedOnboardingStory */
        hasViewedOnboardingStory?: (boolean|null);

        /** AccountRecord storiesDisabled */
        storiesDisabled?: (boolean|null);

        /** AccountRecord storyViewReceiptsEnabled */
        storyViewReceiptsEnabled?: (signalservice.OptionalBool|null);

        /** AccountRecord hasSeenGroupStoryEducationSheet */
        hasSeenGroupStoryEducationSheet?: (boolean|null);

        /** AccountRecord username */
        username?: (string|null);

        /** AccountRecord hasCompletedUsernameOnboarding */
        hasCompletedUsernameOnboarding?: (boolean|null);

        /** AccountRecord usernameLink */
        usernameLink?: (signalservice.AccountRecord.IUsernameLink|null);

        /** AccountRecord hasBackup */
        hasBackup?: (boolean|null);

        /** AccountRecord backupTier */
        backupTier?: (Long|null);

        /** AccountRecord backupSubscriberData */
        backupSubscriberData?: (signalservice.AccountRecord.IIAPSubscriberData|null);

        /** AccountRecord avatarColor */
        avatarColor?: (signalservice.AvatarColor|null);

        /** AccountRecord notificationProfileManualOverride */
        notificationProfileManualOverride?: (signalservice.AccountRecord.INotificationProfileManualOverride|null);
    }

    /** Represents an AccountRecord. */
    class AccountRecord implements IAccountRecord {

        /**
         * Constructs a new AccountRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IAccountRecord);

        /** AccountRecord profileKey. */
        public profileKey: Uint8Array;

        /** AccountRecord givenName. */
        public givenName: string;

        /** AccountRecord familyName. */
        public familyName: string;

        /** AccountRecord avatarUrlPath. */
        public avatarUrlPath: string;

        /** AccountRecord noteToSelfArchived. */
        public noteToSelfArchived: boolean;

        /** AccountRecord readReceipts. */
        public readReceipts: boolean;

        /** AccountRecord sealedSenderIndicators. */
        public sealedSenderIndicators: boolean;

        /** AccountRecord typingIndicators. */
        public typingIndicators: boolean;

        /** AccountRecord noteToSelfMarkedUnread. */
        public noteToSelfMarkedUnread: boolean;

        /** AccountRecord linkPreviews. */
        public linkPreviews: boolean;

        /** AccountRecord phoneNumberSharingMode. */
        public phoneNumberSharingMode: signalservice.AccountRecord.PhoneNumberSharingMode;

        /** AccountRecord unlistedPhoneNumber. */
        public unlistedPhoneNumber: boolean;

        /** AccountRecord pinnedConversations. */
        public pinnedConversations: signalservice.AccountRecord.IPinnedConversation[];

        /** AccountRecord preferContactAvatars. */
        public preferContactAvatars: boolean;

        /** AccountRecord universalExpireTimer. */
        public universalExpireTimer: number;

        /** AccountRecord preferredReactionEmoji. */
        public preferredReactionEmoji: string[];

        /** AccountRecord donorSubscriberId. */
        public donorSubscriberId: Uint8Array;

        /** AccountRecord donorSubscriberCurrencyCode. */
        public donorSubscriberCurrencyCode: string;

        /** AccountRecord displayBadgesOnProfile. */
        public displayBadgesOnProfile: boolean;

        /** AccountRecord donorSubscriptionManuallyCancelled. */
        public donorSubscriptionManuallyCancelled: boolean;

        /** AccountRecord keepMutedChatsArchived. */
        public keepMutedChatsArchived: boolean;

        /** AccountRecord hasSetMyStoriesPrivacy. */
        public hasSetMyStoriesPrivacy: boolean;

        /** AccountRecord hasViewedOnboardingStory. */
        public hasViewedOnboardingStory: boolean;

        /** AccountRecord storiesDisabled. */
        public storiesDisabled: boolean;

        /** AccountRecord storyViewReceiptsEnabled. */
        public storyViewReceiptsEnabled: signalservice.OptionalBool;

        /** AccountRecord hasSeenGroupStoryEducationSheet. */
        public hasSeenGroupStoryEducationSheet: boolean;

        /** AccountRecord username. */
        public username: string;

        /** AccountRecord hasCompletedUsernameOnboarding. */
        public hasCompletedUsernameOnboarding: boolean;

        /** AccountRecord usernameLink. */
        public usernameLink?: (signalservice.AccountRecord.IUsernameLink|null);

        /** AccountRecord hasBackup. */
        public hasBackup?: (boolean|null);

        /** AccountRecord backupTier. */
        public backupTier?: (Long|null);

        /** AccountRecord backupSubscriberData. */
        public backupSubscriberData?: (signalservice.AccountRecord.IIAPSubscriberData|null);

        /** AccountRecord avatarColor. */
        public avatarColor?: (signalservice.AvatarColor|null);

        /** AccountRecord notificationProfileManualOverride. */
        public notificationProfileManualOverride?: (signalservice.AccountRecord.INotificationProfileManualOverride|null);

        /** AccountRecord _hasBackup. */
        public _hasBackup?: "hasBackup";

        /** AccountRecord _backupTier. */
        public _backupTier?: "backupTier";

        /** AccountRecord _avatarColor. */
        public _avatarColor?: "avatarColor";

        /**
         * Creates a new AccountRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns AccountRecord instance
         */
        public static create(properties?: signalservice.IAccountRecord): signalservice.AccountRecord;

        /**
         * Encodes the specified AccountRecord message. Does not implicitly {@link signalservice.AccountRecord.verify|verify} messages.
         * @param message AccountRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IAccountRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified AccountRecord message, length delimited. Does not implicitly {@link signalservice.AccountRecord.verify|verify} messages.
         * @param message AccountRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IAccountRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an AccountRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns AccountRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord;

        /**
         * Decodes an AccountRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns AccountRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord;

        /**
         * Verifies an AccountRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an AccountRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns AccountRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord;

        /**
         * Creates a plain object from an AccountRecord message. Also converts values to other types if specified.
         * @param message AccountRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.AccountRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this AccountRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for AccountRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace AccountRecord {

        /** PhoneNumberSharingMode enum. */
        enum PhoneNumberSharingMode {
            UNKNOWN = 0,
            EVERYBODY = 1,
            NOBODY = 2
        }

        /** Properties of a PinnedConversation. */
        interface IPinnedConversation {

            /** PinnedConversation contact */
            contact?: (signalservice.AccountRecord.PinnedConversation.IContact|null);

            /** PinnedConversation legacyGroupId */
            legacyGroupId?: (Uint8Array|null);

            /** PinnedConversation groupMasterKey */
            groupMasterKey?: (Uint8Array|null);
        }

        /** Represents a PinnedConversation. */
        class PinnedConversation implements IPinnedConversation {

            /**
             * Constructs a new PinnedConversation.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.AccountRecord.IPinnedConversation);

            /** PinnedConversation contact. */
            public contact?: (signalservice.AccountRecord.PinnedConversation.IContact|null);

            /** PinnedConversation legacyGroupId. */
            public legacyGroupId?: (Uint8Array|null);

            /** PinnedConversation groupMasterKey. */
            public groupMasterKey?: (Uint8Array|null);

            /** PinnedConversation identifier. */
            public identifier?: ("contact"|"legacyGroupId"|"groupMasterKey");

            /**
             * Creates a new PinnedConversation instance using the specified properties.
             * @param [properties] Properties to set
             * @returns PinnedConversation instance
             */
            public static create(properties?: signalservice.AccountRecord.IPinnedConversation): signalservice.AccountRecord.PinnedConversation;

            /**
             * Encodes the specified PinnedConversation message. Does not implicitly {@link signalservice.AccountRecord.PinnedConversation.verify|verify} messages.
             * @param message PinnedConversation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.AccountRecord.IPinnedConversation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified PinnedConversation message, length delimited. Does not implicitly {@link signalservice.AccountRecord.PinnedConversation.verify|verify} messages.
             * @param message PinnedConversation message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.AccountRecord.IPinnedConversation, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a PinnedConversation message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns PinnedConversation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord.PinnedConversation;

            /**
             * Decodes a PinnedConversation message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns PinnedConversation
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord.PinnedConversation;

            /**
             * Verifies a PinnedConversation message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a PinnedConversation message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns PinnedConversation
             */
            public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord.PinnedConversation;

            /**
             * Creates a plain object from a PinnedConversation message. Also converts values to other types if specified.
             * @param message PinnedConversation
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.AccountRecord.PinnedConversation, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this PinnedConversation to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for PinnedConversation
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace PinnedConversation {

            /** Properties of a Contact. */
            interface IContact {

                /** Contact serviceId */
                serviceId?: (string|null);

                /** Contact e164 */
                e164?: (string|null);
            }

            /** Represents a Contact. */
            class Contact implements IContact {

                /**
                 * Constructs a new Contact.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.AccountRecord.PinnedConversation.IContact);

                /** Contact serviceId. */
                public serviceId: string;

                /** Contact e164. */
                public e164: string;

                /**
                 * Creates a new Contact instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns Contact instance
                 */
                public static create(properties?: signalservice.AccountRecord.PinnedConversation.IContact): signalservice.AccountRecord.PinnedConversation.Contact;

                /**
                 * Encodes the specified Contact message. Does not implicitly {@link signalservice.AccountRecord.PinnedConversation.Contact.verify|verify} messages.
                 * @param message Contact message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.AccountRecord.PinnedConversation.IContact, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified Contact message, length delimited. Does not implicitly {@link signalservice.AccountRecord.PinnedConversation.Contact.verify|verify} messages.
                 * @param message Contact message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.AccountRecord.PinnedConversation.IContact, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a Contact message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns Contact
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord.PinnedConversation.Contact;

                /**
                 * Decodes a Contact message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns Contact
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord.PinnedConversation.Contact;

                /**
                 * Verifies a Contact message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a Contact message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns Contact
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord.PinnedConversation.Contact;

                /**
                 * Creates a plain object from a Contact message. Also converts values to other types if specified.
                 * @param message Contact
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.AccountRecord.PinnedConversation.Contact, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this Contact to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for Contact
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }

        /** Properties of a UsernameLink. */
        interface IUsernameLink {

            /** UsernameLink entropy */
            entropy?: (Uint8Array|null);

            /** UsernameLink serverId */
            serverId?: (Uint8Array|null);

            /** UsernameLink color */
            color?: (signalservice.AccountRecord.UsernameLink.Color|null);
        }

        /** Represents a UsernameLink. */
        class UsernameLink implements IUsernameLink {

            /**
             * Constructs a new UsernameLink.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.AccountRecord.IUsernameLink);

            /** UsernameLink entropy. */
            public entropy: Uint8Array;

            /** UsernameLink serverId. */
            public serverId: Uint8Array;

            /** UsernameLink color. */
            public color: signalservice.AccountRecord.UsernameLink.Color;

            /**
             * Creates a new UsernameLink instance using the specified properties.
             * @param [properties] Properties to set
             * @returns UsernameLink instance
             */
            public static create(properties?: signalservice.AccountRecord.IUsernameLink): signalservice.AccountRecord.UsernameLink;

            /**
             * Encodes the specified UsernameLink message. Does not implicitly {@link signalservice.AccountRecord.UsernameLink.verify|verify} messages.
             * @param message UsernameLink message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.AccountRecord.IUsernameLink, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified UsernameLink message, length delimited. Does not implicitly {@link signalservice.AccountRecord.UsernameLink.verify|verify} messages.
             * @param message UsernameLink message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.AccountRecord.IUsernameLink, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a UsernameLink message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns UsernameLink
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord.UsernameLink;

            /**
             * Decodes a UsernameLink message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns UsernameLink
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord.UsernameLink;

            /**
             * Verifies a UsernameLink message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a UsernameLink message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns UsernameLink
             */
            public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord.UsernameLink;

            /**
             * Creates a plain object from a UsernameLink message. Also converts values to other types if specified.
             * @param message UsernameLink
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.AccountRecord.UsernameLink, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this UsernameLink to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for UsernameLink
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace UsernameLink {

            /** Color enum. */
            enum Color {
                UNKNOWN = 0,
                BLUE = 1,
                WHITE = 2,
                GREY = 3,
                OLIVE = 4,
                GREEN = 5,
                ORANGE = 6,
                PINK = 7,
                PURPLE = 8
            }
        }

        /** Properties of a IAPSubscriberData. */
        interface IIAPSubscriberData {

            /** IAPSubscriberData subscriberId */
            subscriberId?: (Uint8Array|null);

            /** IAPSubscriberData purchaseToken */
            purchaseToken?: (string|null);

            /** IAPSubscriberData originalTransactionId */
            originalTransactionId?: (Long|null);
        }

        /** Represents a IAPSubscriberData. */
        class IAPSubscriberData implements IIAPSubscriberData {

            /**
             * Constructs a new IAPSubscriberData.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.AccountRecord.IIAPSubscriberData);

            /** IAPSubscriberData subscriberId. */
            public subscriberId: Uint8Array;

            /** IAPSubscriberData purchaseToken. */
            public purchaseToken?: (string|null);

            /** IAPSubscriberData originalTransactionId. */
            public originalTransactionId?: (Long|null);

            /** IAPSubscriberData iapSubscriptionId. */
            public iapSubscriptionId?: ("purchaseToken"|"originalTransactionId");

            /**
             * Creates a new IAPSubscriberData instance using the specified properties.
             * @param [properties] Properties to set
             * @returns IAPSubscriberData instance
             */
            public static create(properties?: signalservice.AccountRecord.IIAPSubscriberData): signalservice.AccountRecord.IAPSubscriberData;

            /**
             * Encodes the specified IAPSubscriberData message. Does not implicitly {@link signalservice.AccountRecord.IAPSubscriberData.verify|verify} messages.
             * @param message IAPSubscriberData message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.AccountRecord.IIAPSubscriberData, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified IAPSubscriberData message, length delimited. Does not implicitly {@link signalservice.AccountRecord.IAPSubscriberData.verify|verify} messages.
             * @param message IAPSubscriberData message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.AccountRecord.IIAPSubscriberData, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a IAPSubscriberData message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns IAPSubscriberData
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord.IAPSubscriberData;

            /**
             * Decodes a IAPSubscriberData message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns IAPSubscriberData
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord.IAPSubscriberData;

            /**
             * Verifies a IAPSubscriberData message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a IAPSubscriberData message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns IAPSubscriberData
             */
            public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord.IAPSubscriberData;

            /**
             * Creates a plain object from a IAPSubscriberData message. Also converts values to other types if specified.
             * @param message IAPSubscriberData
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.AccountRecord.IAPSubscriberData, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this IAPSubscriberData to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for IAPSubscriberData
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a BackupTierHistory. */
        interface IBackupTierHistory {

            /** BackupTierHistory backupTier */
            backupTier?: (Long|null);

            /** BackupTierHistory endedAtTimestamp */
            endedAtTimestamp?: (Long|null);
        }

        /** Represents a BackupTierHistory. */
        class BackupTierHistory implements IBackupTierHistory {

            /**
             * Constructs a new BackupTierHistory.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.AccountRecord.IBackupTierHistory);

            /** BackupTierHistory backupTier. */
            public backupTier?: (Long|null);

            /** BackupTierHistory endedAtTimestamp. */
            public endedAtTimestamp?: (Long|null);

            /** BackupTierHistory _backupTier. */
            public _backupTier?: "backupTier";

            /** BackupTierHistory _endedAtTimestamp. */
            public _endedAtTimestamp?: "endedAtTimestamp";

            /**
             * Creates a new BackupTierHistory instance using the specified properties.
             * @param [properties] Properties to set
             * @returns BackupTierHistory instance
             */
            public static create(properties?: signalservice.AccountRecord.IBackupTierHistory): signalservice.AccountRecord.BackupTierHistory;

            /**
             * Encodes the specified BackupTierHistory message. Does not implicitly {@link signalservice.AccountRecord.BackupTierHistory.verify|verify} messages.
             * @param message BackupTierHistory message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.AccountRecord.IBackupTierHistory, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified BackupTierHistory message, length delimited. Does not implicitly {@link signalservice.AccountRecord.BackupTierHistory.verify|verify} messages.
             * @param message BackupTierHistory message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.AccountRecord.IBackupTierHistory, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a BackupTierHistory message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns BackupTierHistory
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord.BackupTierHistory;

            /**
             * Decodes a BackupTierHistory message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns BackupTierHistory
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord.BackupTierHistory;

            /**
             * Verifies a BackupTierHistory message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a BackupTierHistory message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns BackupTierHistory
             */
            public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord.BackupTierHistory;

            /**
             * Creates a plain object from a BackupTierHistory message. Also converts values to other types if specified.
             * @param message BackupTierHistory
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.AccountRecord.BackupTierHistory, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this BackupTierHistory to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for BackupTierHistory
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        /** Properties of a NotificationProfileManualOverride. */
        interface INotificationProfileManualOverride {

            /** NotificationProfileManualOverride disabledAtTimestampMs */
            disabledAtTimestampMs?: (Long|null);

            /** NotificationProfileManualOverride enabled */
            enabled?: (signalservice.AccountRecord.NotificationProfileManualOverride.IManuallyEnabled|null);
        }

        /** Represents a NotificationProfileManualOverride. */
        class NotificationProfileManualOverride implements INotificationProfileManualOverride {

            /**
             * Constructs a new NotificationProfileManualOverride.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.AccountRecord.INotificationProfileManualOverride);

            /** NotificationProfileManualOverride disabledAtTimestampMs. */
            public disabledAtTimestampMs?: (Long|null);

            /** NotificationProfileManualOverride enabled. */
            public enabled?: (signalservice.AccountRecord.NotificationProfileManualOverride.IManuallyEnabled|null);

            /** NotificationProfileManualOverride override. */
            public override?: ("disabledAtTimestampMs"|"enabled");

            /**
             * Creates a new NotificationProfileManualOverride instance using the specified properties.
             * @param [properties] Properties to set
             * @returns NotificationProfileManualOverride instance
             */
            public static create(properties?: signalservice.AccountRecord.INotificationProfileManualOverride): signalservice.AccountRecord.NotificationProfileManualOverride;

            /**
             * Encodes the specified NotificationProfileManualOverride message. Does not implicitly {@link signalservice.AccountRecord.NotificationProfileManualOverride.verify|verify} messages.
             * @param message NotificationProfileManualOverride message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.AccountRecord.INotificationProfileManualOverride, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified NotificationProfileManualOverride message, length delimited. Does not implicitly {@link signalservice.AccountRecord.NotificationProfileManualOverride.verify|verify} messages.
             * @param message NotificationProfileManualOverride message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.AccountRecord.INotificationProfileManualOverride, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a NotificationProfileManualOverride message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns NotificationProfileManualOverride
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord.NotificationProfileManualOverride;

            /**
             * Decodes a NotificationProfileManualOverride message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns NotificationProfileManualOverride
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord.NotificationProfileManualOverride;

            /**
             * Verifies a NotificationProfileManualOverride message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a NotificationProfileManualOverride message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns NotificationProfileManualOverride
             */
            public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord.NotificationProfileManualOverride;

            /**
             * Creates a plain object from a NotificationProfileManualOverride message. Also converts values to other types if specified.
             * @param message NotificationProfileManualOverride
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.AccountRecord.NotificationProfileManualOverride, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this NotificationProfileManualOverride to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for NotificationProfileManualOverride
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace NotificationProfileManualOverride {

            /** Properties of a ManuallyEnabled. */
            interface IManuallyEnabled {

                /** ManuallyEnabled id */
                id?: (Uint8Array|null);

                /** ManuallyEnabled endAtTimestampMs */
                endAtTimestampMs?: (Long|null);
            }

            /** Represents a ManuallyEnabled. */
            class ManuallyEnabled implements IManuallyEnabled {

                /**
                 * Constructs a new ManuallyEnabled.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signalservice.AccountRecord.NotificationProfileManualOverride.IManuallyEnabled);

                /** ManuallyEnabled id. */
                public id: Uint8Array;

                /** ManuallyEnabled endAtTimestampMs. */
                public endAtTimestampMs: Long;

                /**
                 * Creates a new ManuallyEnabled instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns ManuallyEnabled instance
                 */
                public static create(properties?: signalservice.AccountRecord.NotificationProfileManualOverride.IManuallyEnabled): signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled;

                /**
                 * Encodes the specified ManuallyEnabled message. Does not implicitly {@link signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled.verify|verify} messages.
                 * @param message ManuallyEnabled message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signalservice.AccountRecord.NotificationProfileManualOverride.IManuallyEnabled, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified ManuallyEnabled message, length delimited. Does not implicitly {@link signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled.verify|verify} messages.
                 * @param message ManuallyEnabled message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signalservice.AccountRecord.NotificationProfileManualOverride.IManuallyEnabled, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a ManuallyEnabled message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns ManuallyEnabled
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled;

                /**
                 * Decodes a ManuallyEnabled message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns ManuallyEnabled
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled;

                /**
                 * Verifies a ManuallyEnabled message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a ManuallyEnabled message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns ManuallyEnabled
                 */
                public static fromObject(object: { [k: string]: any }): signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled;

                /**
                 * Creates a plain object from a ManuallyEnabled message. Also converts values to other types if specified.
                 * @param message ManuallyEnabled
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signalservice.AccountRecord.NotificationProfileManualOverride.ManuallyEnabled, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this ManuallyEnabled to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for ManuallyEnabled
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }
    }

    /** Properties of a StoryDistributionListRecord. */
    interface IStoryDistributionListRecord {

        /** StoryDistributionListRecord identifier */
        identifier?: (Uint8Array|null);

        /** StoryDistributionListRecord name */
        name?: (string|null);

        /** StoryDistributionListRecord recipientServiceIds */
        recipientServiceIds?: (string[]|null);

        /** StoryDistributionListRecord deletedAtTimestamp */
        deletedAtTimestamp?: (Long|null);

        /** StoryDistributionListRecord allowsReplies */
        allowsReplies?: (boolean|null);

        /** StoryDistributionListRecord isBlockList */
        isBlockList?: (boolean|null);
    }

    /** Represents a StoryDistributionListRecord. */
    class StoryDistributionListRecord implements IStoryDistributionListRecord {

        /**
         * Constructs a new StoryDistributionListRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStoryDistributionListRecord);

        /** StoryDistributionListRecord identifier. */
        public identifier: Uint8Array;

        /** StoryDistributionListRecord name. */
        public name: string;

        /** StoryDistributionListRecord recipientServiceIds. */
        public recipientServiceIds: string[];

        /** StoryDistributionListRecord deletedAtTimestamp. */
        public deletedAtTimestamp: Long;

        /** StoryDistributionListRecord allowsReplies. */
        public allowsReplies: boolean;

        /** StoryDistributionListRecord isBlockList. */
        public isBlockList: boolean;

        /**
         * Creates a new StoryDistributionListRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StoryDistributionListRecord instance
         */
        public static create(properties?: signalservice.IStoryDistributionListRecord): signalservice.StoryDistributionListRecord;

        /**
         * Encodes the specified StoryDistributionListRecord message. Does not implicitly {@link signalservice.StoryDistributionListRecord.verify|verify} messages.
         * @param message StoryDistributionListRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStoryDistributionListRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StoryDistributionListRecord message, length delimited. Does not implicitly {@link signalservice.StoryDistributionListRecord.verify|verify} messages.
         * @param message StoryDistributionListRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStoryDistributionListRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StoryDistributionListRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StoryDistributionListRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StoryDistributionListRecord;

        /**
         * Decodes a StoryDistributionListRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StoryDistributionListRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StoryDistributionListRecord;

        /**
         * Verifies a StoryDistributionListRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StoryDistributionListRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StoryDistributionListRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StoryDistributionListRecord;

        /**
         * Creates a plain object from a StoryDistributionListRecord message. Also converts values to other types if specified.
         * @param message StoryDistributionListRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StoryDistributionListRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StoryDistributionListRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StoryDistributionListRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a StickerPackRecord. */
    interface IStickerPackRecord {

        /** StickerPackRecord packId */
        packId?: (Uint8Array|null);

        /** StickerPackRecord packKey */
        packKey?: (Uint8Array|null);

        /** StickerPackRecord position */
        position?: (number|null);

        /** StickerPackRecord deletedAtTimestamp */
        deletedAtTimestamp?: (Long|null);
    }

    /** Represents a StickerPackRecord. */
    class StickerPackRecord implements IStickerPackRecord {

        /**
         * Constructs a new StickerPackRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStickerPackRecord);

        /** StickerPackRecord packId. */
        public packId: Uint8Array;

        /** StickerPackRecord packKey. */
        public packKey: Uint8Array;

        /** StickerPackRecord position. */
        public position: number;

        /** StickerPackRecord deletedAtTimestamp. */
        public deletedAtTimestamp: Long;

        /**
         * Creates a new StickerPackRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StickerPackRecord instance
         */
        public static create(properties?: signalservice.IStickerPackRecord): signalservice.StickerPackRecord;

        /**
         * Encodes the specified StickerPackRecord message. Does not implicitly {@link signalservice.StickerPackRecord.verify|verify} messages.
         * @param message StickerPackRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStickerPackRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StickerPackRecord message, length delimited. Does not implicitly {@link signalservice.StickerPackRecord.verify|verify} messages.
         * @param message StickerPackRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStickerPackRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StickerPackRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StickerPackRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StickerPackRecord;

        /**
         * Decodes a StickerPackRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StickerPackRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StickerPackRecord;

        /**
         * Verifies a StickerPackRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StickerPackRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StickerPackRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StickerPackRecord;

        /**
         * Creates a plain object from a StickerPackRecord message. Also converts values to other types if specified.
         * @param message StickerPackRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StickerPackRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StickerPackRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StickerPackRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a CallLinkRecord. */
    interface ICallLinkRecord {

        /** CallLinkRecord rootKey */
        rootKey?: (Uint8Array|null);

        /** CallLinkRecord adminPasskey */
        adminPasskey?: (Uint8Array|null);

        /** CallLinkRecord deletedAtTimestampMs */
        deletedAtTimestampMs?: (Long|null);
    }

    /** Represents a CallLinkRecord. */
    class CallLinkRecord implements ICallLinkRecord {

        /**
         * Constructs a new CallLinkRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ICallLinkRecord);

        /** CallLinkRecord rootKey. */
        public rootKey: Uint8Array;

        /** CallLinkRecord adminPasskey. */
        public adminPasskey: Uint8Array;

        /** CallLinkRecord deletedAtTimestampMs. */
        public deletedAtTimestampMs: Long;

        /**
         * Creates a new CallLinkRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns CallLinkRecord instance
         */
        public static create(properties?: signalservice.ICallLinkRecord): signalservice.CallLinkRecord;

        /**
         * Encodes the specified CallLinkRecord message. Does not implicitly {@link signalservice.CallLinkRecord.verify|verify} messages.
         * @param message CallLinkRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ICallLinkRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified CallLinkRecord message, length delimited. Does not implicitly {@link signalservice.CallLinkRecord.verify|verify} messages.
         * @param message CallLinkRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ICallLinkRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a CallLinkRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns CallLinkRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.CallLinkRecord;

        /**
         * Decodes a CallLinkRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns CallLinkRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.CallLinkRecord;

        /**
         * Verifies a CallLinkRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a CallLinkRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns CallLinkRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.CallLinkRecord;

        /**
         * Creates a plain object from a CallLinkRecord message. Also converts values to other types if specified.
         * @param message CallLinkRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.CallLinkRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this CallLinkRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for CallLinkRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a Recipient. */
    interface IRecipient {

        /** Recipient contact */
        contact?: (signalservice.Recipient.IContact|null);

        /** Recipient legacyGroupId */
        legacyGroupId?: (Uint8Array|null);

        /** Recipient groupMasterKey */
        groupMasterKey?: (Uint8Array|null);
    }

    /** Represents a Recipient. */
    class Recipient implements IRecipient {

        /**
         * Constructs a new Recipient.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IRecipient);

        /** Recipient contact. */
        public contact?: (signalservice.Recipient.IContact|null);

        /** Recipient legacyGroupId. */
        public legacyGroupId?: (Uint8Array|null);

        /** Recipient groupMasterKey. */
        public groupMasterKey?: (Uint8Array|null);

        /** Recipient identifier. */
        public identifier?: ("contact"|"legacyGroupId"|"groupMasterKey");

        /**
         * Creates a new Recipient instance using the specified properties.
         * @param [properties] Properties to set
         * @returns Recipient instance
         */
        public static create(properties?: signalservice.IRecipient): signalservice.Recipient;

        /**
         * Encodes the specified Recipient message. Does not implicitly {@link signalservice.Recipient.verify|verify} messages.
         * @param message Recipient message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified Recipient message, length delimited. Does not implicitly {@link signalservice.Recipient.verify|verify} messages.
         * @param message Recipient message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IRecipient, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a Recipient message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns Recipient
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Recipient;

        /**
         * Decodes a Recipient message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns Recipient
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Recipient;

        /**
         * Verifies a Recipient message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a Recipient message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns Recipient
         */
        public static fromObject(object: { [k: string]: any }): signalservice.Recipient;

        /**
         * Creates a plain object from a Recipient message. Also converts values to other types if specified.
         * @param message Recipient
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.Recipient, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this Recipient to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for Recipient
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace Recipient {

        /** Properties of a Contact. */
        interface IContact {

            /** Contact serviceId */
            serviceId?: (string|null);

            /** Contact e164 */
            e164?: (string|null);
        }

        /** Represents a Contact. */
        class Contact implements IContact {

            /**
             * Constructs a new Contact.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.Recipient.IContact);

            /** Contact serviceId. */
            public serviceId: string;

            /** Contact e164. */
            public e164: string;

            /**
             * Creates a new Contact instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Contact instance
             */
            public static create(properties?: signalservice.Recipient.IContact): signalservice.Recipient.Contact;

            /**
             * Encodes the specified Contact message. Does not implicitly {@link signalservice.Recipient.Contact.verify|verify} messages.
             * @param message Contact message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.Recipient.IContact, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Contact message, length delimited. Does not implicitly {@link signalservice.Recipient.Contact.verify|verify} messages.
             * @param message Contact message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.Recipient.IContact, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Contact message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Contact
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.Recipient.Contact;

            /**
             * Decodes a Contact message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Contact
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.Recipient.Contact;

            /**
             * Verifies a Contact message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Contact message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Contact
             */
            public static fromObject(object: { [k: string]: any }): signalservice.Recipient.Contact;

            /**
             * Creates a plain object from a Contact message. Also converts values to other types if specified.
             * @param message Contact
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.Recipient.Contact, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Contact to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Contact
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a ChatFolderRecord. */
    interface IChatFolderRecord {

        /** ChatFolderRecord id */
        id?: (Uint8Array|null);

        /** ChatFolderRecord name */
        name?: (string|null);

        /** ChatFolderRecord position */
        position?: (number|null);

        /** ChatFolderRecord showOnlyUnread */
        showOnlyUnread?: (boolean|null);

        /** ChatFolderRecord showMutedChats */
        showMutedChats?: (boolean|null);

        /** ChatFolderRecord includeAllIndividualChats */
        includeAllIndividualChats?: (boolean|null);

        /** ChatFolderRecord includeAllGroupChats */
        includeAllGroupChats?: (boolean|null);

        /** ChatFolderRecord folderType */
        folderType?: (signalservice.ChatFolderRecord.FolderType|null);

        /** ChatFolderRecord includedRecipients */
        includedRecipients?: (signalservice.IRecipient[]|null);

        /** ChatFolderRecord excludedRecipients */
        excludedRecipients?: (signalservice.IRecipient[]|null);

        /** ChatFolderRecord deletedAtTimestampMs */
        deletedAtTimestampMs?: (Long|null);
    }

    /** Represents a ChatFolderRecord. */
    class ChatFolderRecord implements IChatFolderRecord {

        /**
         * Constructs a new ChatFolderRecord.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IChatFolderRecord);

        /** ChatFolderRecord id. */
        public id: Uint8Array;

        /** ChatFolderRecord name. */
        public name: string;

        /** ChatFolderRecord position. */
        public position: number;

        /** ChatFolderRecord showOnlyUnread. */
        public showOnlyUnread: boolean;

        /** ChatFolderRecord showMutedChats. */
        public showMutedChats: boolean;

        /** ChatFolderRecord includeAllIndividualChats. */
        public includeAllIndividualChats: boolean;

        /** ChatFolderRecord includeAllGroupChats. */
        public includeAllGroupChats: boolean;

        /** ChatFolderRecord folderType. */
        public folderType: signalservice.ChatFolderRecord.FolderType;

        /** ChatFolderRecord includedRecipients. */
        public includedRecipients: signalservice.IRecipient[];

        /** ChatFolderRecord excludedRecipients. */
        public excludedRecipients: signalservice.IRecipient[];

        /** ChatFolderRecord deletedAtTimestampMs. */
        public deletedAtTimestampMs: Long;

        /**
         * Creates a new ChatFolderRecord instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ChatFolderRecord instance
         */
        public static create(properties?: signalservice.IChatFolderRecord): signalservice.ChatFolderRecord;

        /**
         * Encodes the specified ChatFolderRecord message. Does not implicitly {@link signalservice.ChatFolderRecord.verify|verify} messages.
         * @param message ChatFolderRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IChatFolderRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ChatFolderRecord message, length delimited. Does not implicitly {@link signalservice.ChatFolderRecord.verify|verify} messages.
         * @param message ChatFolderRecord message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IChatFolderRecord, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ChatFolderRecord message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ChatFolderRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ChatFolderRecord;

        /**
         * Decodes a ChatFolderRecord message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ChatFolderRecord
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ChatFolderRecord;

        /**
         * Verifies a ChatFolderRecord message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ChatFolderRecord message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ChatFolderRecord
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ChatFolderRecord;

        /**
         * Creates a plain object from a ChatFolderRecord message. Also converts values to other types if specified.
         * @param message ChatFolderRecord
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ChatFolderRecord, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ChatFolderRecord to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ChatFolderRecord
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ChatFolderRecord {

        /** FolderType enum. */
        enum FolderType {
            UNKNOWN = 0,
            ALL = 1,
            CUSTOM = 2
        }
    }

    /** Properties of a NotificationProfile. */
    interface INotificationProfile {

        /** NotificationProfile id */
        id?: (Uint8Array|null);

        /** NotificationProfile name */
        name?: (string|null);

        /** NotificationProfile emoji */
        emoji?: (string|null);

        /** NotificationProfile color */
        color?: (number|null);

        /** NotificationProfile createdAtMs */
        createdAtMs?: (Long|null);

        /** NotificationProfile allowAllCalls */
        allowAllCalls?: (boolean|null);

        /** NotificationProfile allowAllMentions */
        allowAllMentions?: (boolean|null);

        /** NotificationProfile allowedMembers */
        allowedMembers?: (signalservice.IRecipient[]|null);

        /** NotificationProfile scheduleEnabled */
        scheduleEnabled?: (boolean|null);

        /** NotificationProfile scheduleStartTime */
        scheduleStartTime?: (number|null);

        /** NotificationProfile scheduleEndTime */
        scheduleEndTime?: (number|null);

        /** NotificationProfile scheduleDaysEnabled */
        scheduleDaysEnabled?: (signalservice.NotificationProfile.DayOfWeek[]|null);

        /** NotificationProfile deletedAtTimestampMs */
        deletedAtTimestampMs?: (Long|null);
    }

    /** Represents a NotificationProfile. */
    class NotificationProfile implements INotificationProfile {

        /**
         * Constructs a new NotificationProfile.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.INotificationProfile);

        /** NotificationProfile id. */
        public id: Uint8Array;

        /** NotificationProfile name. */
        public name: string;

        /** NotificationProfile emoji. */
        public emoji?: (string|null);

        /** NotificationProfile color. */
        public color: number;

        /** NotificationProfile createdAtMs. */
        public createdAtMs: Long;

        /** NotificationProfile allowAllCalls. */
        public allowAllCalls: boolean;

        /** NotificationProfile allowAllMentions. */
        public allowAllMentions: boolean;

        /** NotificationProfile allowedMembers. */
        public allowedMembers: signalservice.IRecipient[];

        /** NotificationProfile scheduleEnabled. */
        public scheduleEnabled: boolean;

        /** NotificationProfile scheduleStartTime. */
        public scheduleStartTime: number;

        /** NotificationProfile scheduleEndTime. */
        public scheduleEndTime: number;

        /** NotificationProfile scheduleDaysEnabled. */
        public scheduleDaysEnabled: signalservice.NotificationProfile.DayOfWeek[];

        /** NotificationProfile deletedAtTimestampMs. */
        public deletedAtTimestampMs: Long;

        /** NotificationProfile _emoji. */
        public _emoji?: "emoji";

        /**
         * Creates a new NotificationProfile instance using the specified properties.
         * @param [properties] Properties to set
         * @returns NotificationProfile instance
         */
        public static create(properties?: signalservice.INotificationProfile): signalservice.NotificationProfile;

        /**
         * Encodes the specified NotificationProfile message. Does not implicitly {@link signalservice.NotificationProfile.verify|verify} messages.
         * @param message NotificationProfile message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.INotificationProfile, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified NotificationProfile message, length delimited. Does not implicitly {@link signalservice.NotificationProfile.verify|verify} messages.
         * @param message NotificationProfile message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.INotificationProfile, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a NotificationProfile message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns NotificationProfile
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.NotificationProfile;

        /**
         * Decodes a NotificationProfile message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns NotificationProfile
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.NotificationProfile;

        /**
         * Verifies a NotificationProfile message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a NotificationProfile message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns NotificationProfile
         */
        public static fromObject(object: { [k: string]: any }): signalservice.NotificationProfile;

        /**
         * Creates a plain object from a NotificationProfile message. Also converts values to other types if specified.
         * @param message NotificationProfile
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.NotificationProfile, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this NotificationProfile to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for NotificationProfile
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace NotificationProfile {

        /** DayOfWeek enum. */
        enum DayOfWeek {
            UNKNOWN = 0,
            MONDAY = 1,
            TUESDAY = 2,
            WEDNESDAY = 3,
            THURSDAY = 4,
            FRIDAY = 5,
            SATURDAY = 6,
            SUNDAY = 7
        }
    }

    /** Properties of a StickerPack. */
    interface IStickerPack {

        /** StickerPack title */
        title?: (string|null);

        /** StickerPack author */
        author?: (string|null);

        /** StickerPack cover */
        cover?: (signalservice.StickerPack.ISticker|null);

        /** StickerPack stickers */
        stickers?: (signalservice.StickerPack.ISticker[]|null);
    }

    /** Represents a StickerPack. */
    class StickerPack implements IStickerPack {

        /**
         * Constructs a new StickerPack.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IStickerPack);

        /** StickerPack title. */
        public title: string;

        /** StickerPack author. */
        public author: string;

        /** StickerPack cover. */
        public cover?: (signalservice.StickerPack.ISticker|null);

        /** StickerPack stickers. */
        public stickers: signalservice.StickerPack.ISticker[];

        /**
         * Creates a new StickerPack instance using the specified properties.
         * @param [properties] Properties to set
         * @returns StickerPack instance
         */
        public static create(properties?: signalservice.IStickerPack): signalservice.StickerPack;

        /**
         * Encodes the specified StickerPack message. Does not implicitly {@link signalservice.StickerPack.verify|verify} messages.
         * @param message StickerPack message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IStickerPack, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified StickerPack message, length delimited. Does not implicitly {@link signalservice.StickerPack.verify|verify} messages.
         * @param message StickerPack message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IStickerPack, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a StickerPack message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns StickerPack
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StickerPack;

        /**
         * Decodes a StickerPack message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns StickerPack
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StickerPack;

        /**
         * Verifies a StickerPack message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a StickerPack message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns StickerPack
         */
        public static fromObject(object: { [k: string]: any }): signalservice.StickerPack;

        /**
         * Creates a plain object from a StickerPack message. Also converts values to other types if specified.
         * @param message StickerPack
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.StickerPack, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this StickerPack to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for StickerPack
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace StickerPack {

        /** Properties of a Sticker. */
        interface ISticker {

            /** Sticker id */
            id?: (number|null);

            /** Sticker emoji */
            emoji?: (string|null);
        }

        /** Represents a Sticker. */
        class Sticker implements ISticker {

            /**
             * Constructs a new Sticker.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.StickerPack.ISticker);

            /** Sticker id. */
            public id: number;

            /** Sticker emoji. */
            public emoji: string;

            /**
             * Creates a new Sticker instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Sticker instance
             */
            public static create(properties?: signalservice.StickerPack.ISticker): signalservice.StickerPack.Sticker;

            /**
             * Encodes the specified Sticker message. Does not implicitly {@link signalservice.StickerPack.Sticker.verify|verify} messages.
             * @param message Sticker message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.StickerPack.ISticker, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Sticker message, length delimited. Does not implicitly {@link signalservice.StickerPack.Sticker.verify|verify} messages.
             * @param message Sticker message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.StickerPack.ISticker, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Sticker message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Sticker
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.StickerPack.Sticker;

            /**
             * Decodes a Sticker message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Sticker
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.StickerPack.Sticker;

            /**
             * Verifies a Sticker message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Sticker message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Sticker
             */
            public static fromObject(object: { [k: string]: any }): signalservice.StickerPack.Sticker;

            /**
             * Creates a plain object from a Sticker message. Also converts values to other types if specified.
             * @param message Sticker
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.StickerPack.Sticker, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Sticker to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Sticker
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a WebSocketRequestMessage. */
    interface IWebSocketRequestMessage {

        /** WebSocketRequestMessage verb */
        verb?: (string|null);

        /** WebSocketRequestMessage path */
        path?: (string|null);

        /** WebSocketRequestMessage body */
        body?: (Uint8Array|null);

        /** WebSocketRequestMessage headers */
        headers?: (string[]|null);

        /** WebSocketRequestMessage id */
        id?: (Long|null);
    }

    /** Represents a WebSocketRequestMessage. */
    class WebSocketRequestMessage implements IWebSocketRequestMessage {

        /**
         * Constructs a new WebSocketRequestMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IWebSocketRequestMessage);

        /** WebSocketRequestMessage verb. */
        public verb: string;

        /** WebSocketRequestMessage path. */
        public path: string;

        /** WebSocketRequestMessage body. */
        public body: Uint8Array;

        /** WebSocketRequestMessage headers. */
        public headers: string[];

        /** WebSocketRequestMessage id. */
        public id: Long;

        /**
         * Creates a new WebSocketRequestMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WebSocketRequestMessage instance
         */
        public static create(properties?: signalservice.IWebSocketRequestMessage): signalservice.WebSocketRequestMessage;

        /**
         * Encodes the specified WebSocketRequestMessage message. Does not implicitly {@link signalservice.WebSocketRequestMessage.verify|verify} messages.
         * @param message WebSocketRequestMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IWebSocketRequestMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified WebSocketRequestMessage message, length delimited. Does not implicitly {@link signalservice.WebSocketRequestMessage.verify|verify} messages.
         * @param message WebSocketRequestMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IWebSocketRequestMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a WebSocketRequestMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WebSocketRequestMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.WebSocketRequestMessage;

        /**
         * Decodes a WebSocketRequestMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WebSocketRequestMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.WebSocketRequestMessage;

        /**
         * Verifies a WebSocketRequestMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a WebSocketRequestMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WebSocketRequestMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.WebSocketRequestMessage;

        /**
         * Creates a plain object from a WebSocketRequestMessage message. Also converts values to other types if specified.
         * @param message WebSocketRequestMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.WebSocketRequestMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this WebSocketRequestMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WebSocketRequestMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WebSocketResponseMessage. */
    interface IWebSocketResponseMessage {

        /** WebSocketResponseMessage id */
        id?: (Long|null);

        /** WebSocketResponseMessage status */
        status?: (number|null);

        /** WebSocketResponseMessage message */
        message?: (string|null);

        /** WebSocketResponseMessage headers */
        headers?: (string[]|null);

        /** WebSocketResponseMessage body */
        body?: (Uint8Array|null);
    }

    /** Represents a WebSocketResponseMessage. */
    class WebSocketResponseMessage implements IWebSocketResponseMessage {

        /**
         * Constructs a new WebSocketResponseMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IWebSocketResponseMessage);

        /** WebSocketResponseMessage id. */
        public id: Long;

        /** WebSocketResponseMessage status. */
        public status: number;

        /** WebSocketResponseMessage message. */
        public message: string;

        /** WebSocketResponseMessage headers. */
        public headers: string[];

        /** WebSocketResponseMessage body. */
        public body: Uint8Array;

        /**
         * Creates a new WebSocketResponseMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WebSocketResponseMessage instance
         */
        public static create(properties?: signalservice.IWebSocketResponseMessage): signalservice.WebSocketResponseMessage;

        /**
         * Encodes the specified WebSocketResponseMessage message. Does not implicitly {@link signalservice.WebSocketResponseMessage.verify|verify} messages.
         * @param message WebSocketResponseMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IWebSocketResponseMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified WebSocketResponseMessage message, length delimited. Does not implicitly {@link signalservice.WebSocketResponseMessage.verify|verify} messages.
         * @param message WebSocketResponseMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IWebSocketResponseMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a WebSocketResponseMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WebSocketResponseMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.WebSocketResponseMessage;

        /**
         * Decodes a WebSocketResponseMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WebSocketResponseMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.WebSocketResponseMessage;

        /**
         * Verifies a WebSocketResponseMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a WebSocketResponseMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WebSocketResponseMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.WebSocketResponseMessage;

        /**
         * Creates a plain object from a WebSocketResponseMessage message. Also converts values to other types if specified.
         * @param message WebSocketResponseMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.WebSocketResponseMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this WebSocketResponseMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WebSocketResponseMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    /** Properties of a WebSocketMessage. */
    interface IWebSocketMessage {

        /** WebSocketMessage type */
        type?: (signalservice.WebSocketMessage.Type|null);

        /** WebSocketMessage request */
        request?: (signalservice.IWebSocketRequestMessage|null);

        /** WebSocketMessage response */
        response?: (signalservice.IWebSocketResponseMessage|null);
    }

    /** Represents a WebSocketMessage. */
    class WebSocketMessage implements IWebSocketMessage {

        /**
         * Constructs a new WebSocketMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IWebSocketMessage);

        /** WebSocketMessage type. */
        public type: signalservice.WebSocketMessage.Type;

        /** WebSocketMessage request. */
        public request?: (signalservice.IWebSocketRequestMessage|null);

        /** WebSocketMessage response. */
        public response?: (signalservice.IWebSocketResponseMessage|null);

        /**
         * Creates a new WebSocketMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns WebSocketMessage instance
         */
        public static create(properties?: signalservice.IWebSocketMessage): signalservice.WebSocketMessage;

        /**
         * Encodes the specified WebSocketMessage message. Does not implicitly {@link signalservice.WebSocketMessage.verify|verify} messages.
         * @param message WebSocketMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IWebSocketMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified WebSocketMessage message, length delimited. Does not implicitly {@link signalservice.WebSocketMessage.verify|verify} messages.
         * @param message WebSocketMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IWebSocketMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a WebSocketMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns WebSocketMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.WebSocketMessage;

        /**
         * Decodes a WebSocketMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns WebSocketMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.WebSocketMessage;

        /**
         * Verifies a WebSocketMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a WebSocketMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns WebSocketMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.WebSocketMessage;

        /**
         * Creates a plain object from a WebSocketMessage message. Also converts values to other types if specified.
         * @param message WebSocketMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.WebSocketMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this WebSocketMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for WebSocketMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace WebSocketMessage {

        /** Type enum. */
        enum Type {
            UNKNOWN = 0,
            REQUEST = 1,
            RESPONSE = 2
        }
    }

    /** Properties of a ServerCertificate. */
    interface IServerCertificate {

        /** ServerCertificate certificate */
        certificate?: (Uint8Array|null);

        /** ServerCertificate signature */
        signature?: (Uint8Array|null);
    }

    /** Represents a ServerCertificate. */
    class ServerCertificate implements IServerCertificate {

        /**
         * Constructs a new ServerCertificate.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IServerCertificate);

        /** ServerCertificate certificate. */
        public certificate: Uint8Array;

        /** ServerCertificate signature. */
        public signature: Uint8Array;

        /**
         * Creates a new ServerCertificate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns ServerCertificate instance
         */
        public static create(properties?: signalservice.IServerCertificate): signalservice.ServerCertificate;

        /**
         * Encodes the specified ServerCertificate message. Does not implicitly {@link signalservice.ServerCertificate.verify|verify} messages.
         * @param message ServerCertificate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IServerCertificate, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified ServerCertificate message, length delimited. Does not implicitly {@link signalservice.ServerCertificate.verify|verify} messages.
         * @param message ServerCertificate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IServerCertificate, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a ServerCertificate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns ServerCertificate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ServerCertificate;

        /**
         * Decodes a ServerCertificate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns ServerCertificate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ServerCertificate;

        /**
         * Verifies a ServerCertificate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a ServerCertificate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns ServerCertificate
         */
        public static fromObject(object: { [k: string]: any }): signalservice.ServerCertificate;

        /**
         * Creates a plain object from a ServerCertificate message. Also converts values to other types if specified.
         * @param message ServerCertificate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.ServerCertificate, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this ServerCertificate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for ServerCertificate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace ServerCertificate {

        /** Properties of a Certificate. */
        interface ICertificate {

            /** Certificate id */
            id?: (number|null);

            /** Certificate key */
            key?: (Uint8Array|null);
        }

        /** Represents a Certificate. */
        class Certificate implements ICertificate {

            /**
             * Constructs a new Certificate.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.ServerCertificate.ICertificate);

            /** Certificate id. */
            public id: number;

            /** Certificate key. */
            public key: Uint8Array;

            /**
             * Creates a new Certificate instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Certificate instance
             */
            public static create(properties?: signalservice.ServerCertificate.ICertificate): signalservice.ServerCertificate.Certificate;

            /**
             * Encodes the specified Certificate message. Does not implicitly {@link signalservice.ServerCertificate.Certificate.verify|verify} messages.
             * @param message Certificate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.ServerCertificate.ICertificate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Certificate message, length delimited. Does not implicitly {@link signalservice.ServerCertificate.Certificate.verify|verify} messages.
             * @param message Certificate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.ServerCertificate.ICertificate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Certificate message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Certificate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.ServerCertificate.Certificate;

            /**
             * Decodes a Certificate message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Certificate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.ServerCertificate.Certificate;

            /**
             * Verifies a Certificate message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Certificate message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Certificate
             */
            public static fromObject(object: { [k: string]: any }): signalservice.ServerCertificate.Certificate;

            /**
             * Creates a plain object from a Certificate message. Also converts values to other types if specified.
             * @param message Certificate
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.ServerCertificate.Certificate, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Certificate to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Certificate
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of a SenderCertificate. */
    interface ISenderCertificate {

        /** SenderCertificate certificate */
        certificate?: (Uint8Array|null);

        /** SenderCertificate signature */
        signature?: (Uint8Array|null);
    }

    /** Represents a SenderCertificate. */
    class SenderCertificate implements ISenderCertificate {

        /**
         * Constructs a new SenderCertificate.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.ISenderCertificate);

        /** SenderCertificate certificate. */
        public certificate: Uint8Array;

        /** SenderCertificate signature. */
        public signature: Uint8Array;

        /**
         * Creates a new SenderCertificate instance using the specified properties.
         * @param [properties] Properties to set
         * @returns SenderCertificate instance
         */
        public static create(properties?: signalservice.ISenderCertificate): signalservice.SenderCertificate;

        /**
         * Encodes the specified SenderCertificate message. Does not implicitly {@link signalservice.SenderCertificate.verify|verify} messages.
         * @param message SenderCertificate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.ISenderCertificate, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified SenderCertificate message, length delimited. Does not implicitly {@link signalservice.SenderCertificate.verify|verify} messages.
         * @param message SenderCertificate message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.ISenderCertificate, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes a SenderCertificate message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns SenderCertificate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SenderCertificate;

        /**
         * Decodes a SenderCertificate message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns SenderCertificate
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SenderCertificate;

        /**
         * Verifies a SenderCertificate message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates a SenderCertificate message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns SenderCertificate
         */
        public static fromObject(object: { [k: string]: any }): signalservice.SenderCertificate;

        /**
         * Creates a plain object from a SenderCertificate message. Also converts values to other types if specified.
         * @param message SenderCertificate
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.SenderCertificate, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this SenderCertificate to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for SenderCertificate
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace SenderCertificate {

        /** Properties of a Certificate. */
        interface ICertificate {

            /** Certificate senderE164 */
            senderE164?: (string|null);

            /** Certificate senderUuid */
            senderUuid?: (string|null);

            /** Certificate senderDevice */
            senderDevice?: (number|null);

            /** Certificate expires */
            expires?: (Long|null);

            /** Certificate identityKey */
            identityKey?: (Uint8Array|null);

            /** Certificate signer */
            signer?: (signalservice.IServerCertificate|null);
        }

        /** Represents a Certificate. */
        class Certificate implements ICertificate {

            /**
             * Constructs a new Certificate.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.SenderCertificate.ICertificate);

            /** Certificate senderE164. */
            public senderE164: string;

            /** Certificate senderUuid. */
            public senderUuid: string;

            /** Certificate senderDevice. */
            public senderDevice: number;

            /** Certificate expires. */
            public expires: Long;

            /** Certificate identityKey. */
            public identityKey: Uint8Array;

            /** Certificate signer. */
            public signer?: (signalservice.IServerCertificate|null);

            /**
             * Creates a new Certificate instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Certificate instance
             */
            public static create(properties?: signalservice.SenderCertificate.ICertificate): signalservice.SenderCertificate.Certificate;

            /**
             * Encodes the specified Certificate message. Does not implicitly {@link signalservice.SenderCertificate.Certificate.verify|verify} messages.
             * @param message Certificate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.SenderCertificate.ICertificate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Certificate message, length delimited. Does not implicitly {@link signalservice.SenderCertificate.Certificate.verify|verify} messages.
             * @param message Certificate message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.SenderCertificate.ICertificate, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Certificate message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Certificate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.SenderCertificate.Certificate;

            /**
             * Decodes a Certificate message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Certificate
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.SenderCertificate.Certificate;

            /**
             * Verifies a Certificate message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Certificate message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Certificate
             */
            public static fromObject(object: { [k: string]: any }): signalservice.SenderCertificate.Certificate;

            /**
             * Creates a plain object from a Certificate message. Also converts values to other types if specified.
             * @param message Certificate
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.SenderCertificate.Certificate, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Certificate to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Certificate
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }
    }

    /** Properties of an UnidentifiedSenderMessage. */
    interface IUnidentifiedSenderMessage {

        /** UnidentifiedSenderMessage ephemeralPublic */
        ephemeralPublic?: (Uint8Array|null);

        /** UnidentifiedSenderMessage encryptedStatic */
        encryptedStatic?: (Uint8Array|null);

        /** UnidentifiedSenderMessage encryptedMessage */
        encryptedMessage?: (Uint8Array|null);
    }

    /** Represents an UnidentifiedSenderMessage. */
    class UnidentifiedSenderMessage implements IUnidentifiedSenderMessage {

        /**
         * Constructs a new UnidentifiedSenderMessage.
         * @param [properties] Properties to set
         */
        constructor(properties?: signalservice.IUnidentifiedSenderMessage);

        /** UnidentifiedSenderMessage ephemeralPublic. */
        public ephemeralPublic: Uint8Array;

        /** UnidentifiedSenderMessage encryptedStatic. */
        public encryptedStatic: Uint8Array;

        /** UnidentifiedSenderMessage encryptedMessage. */
        public encryptedMessage: Uint8Array;

        /**
         * Creates a new UnidentifiedSenderMessage instance using the specified properties.
         * @param [properties] Properties to set
         * @returns UnidentifiedSenderMessage instance
         */
        public static create(properties?: signalservice.IUnidentifiedSenderMessage): signalservice.UnidentifiedSenderMessage;

        /**
         * Encodes the specified UnidentifiedSenderMessage message. Does not implicitly {@link signalservice.UnidentifiedSenderMessage.verify|verify} messages.
         * @param message UnidentifiedSenderMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encode(message: signalservice.IUnidentifiedSenderMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Encodes the specified UnidentifiedSenderMessage message, length delimited. Does not implicitly {@link signalservice.UnidentifiedSenderMessage.verify|verify} messages.
         * @param message UnidentifiedSenderMessage message or plain object to encode
         * @param [writer] Writer to encode to
         * @returns Writer
         */
        public static encodeDelimited(message: signalservice.IUnidentifiedSenderMessage, writer?: $protobuf.Writer): $protobuf.Writer;

        /**
         * Decodes an UnidentifiedSenderMessage message from the specified reader or buffer.
         * @param reader Reader or buffer to decode from
         * @param [length] Message length if known beforehand
         * @returns UnidentifiedSenderMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.UnidentifiedSenderMessage;

        /**
         * Decodes an UnidentifiedSenderMessage message from the specified reader or buffer, length delimited.
         * @param reader Reader or buffer to decode from
         * @returns UnidentifiedSenderMessage
         * @throws {Error} If the payload is not a reader or valid buffer
         * @throws {$protobuf.util.ProtocolError} If required fields are missing
         */
        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.UnidentifiedSenderMessage;

        /**
         * Verifies an UnidentifiedSenderMessage message.
         * @param message Plain object to verify
         * @returns `null` if valid, otherwise the reason why it is not
         */
        public static verify(message: { [k: string]: any }): (string|null);

        /**
         * Creates an UnidentifiedSenderMessage message from a plain object. Also converts values to their respective internal types.
         * @param object Plain object
         * @returns UnidentifiedSenderMessage
         */
        public static fromObject(object: { [k: string]: any }): signalservice.UnidentifiedSenderMessage;

        /**
         * Creates a plain object from an UnidentifiedSenderMessage message. Also converts values to other types if specified.
         * @param message UnidentifiedSenderMessage
         * @param [options] Conversion options
         * @returns Plain object
         */
        public static toObject(message: signalservice.UnidentifiedSenderMessage, options?: $protobuf.IConversionOptions): { [k: string]: any };

        /**
         * Converts this UnidentifiedSenderMessage to JSON.
         * @returns JSON object
         */
        public toJSON(): { [k: string]: any };

        /**
         * Gets the default type url for UnidentifiedSenderMessage
         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
         * @returns The default type url
         */
        public static getTypeUrl(typeUrlPrefix?: string): string;
    }

    namespace UnidentifiedSenderMessage {

        /** Properties of a Message. */
        interface IMessage {

            /** Message type */
            type?: (signalservice.UnidentifiedSenderMessage.Message.Type|null);

            /** Message senderCertificate */
            senderCertificate?: (signalservice.ISenderCertificate|null);

            /** Message content */
            content?: (Uint8Array|null);

            /** Message contentHint */
            contentHint?: (signalservice.UnidentifiedSenderMessage.Message.ContentHint|null);

            /** Message groupId */
            groupId?: (Uint8Array|null);
        }

        /** Represents a Message. */
        class Message implements IMessage {

            /**
             * Constructs a new Message.
             * @param [properties] Properties to set
             */
            constructor(properties?: signalservice.UnidentifiedSenderMessage.IMessage);

            /** Message type. */
            public type: signalservice.UnidentifiedSenderMessage.Message.Type;

            /** Message senderCertificate. */
            public senderCertificate?: (signalservice.ISenderCertificate|null);

            /** Message content. */
            public content: Uint8Array;

            /** Message contentHint. */
            public contentHint: signalservice.UnidentifiedSenderMessage.Message.ContentHint;

            /** Message groupId. */
            public groupId: Uint8Array;

            /**
             * Creates a new Message instance using the specified properties.
             * @param [properties] Properties to set
             * @returns Message instance
             */
            public static create(properties?: signalservice.UnidentifiedSenderMessage.IMessage): signalservice.UnidentifiedSenderMessage.Message;

            /**
             * Encodes the specified Message message. Does not implicitly {@link signalservice.UnidentifiedSenderMessage.Message.verify|verify} messages.
             * @param message Message message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encode(message: signalservice.UnidentifiedSenderMessage.IMessage, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Encodes the specified Message message, length delimited. Does not implicitly {@link signalservice.UnidentifiedSenderMessage.Message.verify|verify} messages.
             * @param message Message message or plain object to encode
             * @param [writer] Writer to encode to
             * @returns Writer
             */
            public static encodeDelimited(message: signalservice.UnidentifiedSenderMessage.IMessage, writer?: $protobuf.Writer): $protobuf.Writer;

            /**
             * Decodes a Message message from the specified reader or buffer.
             * @param reader Reader or buffer to decode from
             * @param [length] Message length if known beforehand
             * @returns Message
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signalservice.UnidentifiedSenderMessage.Message;

            /**
             * Decodes a Message message from the specified reader or buffer, length delimited.
             * @param reader Reader or buffer to decode from
             * @returns Message
             * @throws {Error} If the payload is not a reader or valid buffer
             * @throws {$protobuf.util.ProtocolError} If required fields are missing
             */
            public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signalservice.UnidentifiedSenderMessage.Message;

            /**
             * Verifies a Message message.
             * @param message Plain object to verify
             * @returns `null` if valid, otherwise the reason why it is not
             */
            public static verify(message: { [k: string]: any }): (string|null);

            /**
             * Creates a Message message from a plain object. Also converts values to their respective internal types.
             * @param object Plain object
             * @returns Message
             */
            public static fromObject(object: { [k: string]: any }): signalservice.UnidentifiedSenderMessage.Message;

            /**
             * Creates a plain object from a Message message. Also converts values to other types if specified.
             * @param message Message
             * @param [options] Conversion options
             * @returns Plain object
             */
            public static toObject(message: signalservice.UnidentifiedSenderMessage.Message, options?: $protobuf.IConversionOptions): { [k: string]: any };

            /**
             * Converts this Message to JSON.
             * @returns JSON object
             */
            public toJSON(): { [k: string]: any };

            /**
             * Gets the default type url for Message
             * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
             * @returns The default type url
             */
            public static getTypeUrl(typeUrlPrefix?: string): string;
        }

        namespace Message {

            /** Type enum. */
            enum Type {
                MESSAGE = 2,
                PREKEY_MESSAGE = 3,
                SENDERKEY_MESSAGE = 7,
                PLAINTEXT_CONTENT = 8
            }

            /** ContentHint enum. */
            enum ContentHint {
                DEFAULT = 0,
                RESENDABLE = 1,
                IMPLICIT = 2
            }
        }
    }
}

/** Namespace signal. */
export namespace signal {

    /** Namespace proto. */
    namespace proto {

        /** Namespace storage. */
        namespace storage {

            /** Properties of a SessionStructure. */
            interface ISessionStructure {

                /** SessionStructure sessionVersion */
                sessionVersion?: (number|null);

                /** SessionStructure localIdentityPublic */
                localIdentityPublic?: (Uint8Array|null);

                /** SessionStructure remoteIdentityPublic */
                remoteIdentityPublic?: (Uint8Array|null);

                /** SessionStructure rootKey */
                rootKey?: (Uint8Array|null);

                /** SessionStructure previousCounter */
                previousCounter?: (number|null);

                /** SessionStructure senderChain */
                senderChain?: (signal.proto.storage.SessionStructure.IChain|null);

                /** SessionStructure receiverChains */
                receiverChains?: (signal.proto.storage.SessionStructure.IChain[]|null);

                /** SessionStructure pendingPreKey */
                pendingPreKey?: (signal.proto.storage.SessionStructure.IPendingPreKey|null);

                /** SessionStructure remoteRegistrationId */
                remoteRegistrationId?: (number|null);

                /** SessionStructure localRegistrationId */
                localRegistrationId?: (number|null);

                /** SessionStructure needsRefresh */
                needsRefresh?: (boolean|null);

                /** SessionStructure aliceBaseKey */
                aliceBaseKey?: (Uint8Array|null);
            }

            /** Represents a SessionStructure. */
            class SessionStructure implements ISessionStructure {

                /**
                 * Constructs a new SessionStructure.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signal.proto.storage.ISessionStructure);

                /** SessionStructure sessionVersion. */
                public sessionVersion: number;

                /** SessionStructure localIdentityPublic. */
                public localIdentityPublic: Uint8Array;

                /** SessionStructure remoteIdentityPublic. */
                public remoteIdentityPublic: Uint8Array;

                /** SessionStructure rootKey. */
                public rootKey: Uint8Array;

                /** SessionStructure previousCounter. */
                public previousCounter: number;

                /** SessionStructure senderChain. */
                public senderChain?: (signal.proto.storage.SessionStructure.IChain|null);

                /** SessionStructure receiverChains. */
                public receiverChains: signal.proto.storage.SessionStructure.IChain[];

                /** SessionStructure pendingPreKey. */
                public pendingPreKey?: (signal.proto.storage.SessionStructure.IPendingPreKey|null);

                /** SessionStructure remoteRegistrationId. */
                public remoteRegistrationId: number;

                /** SessionStructure localRegistrationId. */
                public localRegistrationId: number;

                /** SessionStructure needsRefresh. */
                public needsRefresh: boolean;

                /** SessionStructure aliceBaseKey. */
                public aliceBaseKey: Uint8Array;

                /**
                 * Creates a new SessionStructure instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns SessionStructure instance
                 */
                public static create(properties?: signal.proto.storage.ISessionStructure): signal.proto.storage.SessionStructure;

                /**
                 * Encodes the specified SessionStructure message. Does not implicitly {@link signal.proto.storage.SessionStructure.verify|verify} messages.
                 * @param message SessionStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signal.proto.storage.ISessionStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified SessionStructure message, length delimited. Does not implicitly {@link signal.proto.storage.SessionStructure.verify|verify} messages.
                 * @param message SessionStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signal.proto.storage.ISessionStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a SessionStructure message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns SessionStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SessionStructure;

                /**
                 * Decodes a SessionStructure message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns SessionStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SessionStructure;

                /**
                 * Verifies a SessionStructure message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a SessionStructure message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns SessionStructure
                 */
                public static fromObject(object: { [k: string]: any }): signal.proto.storage.SessionStructure;

                /**
                 * Creates a plain object from a SessionStructure message. Also converts values to other types if specified.
                 * @param message SessionStructure
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signal.proto.storage.SessionStructure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this SessionStructure to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for SessionStructure
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace SessionStructure {

                /** Properties of a Chain. */
                interface IChain {

                    /** Chain senderRatchetKey */
                    senderRatchetKey?: (Uint8Array|null);

                    /** Chain senderRatchetKeyPrivate */
                    senderRatchetKeyPrivate?: (Uint8Array|null);

                    /** Chain chainKey */
                    chainKey?: (signal.proto.storage.SessionStructure.Chain.IChainKey|null);

                    /** Chain messageKeys */
                    messageKeys?: (signal.proto.storage.SessionStructure.Chain.IMessageKey[]|null);
                }

                /** Represents a Chain. */
                class Chain implements IChain {

                    /**
                     * Constructs a new Chain.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: signal.proto.storage.SessionStructure.IChain);

                    /** Chain senderRatchetKey. */
                    public senderRatchetKey: Uint8Array;

                    /** Chain senderRatchetKeyPrivate. */
                    public senderRatchetKeyPrivate: Uint8Array;

                    /** Chain chainKey. */
                    public chainKey?: (signal.proto.storage.SessionStructure.Chain.IChainKey|null);

                    /** Chain messageKeys. */
                    public messageKeys: signal.proto.storage.SessionStructure.Chain.IMessageKey[];

                    /**
                     * Creates a new Chain instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns Chain instance
                     */
                    public static create(properties?: signal.proto.storage.SessionStructure.IChain): signal.proto.storage.SessionStructure.Chain;

                    /**
                     * Encodes the specified Chain message. Does not implicitly {@link signal.proto.storage.SessionStructure.Chain.verify|verify} messages.
                     * @param message Chain message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: signal.proto.storage.SessionStructure.IChain, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified Chain message, length delimited. Does not implicitly {@link signal.proto.storage.SessionStructure.Chain.verify|verify} messages.
                     * @param message Chain message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: signal.proto.storage.SessionStructure.IChain, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a Chain message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns Chain
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SessionStructure.Chain;

                    /**
                     * Decodes a Chain message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns Chain
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SessionStructure.Chain;

                    /**
                     * Verifies a Chain message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a Chain message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns Chain
                     */
                    public static fromObject(object: { [k: string]: any }): signal.proto.storage.SessionStructure.Chain;

                    /**
                     * Creates a plain object from a Chain message. Also converts values to other types if specified.
                     * @param message Chain
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: signal.proto.storage.SessionStructure.Chain, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this Chain to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for Chain
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                namespace Chain {

                    /** Properties of a ChainKey. */
                    interface IChainKey {

                        /** ChainKey index */
                        index?: (number|null);

                        /** ChainKey key */
                        key?: (Uint8Array|null);
                    }

                    /** Represents a ChainKey. */
                    class ChainKey implements IChainKey {

                        /**
                         * Constructs a new ChainKey.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: signal.proto.storage.SessionStructure.Chain.IChainKey);

                        /** ChainKey index. */
                        public index: number;

                        /** ChainKey key. */
                        public key: Uint8Array;

                        /**
                         * Creates a new ChainKey instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns ChainKey instance
                         */
                        public static create(properties?: signal.proto.storage.SessionStructure.Chain.IChainKey): signal.proto.storage.SessionStructure.Chain.ChainKey;

                        /**
                         * Encodes the specified ChainKey message. Does not implicitly {@link signal.proto.storage.SessionStructure.Chain.ChainKey.verify|verify} messages.
                         * @param message ChainKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: signal.proto.storage.SessionStructure.Chain.IChainKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified ChainKey message, length delimited. Does not implicitly {@link signal.proto.storage.SessionStructure.Chain.ChainKey.verify|verify} messages.
                         * @param message ChainKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: signal.proto.storage.SessionStructure.Chain.IChainKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a ChainKey message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns ChainKey
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SessionStructure.Chain.ChainKey;

                        /**
                         * Decodes a ChainKey message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns ChainKey
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SessionStructure.Chain.ChainKey;

                        /**
                         * Verifies a ChainKey message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a ChainKey message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns ChainKey
                         */
                        public static fromObject(object: { [k: string]: any }): signal.proto.storage.SessionStructure.Chain.ChainKey;

                        /**
                         * Creates a plain object from a ChainKey message. Also converts values to other types if specified.
                         * @param message ChainKey
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: signal.proto.storage.SessionStructure.Chain.ChainKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this ChainKey to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for ChainKey
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }

                    /** Properties of a MessageKey. */
                    interface IMessageKey {

                        /** MessageKey index */
                        index?: (number|null);

                        /** MessageKey cipherKey */
                        cipherKey?: (Uint8Array|null);

                        /** MessageKey macKey */
                        macKey?: (Uint8Array|null);

                        /** MessageKey iv */
                        iv?: (Uint8Array|null);
                    }

                    /** Represents a MessageKey. */
                    class MessageKey implements IMessageKey {

                        /**
                         * Constructs a new MessageKey.
                         * @param [properties] Properties to set
                         */
                        constructor(properties?: signal.proto.storage.SessionStructure.Chain.IMessageKey);

                        /** MessageKey index. */
                        public index: number;

                        /** MessageKey cipherKey. */
                        public cipherKey: Uint8Array;

                        /** MessageKey macKey. */
                        public macKey: Uint8Array;

                        /** MessageKey iv. */
                        public iv: Uint8Array;

                        /**
                         * Creates a new MessageKey instance using the specified properties.
                         * @param [properties] Properties to set
                         * @returns MessageKey instance
                         */
                        public static create(properties?: signal.proto.storage.SessionStructure.Chain.IMessageKey): signal.proto.storage.SessionStructure.Chain.MessageKey;

                        /**
                         * Encodes the specified MessageKey message. Does not implicitly {@link signal.proto.storage.SessionStructure.Chain.MessageKey.verify|verify} messages.
                         * @param message MessageKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encode(message: signal.proto.storage.SessionStructure.Chain.IMessageKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Encodes the specified MessageKey message, length delimited. Does not implicitly {@link signal.proto.storage.SessionStructure.Chain.MessageKey.verify|verify} messages.
                         * @param message MessageKey message or plain object to encode
                         * @param [writer] Writer to encode to
                         * @returns Writer
                         */
                        public static encodeDelimited(message: signal.proto.storage.SessionStructure.Chain.IMessageKey, writer?: $protobuf.Writer): $protobuf.Writer;

                        /**
                         * Decodes a MessageKey message from the specified reader or buffer.
                         * @param reader Reader or buffer to decode from
                         * @param [length] Message length if known beforehand
                         * @returns MessageKey
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SessionStructure.Chain.MessageKey;

                        /**
                         * Decodes a MessageKey message from the specified reader or buffer, length delimited.
                         * @param reader Reader or buffer to decode from
                         * @returns MessageKey
                         * @throws {Error} If the payload is not a reader or valid buffer
                         * @throws {$protobuf.util.ProtocolError} If required fields are missing
                         */
                        public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SessionStructure.Chain.MessageKey;

                        /**
                         * Verifies a MessageKey message.
                         * @param message Plain object to verify
                         * @returns `null` if valid, otherwise the reason why it is not
                         */
                        public static verify(message: { [k: string]: any }): (string|null);

                        /**
                         * Creates a MessageKey message from a plain object. Also converts values to their respective internal types.
                         * @param object Plain object
                         * @returns MessageKey
                         */
                        public static fromObject(object: { [k: string]: any }): signal.proto.storage.SessionStructure.Chain.MessageKey;

                        /**
                         * Creates a plain object from a MessageKey message. Also converts values to other types if specified.
                         * @param message MessageKey
                         * @param [options] Conversion options
                         * @returns Plain object
                         */
                        public static toObject(message: signal.proto.storage.SessionStructure.Chain.MessageKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                        /**
                         * Converts this MessageKey to JSON.
                         * @returns JSON object
                         */
                        public toJSON(): { [k: string]: any };

                        /**
                         * Gets the default type url for MessageKey
                         * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                         * @returns The default type url
                         */
                        public static getTypeUrl(typeUrlPrefix?: string): string;
                    }
                }

                /** Properties of a PendingPreKey. */
                interface IPendingPreKey {

                    /** PendingPreKey preKeyId */
                    preKeyId?: (number|null);

                    /** PendingPreKey signedPreKeyId */
                    signedPreKeyId?: (number|null);

                    /** PendingPreKey baseKey */
                    baseKey?: (Uint8Array|null);
                }

                /** Represents a PendingPreKey. */
                class PendingPreKey implements IPendingPreKey {

                    /**
                     * Constructs a new PendingPreKey.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: signal.proto.storage.SessionStructure.IPendingPreKey);

                    /** PendingPreKey preKeyId. */
                    public preKeyId: number;

                    /** PendingPreKey signedPreKeyId. */
                    public signedPreKeyId: number;

                    /** PendingPreKey baseKey. */
                    public baseKey: Uint8Array;

                    /**
                     * Creates a new PendingPreKey instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns PendingPreKey instance
                     */
                    public static create(properties?: signal.proto.storage.SessionStructure.IPendingPreKey): signal.proto.storage.SessionStructure.PendingPreKey;

                    /**
                     * Encodes the specified PendingPreKey message. Does not implicitly {@link signal.proto.storage.SessionStructure.PendingPreKey.verify|verify} messages.
                     * @param message PendingPreKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: signal.proto.storage.SessionStructure.IPendingPreKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified PendingPreKey message, length delimited. Does not implicitly {@link signal.proto.storage.SessionStructure.PendingPreKey.verify|verify} messages.
                     * @param message PendingPreKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: signal.proto.storage.SessionStructure.IPendingPreKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a PendingPreKey message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns PendingPreKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SessionStructure.PendingPreKey;

                    /**
                     * Decodes a PendingPreKey message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns PendingPreKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SessionStructure.PendingPreKey;

                    /**
                     * Verifies a PendingPreKey message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a PendingPreKey message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns PendingPreKey
                     */
                    public static fromObject(object: { [k: string]: any }): signal.proto.storage.SessionStructure.PendingPreKey;

                    /**
                     * Creates a plain object from a PendingPreKey message. Also converts values to other types if specified.
                     * @param message PendingPreKey
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: signal.proto.storage.SessionStructure.PendingPreKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this PendingPreKey to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for PendingPreKey
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of a RecordStructure. */
            interface IRecordStructure {

                /** RecordStructure currentSession */
                currentSession?: (signal.proto.storage.ISessionStructure|null);

                /** RecordStructure previousSessions */
                previousSessions?: (signal.proto.storage.ISessionStructure[]|null);
            }

            /** Represents a RecordStructure. */
            class RecordStructure implements IRecordStructure {

                /**
                 * Constructs a new RecordStructure.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signal.proto.storage.IRecordStructure);

                /** RecordStructure currentSession. */
                public currentSession?: (signal.proto.storage.ISessionStructure|null);

                /** RecordStructure previousSessions. */
                public previousSessions: signal.proto.storage.ISessionStructure[];

                /**
                 * Creates a new RecordStructure instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns RecordStructure instance
                 */
                public static create(properties?: signal.proto.storage.IRecordStructure): signal.proto.storage.RecordStructure;

                /**
                 * Encodes the specified RecordStructure message. Does not implicitly {@link signal.proto.storage.RecordStructure.verify|verify} messages.
                 * @param message RecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signal.proto.storage.IRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified RecordStructure message, length delimited. Does not implicitly {@link signal.proto.storage.RecordStructure.verify|verify} messages.
                 * @param message RecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signal.proto.storage.IRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a RecordStructure message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns RecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.RecordStructure;

                /**
                 * Decodes a RecordStructure message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns RecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.RecordStructure;

                /**
                 * Verifies a RecordStructure message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a RecordStructure message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns RecordStructure
                 */
                public static fromObject(object: { [k: string]: any }): signal.proto.storage.RecordStructure;

                /**
                 * Creates a plain object from a RecordStructure message. Also converts values to other types if specified.
                 * @param message RecordStructure
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signal.proto.storage.RecordStructure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this RecordStructure to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for RecordStructure
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a PreKeyRecordStructure. */
            interface IPreKeyRecordStructure {

                /** PreKeyRecordStructure id */
                id?: (number|null);

                /** PreKeyRecordStructure publicKey */
                publicKey?: (Uint8Array|null);

                /** PreKeyRecordStructure privateKey */
                privateKey?: (Uint8Array|null);
            }

            /** Represents a PreKeyRecordStructure. */
            class PreKeyRecordStructure implements IPreKeyRecordStructure {

                /**
                 * Constructs a new PreKeyRecordStructure.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signal.proto.storage.IPreKeyRecordStructure);

                /** PreKeyRecordStructure id. */
                public id: number;

                /** PreKeyRecordStructure publicKey. */
                public publicKey: Uint8Array;

                /** PreKeyRecordStructure privateKey. */
                public privateKey: Uint8Array;

                /**
                 * Creates a new PreKeyRecordStructure instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns PreKeyRecordStructure instance
                 */
                public static create(properties?: signal.proto.storage.IPreKeyRecordStructure): signal.proto.storage.PreKeyRecordStructure;

                /**
                 * Encodes the specified PreKeyRecordStructure message. Does not implicitly {@link signal.proto.storage.PreKeyRecordStructure.verify|verify} messages.
                 * @param message PreKeyRecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signal.proto.storage.IPreKeyRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified PreKeyRecordStructure message, length delimited. Does not implicitly {@link signal.proto.storage.PreKeyRecordStructure.verify|verify} messages.
                 * @param message PreKeyRecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signal.proto.storage.IPreKeyRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a PreKeyRecordStructure message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns PreKeyRecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.PreKeyRecordStructure;

                /**
                 * Decodes a PreKeyRecordStructure message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns PreKeyRecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.PreKeyRecordStructure;

                /**
                 * Verifies a PreKeyRecordStructure message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a PreKeyRecordStructure message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns PreKeyRecordStructure
                 */
                public static fromObject(object: { [k: string]: any }): signal.proto.storage.PreKeyRecordStructure;

                /**
                 * Creates a plain object from a PreKeyRecordStructure message. Also converts values to other types if specified.
                 * @param message PreKeyRecordStructure
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signal.proto.storage.PreKeyRecordStructure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this PreKeyRecordStructure to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for PreKeyRecordStructure
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a SignedPreKeyRecordStructure. */
            interface ISignedPreKeyRecordStructure {

                /** SignedPreKeyRecordStructure id */
                id?: (number|null);

                /** SignedPreKeyRecordStructure publicKey */
                publicKey?: (Uint8Array|null);

                /** SignedPreKeyRecordStructure privateKey */
                privateKey?: (Uint8Array|null);

                /** SignedPreKeyRecordStructure signature */
                signature?: (Uint8Array|null);

                /** SignedPreKeyRecordStructure timestamp */
                timestamp?: (Long|null);
            }

            /** Represents a SignedPreKeyRecordStructure. */
            class SignedPreKeyRecordStructure implements ISignedPreKeyRecordStructure {

                /**
                 * Constructs a new SignedPreKeyRecordStructure.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signal.proto.storage.ISignedPreKeyRecordStructure);

                /** SignedPreKeyRecordStructure id. */
                public id: number;

                /** SignedPreKeyRecordStructure publicKey. */
                public publicKey: Uint8Array;

                /** SignedPreKeyRecordStructure privateKey. */
                public privateKey: Uint8Array;

                /** SignedPreKeyRecordStructure signature. */
                public signature: Uint8Array;

                /** SignedPreKeyRecordStructure timestamp. */
                public timestamp: Long;

                /**
                 * Creates a new SignedPreKeyRecordStructure instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns SignedPreKeyRecordStructure instance
                 */
                public static create(properties?: signal.proto.storage.ISignedPreKeyRecordStructure): signal.proto.storage.SignedPreKeyRecordStructure;

                /**
                 * Encodes the specified SignedPreKeyRecordStructure message. Does not implicitly {@link signal.proto.storage.SignedPreKeyRecordStructure.verify|verify} messages.
                 * @param message SignedPreKeyRecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signal.proto.storage.ISignedPreKeyRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified SignedPreKeyRecordStructure message, length delimited. Does not implicitly {@link signal.proto.storage.SignedPreKeyRecordStructure.verify|verify} messages.
                 * @param message SignedPreKeyRecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signal.proto.storage.ISignedPreKeyRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a SignedPreKeyRecordStructure message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns SignedPreKeyRecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SignedPreKeyRecordStructure;

                /**
                 * Decodes a SignedPreKeyRecordStructure message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns SignedPreKeyRecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SignedPreKeyRecordStructure;

                /**
                 * Verifies a SignedPreKeyRecordStructure message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a SignedPreKeyRecordStructure message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns SignedPreKeyRecordStructure
                 */
                public static fromObject(object: { [k: string]: any }): signal.proto.storage.SignedPreKeyRecordStructure;

                /**
                 * Creates a plain object from a SignedPreKeyRecordStructure message. Also converts values to other types if specified.
                 * @param message SignedPreKeyRecordStructure
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signal.proto.storage.SignedPreKeyRecordStructure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this SignedPreKeyRecordStructure to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for SignedPreKeyRecordStructure
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of an IdentityKeyPairStructure. */
            interface IIdentityKeyPairStructure {

                /** IdentityKeyPairStructure publicKey */
                publicKey?: (Uint8Array|null);

                /** IdentityKeyPairStructure privateKey */
                privateKey?: (Uint8Array|null);
            }

            /** Represents an IdentityKeyPairStructure. */
            class IdentityKeyPairStructure implements IIdentityKeyPairStructure {

                /**
                 * Constructs a new IdentityKeyPairStructure.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signal.proto.storage.IIdentityKeyPairStructure);

                /** IdentityKeyPairStructure publicKey. */
                public publicKey: Uint8Array;

                /** IdentityKeyPairStructure privateKey. */
                public privateKey: Uint8Array;

                /**
                 * Creates a new IdentityKeyPairStructure instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns IdentityKeyPairStructure instance
                 */
                public static create(properties?: signal.proto.storage.IIdentityKeyPairStructure): signal.proto.storage.IdentityKeyPairStructure;

                /**
                 * Encodes the specified IdentityKeyPairStructure message. Does not implicitly {@link signal.proto.storage.IdentityKeyPairStructure.verify|verify} messages.
                 * @param message IdentityKeyPairStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signal.proto.storage.IIdentityKeyPairStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified IdentityKeyPairStructure message, length delimited. Does not implicitly {@link signal.proto.storage.IdentityKeyPairStructure.verify|verify} messages.
                 * @param message IdentityKeyPairStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signal.proto.storage.IIdentityKeyPairStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes an IdentityKeyPairStructure message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns IdentityKeyPairStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.IdentityKeyPairStructure;

                /**
                 * Decodes an IdentityKeyPairStructure message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns IdentityKeyPairStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.IdentityKeyPairStructure;

                /**
                 * Verifies an IdentityKeyPairStructure message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates an IdentityKeyPairStructure message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns IdentityKeyPairStructure
                 */
                public static fromObject(object: { [k: string]: any }): signal.proto.storage.IdentityKeyPairStructure;

                /**
                 * Creates a plain object from an IdentityKeyPairStructure message. Also converts values to other types if specified.
                 * @param message IdentityKeyPairStructure
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signal.proto.storage.IdentityKeyPairStructure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this IdentityKeyPairStructure to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for IdentityKeyPairStructure
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            /** Properties of a SenderKeyStateStructure. */
            interface ISenderKeyStateStructure {

                /** SenderKeyStateStructure senderKeyId */
                senderKeyId?: (number|null);

                /** SenderKeyStateStructure senderChainKey */
                senderChainKey?: (signal.proto.storage.SenderKeyStateStructure.ISenderChainKey|null);

                /** SenderKeyStateStructure senderSigningKey */
                senderSigningKey?: (signal.proto.storage.SenderKeyStateStructure.ISenderSigningKey|null);

                /** SenderKeyStateStructure senderMessageKeys */
                senderMessageKeys?: (signal.proto.storage.SenderKeyStateStructure.ISenderMessageKey[]|null);
            }

            /** Represents a SenderKeyStateStructure. */
            class SenderKeyStateStructure implements ISenderKeyStateStructure {

                /**
                 * Constructs a new SenderKeyStateStructure.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signal.proto.storage.ISenderKeyStateStructure);

                /** SenderKeyStateStructure senderKeyId. */
                public senderKeyId: number;

                /** SenderKeyStateStructure senderChainKey. */
                public senderChainKey?: (signal.proto.storage.SenderKeyStateStructure.ISenderChainKey|null);

                /** SenderKeyStateStructure senderSigningKey. */
                public senderSigningKey?: (signal.proto.storage.SenderKeyStateStructure.ISenderSigningKey|null);

                /** SenderKeyStateStructure senderMessageKeys. */
                public senderMessageKeys: signal.proto.storage.SenderKeyStateStructure.ISenderMessageKey[];

                /**
                 * Creates a new SenderKeyStateStructure instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns SenderKeyStateStructure instance
                 */
                public static create(properties?: signal.proto.storage.ISenderKeyStateStructure): signal.proto.storage.SenderKeyStateStructure;

                /**
                 * Encodes the specified SenderKeyStateStructure message. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.verify|verify} messages.
                 * @param message SenderKeyStateStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signal.proto.storage.ISenderKeyStateStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified SenderKeyStateStructure message, length delimited. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.verify|verify} messages.
                 * @param message SenderKeyStateStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signal.proto.storage.ISenderKeyStateStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a SenderKeyStateStructure message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns SenderKeyStateStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SenderKeyStateStructure;

                /**
                 * Decodes a SenderKeyStateStructure message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns SenderKeyStateStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SenderKeyStateStructure;

                /**
                 * Verifies a SenderKeyStateStructure message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a SenderKeyStateStructure message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns SenderKeyStateStructure
                 */
                public static fromObject(object: { [k: string]: any }): signal.proto.storage.SenderKeyStateStructure;

                /**
                 * Creates a plain object from a SenderKeyStateStructure message. Also converts values to other types if specified.
                 * @param message SenderKeyStateStructure
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signal.proto.storage.SenderKeyStateStructure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this SenderKeyStateStructure to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for SenderKeyStateStructure
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }

            namespace SenderKeyStateStructure {

                /** Properties of a SenderChainKey. */
                interface ISenderChainKey {

                    /** SenderChainKey iteration */
                    iteration?: (number|null);

                    /** SenderChainKey seed */
                    seed?: (Uint8Array|null);
                }

                /** Represents a SenderChainKey. */
                class SenderChainKey implements ISenderChainKey {

                    /**
                     * Constructs a new SenderChainKey.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: signal.proto.storage.SenderKeyStateStructure.ISenderChainKey);

                    /** SenderChainKey iteration. */
                    public iteration: number;

                    /** SenderChainKey seed. */
                    public seed: Uint8Array;

                    /**
                     * Creates a new SenderChainKey instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SenderChainKey instance
                     */
                    public static create(properties?: signal.proto.storage.SenderKeyStateStructure.ISenderChainKey): signal.proto.storage.SenderKeyStateStructure.SenderChainKey;

                    /**
                     * Encodes the specified SenderChainKey message. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.SenderChainKey.verify|verify} messages.
                     * @param message SenderChainKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: signal.proto.storage.SenderKeyStateStructure.ISenderChainKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SenderChainKey message, length delimited. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.SenderChainKey.verify|verify} messages.
                     * @param message SenderChainKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: signal.proto.storage.SenderKeyStateStructure.ISenderChainKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SenderChainKey message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SenderChainKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SenderKeyStateStructure.SenderChainKey;

                    /**
                     * Decodes a SenderChainKey message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SenderChainKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SenderKeyStateStructure.SenderChainKey;

                    /**
                     * Verifies a SenderChainKey message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SenderChainKey message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SenderChainKey
                     */
                    public static fromObject(object: { [k: string]: any }): signal.proto.storage.SenderKeyStateStructure.SenderChainKey;

                    /**
                     * Creates a plain object from a SenderChainKey message. Also converts values to other types if specified.
                     * @param message SenderChainKey
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: signal.proto.storage.SenderKeyStateStructure.SenderChainKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SenderChainKey to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SenderChainKey
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SenderMessageKey. */
                interface ISenderMessageKey {

                    /** SenderMessageKey iteration */
                    iteration?: (number|null);

                    /** SenderMessageKey seed */
                    seed?: (Uint8Array|null);
                }

                /** Represents a SenderMessageKey. */
                class SenderMessageKey implements ISenderMessageKey {

                    /**
                     * Constructs a new SenderMessageKey.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: signal.proto.storage.SenderKeyStateStructure.ISenderMessageKey);

                    /** SenderMessageKey iteration. */
                    public iteration: number;

                    /** SenderMessageKey seed. */
                    public seed: Uint8Array;

                    /**
                     * Creates a new SenderMessageKey instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SenderMessageKey instance
                     */
                    public static create(properties?: signal.proto.storage.SenderKeyStateStructure.ISenderMessageKey): signal.proto.storage.SenderKeyStateStructure.SenderMessageKey;

                    /**
                     * Encodes the specified SenderMessageKey message. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.SenderMessageKey.verify|verify} messages.
                     * @param message SenderMessageKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: signal.proto.storage.SenderKeyStateStructure.ISenderMessageKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SenderMessageKey message, length delimited. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.SenderMessageKey.verify|verify} messages.
                     * @param message SenderMessageKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: signal.proto.storage.SenderKeyStateStructure.ISenderMessageKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SenderMessageKey message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SenderMessageKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SenderKeyStateStructure.SenderMessageKey;

                    /**
                     * Decodes a SenderMessageKey message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SenderMessageKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SenderKeyStateStructure.SenderMessageKey;

                    /**
                     * Verifies a SenderMessageKey message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SenderMessageKey message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SenderMessageKey
                     */
                    public static fromObject(object: { [k: string]: any }): signal.proto.storage.SenderKeyStateStructure.SenderMessageKey;

                    /**
                     * Creates a plain object from a SenderMessageKey message. Also converts values to other types if specified.
                     * @param message SenderMessageKey
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: signal.proto.storage.SenderKeyStateStructure.SenderMessageKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SenderMessageKey to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SenderMessageKey
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }

                /** Properties of a SenderSigningKey. */
                interface ISenderSigningKey {

                    /** SenderSigningKey public */
                    "public"?: (Uint8Array|null);

                    /** SenderSigningKey private */
                    "private"?: (Uint8Array|null);
                }

                /** Represents a SenderSigningKey. */
                class SenderSigningKey implements ISenderSigningKey {

                    /**
                     * Constructs a new SenderSigningKey.
                     * @param [properties] Properties to set
                     */
                    constructor(properties?: signal.proto.storage.SenderKeyStateStructure.ISenderSigningKey);

                    /** SenderSigningKey public. */
                    public public: Uint8Array;

                    /** SenderSigningKey private. */
                    public private: Uint8Array;

                    /**
                     * Creates a new SenderSigningKey instance using the specified properties.
                     * @param [properties] Properties to set
                     * @returns SenderSigningKey instance
                     */
                    public static create(properties?: signal.proto.storage.SenderKeyStateStructure.ISenderSigningKey): signal.proto.storage.SenderKeyStateStructure.SenderSigningKey;

                    /**
                     * Encodes the specified SenderSigningKey message. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.SenderSigningKey.verify|verify} messages.
                     * @param message SenderSigningKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encode(message: signal.proto.storage.SenderKeyStateStructure.ISenderSigningKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Encodes the specified SenderSigningKey message, length delimited. Does not implicitly {@link signal.proto.storage.SenderKeyStateStructure.SenderSigningKey.verify|verify} messages.
                     * @param message SenderSigningKey message or plain object to encode
                     * @param [writer] Writer to encode to
                     * @returns Writer
                     */
                    public static encodeDelimited(message: signal.proto.storage.SenderKeyStateStructure.ISenderSigningKey, writer?: $protobuf.Writer): $protobuf.Writer;

                    /**
                     * Decodes a SenderSigningKey message from the specified reader or buffer.
                     * @param reader Reader or buffer to decode from
                     * @param [length] Message length if known beforehand
                     * @returns SenderSigningKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SenderKeyStateStructure.SenderSigningKey;

                    /**
                     * Decodes a SenderSigningKey message from the specified reader or buffer, length delimited.
                     * @param reader Reader or buffer to decode from
                     * @returns SenderSigningKey
                     * @throws {Error} If the payload is not a reader or valid buffer
                     * @throws {$protobuf.util.ProtocolError} If required fields are missing
                     */
                    public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SenderKeyStateStructure.SenderSigningKey;

                    /**
                     * Verifies a SenderSigningKey message.
                     * @param message Plain object to verify
                     * @returns `null` if valid, otherwise the reason why it is not
                     */
                    public static verify(message: { [k: string]: any }): (string|null);

                    /**
                     * Creates a SenderSigningKey message from a plain object. Also converts values to their respective internal types.
                     * @param object Plain object
                     * @returns SenderSigningKey
                     */
                    public static fromObject(object: { [k: string]: any }): signal.proto.storage.SenderKeyStateStructure.SenderSigningKey;

                    /**
                     * Creates a plain object from a SenderSigningKey message. Also converts values to other types if specified.
                     * @param message SenderSigningKey
                     * @param [options] Conversion options
                     * @returns Plain object
                     */
                    public static toObject(message: signal.proto.storage.SenderKeyStateStructure.SenderSigningKey, options?: $protobuf.IConversionOptions): { [k: string]: any };

                    /**
                     * Converts this SenderSigningKey to JSON.
                     * @returns JSON object
                     */
                    public toJSON(): { [k: string]: any };

                    /**
                     * Gets the default type url for SenderSigningKey
                     * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                     * @returns The default type url
                     */
                    public static getTypeUrl(typeUrlPrefix?: string): string;
                }
            }

            /** Properties of a SenderKeyRecordStructure. */
            interface ISenderKeyRecordStructure {

                /** SenderKeyRecordStructure senderKeyStates */
                senderKeyStates?: (signal.proto.storage.ISenderKeyStateStructure[]|null);
            }

            /** Represents a SenderKeyRecordStructure. */
            class SenderKeyRecordStructure implements ISenderKeyRecordStructure {

                /**
                 * Constructs a new SenderKeyRecordStructure.
                 * @param [properties] Properties to set
                 */
                constructor(properties?: signal.proto.storage.ISenderKeyRecordStructure);

                /** SenderKeyRecordStructure senderKeyStates. */
                public senderKeyStates: signal.proto.storage.ISenderKeyStateStructure[];

                /**
                 * Creates a new SenderKeyRecordStructure instance using the specified properties.
                 * @param [properties] Properties to set
                 * @returns SenderKeyRecordStructure instance
                 */
                public static create(properties?: signal.proto.storage.ISenderKeyRecordStructure): signal.proto.storage.SenderKeyRecordStructure;

                /**
                 * Encodes the specified SenderKeyRecordStructure message. Does not implicitly {@link signal.proto.storage.SenderKeyRecordStructure.verify|verify} messages.
                 * @param message SenderKeyRecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encode(message: signal.proto.storage.ISenderKeyRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Encodes the specified SenderKeyRecordStructure message, length delimited. Does not implicitly {@link signal.proto.storage.SenderKeyRecordStructure.verify|verify} messages.
                 * @param message SenderKeyRecordStructure message or plain object to encode
                 * @param [writer] Writer to encode to
                 * @returns Writer
                 */
                public static encodeDelimited(message: signal.proto.storage.ISenderKeyRecordStructure, writer?: $protobuf.Writer): $protobuf.Writer;

                /**
                 * Decodes a SenderKeyRecordStructure message from the specified reader or buffer.
                 * @param reader Reader or buffer to decode from
                 * @param [length] Message length if known beforehand
                 * @returns SenderKeyRecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decode(reader: ($protobuf.Reader|Uint8Array), length?: number): signal.proto.storage.SenderKeyRecordStructure;

                /**
                 * Decodes a SenderKeyRecordStructure message from the specified reader or buffer, length delimited.
                 * @param reader Reader or buffer to decode from
                 * @returns SenderKeyRecordStructure
                 * @throws {Error} If the payload is not a reader or valid buffer
                 * @throws {$protobuf.util.ProtocolError} If required fields are missing
                 */
                public static decodeDelimited(reader: ($protobuf.Reader|Uint8Array)): signal.proto.storage.SenderKeyRecordStructure;

                /**
                 * Verifies a SenderKeyRecordStructure message.
                 * @param message Plain object to verify
                 * @returns `null` if valid, otherwise the reason why it is not
                 */
                public static verify(message: { [k: string]: any }): (string|null);

                /**
                 * Creates a SenderKeyRecordStructure message from a plain object. Also converts values to their respective internal types.
                 * @param object Plain object
                 * @returns SenderKeyRecordStructure
                 */
                public static fromObject(object: { [k: string]: any }): signal.proto.storage.SenderKeyRecordStructure;

                /**
                 * Creates a plain object from a SenderKeyRecordStructure message. Also converts values to other types if specified.
                 * @param message SenderKeyRecordStructure
                 * @param [options] Conversion options
                 * @returns Plain object
                 */
                public static toObject(message: signal.proto.storage.SenderKeyRecordStructure, options?: $protobuf.IConversionOptions): { [k: string]: any };

                /**
                 * Converts this SenderKeyRecordStructure to JSON.
                 * @returns JSON object
                 */
                public toJSON(): { [k: string]: any };

                /**
                 * Gets the default type url for SenderKeyRecordStructure
                 * @param [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
                 * @returns The default type url
                 */
                public static getTypeUrl(typeUrlPrefix?: string): string;
            }
        }
    }
}
