import type { SignatureScheme } from "../../cryptography/signature-scheme.js";
import type { ServerRegisterRequest, ServerRegisterResponse, UploadPreKeysRequest, UploadPreKeysResponse, RemoteBundle, SendMessageRequest, SendMessageResponse, PullMessagesResponse, MessengerConfig, PreKeyStatus, SignedRequest, Empty, AddListRequest, AddGuardListRequest, RemoveListRequest, ClearListRequest, ExistListRequest, ListOperationResponse, UpdateSettingsRequest, GetSettingsResponse } from "./types.js";
export declare class MessengerServerClient {
    private config;
    constructor(config?: Partial<MessengerConfig>);
    registerDevice(request: ServerRegisterRequest): Promise<ServerRegisterResponse>;
    uploadPreKeys(request: UploadPreKeysRequest): Promise<UploadPreKeysResponse>;
    fetchRemoteBundle(userAddress: string, myAddress: string, myPublicKey: string, signatureParams: {
        signatureScheme: string;
        signature: string;
        timestamp: number;
        nonce: string;
    }, _deviceId?: number): Promise<RemoteBundle>;
    sendMessage(request: SendMessageRequest): Promise<SendMessageResponse & {
        guard_list?: string[];
    }>;
    pullMessages(userAddress: string, publicKey: string, signatureParams: {
        signatureScheme: string;
        signature: string;
        timestamp: number;
        nonce: string;
    }, limit?: number): Promise<PullMessagesResponse>;
    getPrekeyStatus(userAddress: string): Promise<PreKeyStatus>;
    acknowledgeMessages(messageIds: string[], senderPublicKey: string, signatureParams: {
        publicKey: string;
        signatureScheme: SignatureScheme;
        signature: string;
        timestamp: number;
        nonce: string;
    }): Promise<void>;
    addToBlacklist(userAddress: string, signedRequest: SignedRequest<AddListRequest>): Promise<ListOperationResponse>;
    removeFromBlacklist(userAddress: string, signedRequest: SignedRequest<RemoveListRequest>): Promise<ListOperationResponse>;
    clearBlacklist(userAddress: string, signedRequest: SignedRequest<ClearListRequest>): Promise<ListOperationResponse>;
    getBlacklist(userAddress: string, signedRequest: SignedRequest<Empty>): Promise<string[]>;
    existInBlacklist(userAddress: string, signedRequest: SignedRequest<ExistListRequest>): Promise<ListOperationResponse>;
    addToFriendsList(userAddress: string, signedRequest: SignedRequest<AddListRequest>): Promise<ListOperationResponse>;
    removeFromFriendsList(userAddress: string, signedRequest: SignedRequest<RemoveListRequest>): Promise<ListOperationResponse>;
    clearFriendsList(userAddress: string, signedRequest: SignedRequest<ClearListRequest>): Promise<ListOperationResponse>;
    getFriendsList(userAddress: string, signedRequest: SignedRequest<Empty>): Promise<string[]>;
    existInFriendsList(userAddress: string, signedRequest: SignedRequest<ExistListRequest>): Promise<ListOperationResponse>;
    addToGuardList(userAddress: string, signedRequest: SignedRequest<AddGuardListRequest>): Promise<ListOperationResponse>;
    removeFromGuardList(userAddress: string, signedRequest: SignedRequest<RemoveListRequest>): Promise<ListOperationResponse>;
    getGuardList(userAddress: string, signedRequest: SignedRequest<Empty>): Promise<ListOperationResponse>;
    updateSettings(userAddress: string, signedRequest: SignedRequest<UpdateSettingsRequest>): Promise<boolean>;
    getSettings(userAddress: string, signedRequest: SignedRequest<Record<string, never>>): Promise<GetSettingsResponse>;
    private _listOperation;
}
export declare const defaultServerClient: MessengerServerClient;
