import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { Any } from "./google/protobuf/any.js";
import { Empty } from "./google/protobuf/empty.js";
export declare const protobufPackage = "wag";
export declare enum WAPresence {
    unavailable = 0,
    available = 1,
    composing = 2,
    recording = 3,
    paused = 4,
    UNRECOGNIZED = -1
}
export declare function wAPresenceFromJSON(object: any): WAPresence;
export declare function wAPresenceToJSON(object: WAPresence): string;
export interface Contact {
    id: string;
    lid?: string | undefined;
    name?: string | undefined;
    notify?: string | undefined;
    verifiedName?: string | undefined;
    imgUrl?: string | undefined;
    status?: string | undefined;
}
export interface PresenceData {
    lastKnownPresence: WAPresence;
    lastSeen?: number | undefined;
}
export interface Chat {
    base?: Any | undefined;
    lastMessageRecvTimestamp?: number | undefined;
}
export interface PartialChat {
    base?: Any | undefined;
    lastMessageRecvTimestamp?: number | undefined;
}
export interface TopicsInput {
    topics: string[];
}
export interface ActionTest {
    id: string;
    bool: boolean;
    /** Simplified object payload */
    obj: {
        [key: string]: string;
    };
}
export interface ActionTest_ObjEntry {
    key: string;
    value: string;
}
export interface ActionSendMessage {
    jid: string;
    content?: Any | undefined;
    options?: Any | undefined;
}
export interface ActionClearUnreadCount {
    jid: string;
}
export interface ActionUploadMediaFromWa {
    jid: string;
    messageId: string;
}
export interface EventError {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data: string;
}
export interface EventSendMessage {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data?: Any | undefined;
}
export interface EventSendMessageError {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data: string;
}
export interface EventQr {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data: string;
}
export interface EventConnected {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data?: Contact | undefined;
}
export interface EventNull {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data?: Empty | undefined;
}
export interface EventMessageUpsert {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data: Any[];
}
export interface EventMessageUpdate {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data: Any[];
}
export interface Presence {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    presences: {
        [key: string]: PresenceData;
    };
}
export interface Presence_PresencesEntry {
    key: string;
    value?: PresenceData | undefined;
}
export interface EventPresenceUpdate {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data?: Presence | undefined;
}
export interface EventChatsUpsert {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data: Chat[];
}
export interface EventChatsUpdate {
    topic: string;
    clientId: string;
    contactId?: string | undefined;
    data: PartialChat[];
}
export interface ActionNull {
    data?: Empty | undefined;
}
export interface ActionSpawnStartClient {
    clientId: string;
    browser: string[];
}
export interface ActionSpawnStartBatch {
    clients: ActionSpawnStartClient[];
}
export interface ActionSpawnRestartClient {
    clientId: string;
}
export interface ActionSpawnGracefulClient {
    clientId: string;
}
export interface ActionSpawnGracefulShutdown {
    dummy?: Empty | undefined;
}
export interface ActionSpawnDestroyClient {
    clientId: string;
}
export interface EventSpawnGracefulDone {
    topic: string;
    spawnId: string;
    data?: Empty | undefined;
}
export interface EventSpawnGracefulClientDone {
    topic: string;
    clientId: string;
    data?: Empty | undefined;
}
export interface EventSpawnDestroyDone {
    topic: string;
    clientId: string;
    data?: Empty | undefined;
}
export interface EventSpawnCrashed {
    topic: string;
    spawnId: string;
    reason: string;
    fatal: boolean;
    type: string;
    timestamp: number;
}
export declare const Contact: MessageFns<Contact>;
export declare const PresenceData: MessageFns<PresenceData>;
export declare const Chat: MessageFns<Chat>;
export declare const PartialChat: MessageFns<PartialChat>;
export declare const TopicsInput: MessageFns<TopicsInput>;
export declare const ActionTest: MessageFns<ActionTest>;
export declare const ActionTest_ObjEntry: MessageFns<ActionTest_ObjEntry>;
export declare const ActionSendMessage: MessageFns<ActionSendMessage>;
export declare const ActionClearUnreadCount: MessageFns<ActionClearUnreadCount>;
export declare const ActionUploadMediaFromWa: MessageFns<ActionUploadMediaFromWa>;
export declare const EventError: MessageFns<EventError>;
export declare const EventSendMessage: MessageFns<EventSendMessage>;
export declare const EventSendMessageError: MessageFns<EventSendMessageError>;
export declare const EventQr: MessageFns<EventQr>;
export declare const EventConnected: MessageFns<EventConnected>;
export declare const EventNull: MessageFns<EventNull>;
export declare const EventMessageUpsert: MessageFns<EventMessageUpsert>;
export declare const EventMessageUpdate: MessageFns<EventMessageUpdate>;
export declare const Presence: MessageFns<Presence>;
export declare const Presence_PresencesEntry: MessageFns<Presence_PresencesEntry>;
export declare const EventPresenceUpdate: MessageFns<EventPresenceUpdate>;
export declare const EventChatsUpsert: MessageFns<EventChatsUpsert>;
export declare const EventChatsUpdate: MessageFns<EventChatsUpdate>;
export declare const ActionNull: MessageFns<ActionNull>;
export declare const ActionSpawnStartClient: MessageFns<ActionSpawnStartClient>;
export declare const ActionSpawnStartBatch: MessageFns<ActionSpawnStartBatch>;
export declare const ActionSpawnRestartClient: MessageFns<ActionSpawnRestartClient>;
export declare const ActionSpawnGracefulClient: MessageFns<ActionSpawnGracefulClient>;
export declare const ActionSpawnGracefulShutdown: MessageFns<ActionSpawnGracefulShutdown>;
export declare const ActionSpawnDestroyClient: MessageFns<ActionSpawnDestroyClient>;
export declare const EventSpawnGracefulDone: MessageFns<EventSpawnGracefulDone>;
export declare const EventSpawnGracefulClientDone: MessageFns<EventSpawnGracefulClientDone>;
export declare const EventSpawnDestroyDone: MessageFns<EventSpawnDestroyDone>;
export declare const EventSpawnCrashed: MessageFns<EventSpawnCrashed>;
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.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 interface MessageFns<T> {
    encode(message: T, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): T;
    fromJSON(object: any): T;
    toJSON(message: T): unknown;
    create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
    fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
}
export {};
