import _m0 from "protobufjs/minimal";
export declare const protobufPackage = "channel";
export declare enum ChannelStatus {
    Active = 0,
    Archived = 1,
    UNRECOGNIZED = -1
}
export declare function channelStatusFromJSON(object: any): ChannelStatus;
export declare function channelStatusToJSON(object: ChannelStatus): string;
export declare enum CreateChannelErrors {
    Unauthorized = 0,
    IsAlreadyExist = 1,
    UNRECOGNIZED = -1
}
export declare function createChannelErrorsFromJSON(object: any): CreateChannelErrors;
export declare function createChannelErrorsToJSON(object: CreateChannelErrors): string;
export interface Channel {
    identifier: string;
    createdAt?: Date;
    maxParticipants: number;
    status: ChannelStatus;
    customData?: CustomData | undefined;
}
export interface CreateChannelResponse {
    errors: CreateChannelErrors[];
    channel?: Channel | undefined;
}
export interface CreateChannelReq {
    identifier: string;
    maxParticipants: number;
    customData?: CustomData | undefined;
}
export interface CustomData {
    data: {
        [key: string]: string;
    };
}
export interface CustomData_DataEntry {
    key: string;
    value: string;
}
export declare const Channel: {
    encode(message: Channel, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Channel;
    fromJSON(object: any): Channel;
    toJSON(message: Channel): unknown;
    fromPartial<I extends {
        identifier?: string | undefined;
        createdAt?: Date | undefined;
        maxParticipants?: number | undefined;
        status?: ChannelStatus | undefined;
        customData?: {
            data?: {
                [x: string]: string | undefined;
            } | undefined;
        } | undefined;
    } & {
        identifier?: string | undefined;
        createdAt?: Date | undefined;
        maxParticipants?: number | undefined;
        status?: ChannelStatus | undefined;
        customData?: ({
            data?: {
                [x: string]: string | undefined;
            } | undefined;
        } & {
            data?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & { [K in Exclude<keyof I["customData"]["data"], string | number>]: never; }) | undefined;
        } & { [K_1 in Exclude<keyof I["customData"], "data">]: never; }) | undefined;
    } & { [K_2 in Exclude<keyof I, keyof Channel>]: never; }>(object: I): Channel;
};
export declare const CreateChannelResponse: {
    encode(message: CreateChannelResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateChannelResponse;
    fromJSON(object: any): CreateChannelResponse;
    toJSON(message: CreateChannelResponse): unknown;
    fromPartial<I extends {
        errors?: CreateChannelErrors[] | undefined;
        channel?: {
            identifier?: string | undefined;
            createdAt?: Date | undefined;
            maxParticipants?: number | undefined;
            status?: ChannelStatus | undefined;
            customData?: {
                data?: {
                    [x: string]: string | undefined;
                } | undefined;
            } | undefined;
        } | undefined;
    } & {
        errors?: (CreateChannelErrors[] & CreateChannelErrors[] & { [K in Exclude<keyof I["errors"], keyof CreateChannelErrors[]>]: never; }) | undefined;
        channel?: ({
            identifier?: string | undefined;
            createdAt?: Date | undefined;
            maxParticipants?: number | undefined;
            status?: ChannelStatus | undefined;
            customData?: {
                data?: {
                    [x: string]: string | undefined;
                } | undefined;
            } | undefined;
        } & {
            identifier?: string | undefined;
            createdAt?: Date | undefined;
            maxParticipants?: number | undefined;
            status?: ChannelStatus | undefined;
            customData?: ({
                data?: {
                    [x: string]: string | undefined;
                } | undefined;
            } & {
                data?: ({
                    [x: string]: string | undefined;
                } & {
                    [x: string]: string | undefined;
                } & { [K_1 in Exclude<keyof I["channel"]["customData"]["data"], string | number>]: never; }) | undefined;
            } & { [K_2 in Exclude<keyof I["channel"]["customData"], "data">]: never; }) | undefined;
        } & { [K_3 in Exclude<keyof I["channel"], keyof Channel>]: never; }) | undefined;
    } & { [K_4 in Exclude<keyof I, keyof CreateChannelResponse>]: never; }>(object: I): CreateChannelResponse;
};
export declare const CreateChannelReq: {
    encode(message: CreateChannelReq, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CreateChannelReq;
    fromJSON(object: any): CreateChannelReq;
    toJSON(message: CreateChannelReq): unknown;
    fromPartial<I extends {
        identifier?: string | undefined;
        maxParticipants?: number | undefined;
        customData?: {
            data?: {
                [x: string]: string | undefined;
            } | undefined;
        } | undefined;
    } & {
        identifier?: string | undefined;
        maxParticipants?: number | undefined;
        customData?: ({
            data?: {
                [x: string]: string | undefined;
            } | undefined;
        } & {
            data?: ({
                [x: string]: string | undefined;
            } & {
                [x: string]: string | undefined;
            } & { [K in Exclude<keyof I["customData"]["data"], string | number>]: never; }) | undefined;
        } & { [K_1 in Exclude<keyof I["customData"], "data">]: never; }) | undefined;
    } & { [K_2 in Exclude<keyof I, keyof CreateChannelReq>]: never; }>(object: I): CreateChannelReq;
};
export declare const CustomData: {
    encode(message: CustomData, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CustomData;
    fromJSON(object: any): CustomData;
    toJSON(message: CustomData): unknown;
    fromPartial<I extends {
        data?: {
            [x: string]: string | undefined;
        } | undefined;
    } & {
        data?: ({
            [x: string]: string | undefined;
        } & {
            [x: string]: string | undefined;
        } & { [K in Exclude<keyof I["data"], string | number>]: never; }) | undefined;
    } & { [K_1 in Exclude<keyof I, "data">]: never; }>(object: I): CustomData;
};
export declare const CustomData_DataEntry: {
    encode(message: CustomData_DataEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): CustomData_DataEntry;
    fromJSON(object: any): CustomData_DataEntry;
    toJSON(message: CustomData_DataEntry): unknown;
    fromPartial<I extends {
        key?: string | undefined;
        value?: string | undefined;
    } & {
        key?: string | undefined;
        value?: string | undefined;
    } & { [K in Exclude<keyof I, keyof CustomData_DataEntry>]: never; }>(object: I): CustomData_DataEntry;
};
export interface ChannelService {
    CreateChannel(request: CreateChannelReq): Promise<CreateChannelResponse>;
}
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};
export {};
