7#include <signal_bridge_cxx/lib.h>
8#include <signal_types/signal_types.hpp>
28 explicit bridge(
const std::filesystem::path &bridge_db)
29 : bridge_(
radix_relay::new_signal_bridge(bridge_db.string().c_str()))
37 explicit bridge(rust::Box<SignalBridge> signal_bridge) : bridge_(std::move(signal_bridge)) {}
57 [[nodiscard]] auto
list_contacts() const -> std::vector<core::contact_info>;
66 [[nodiscard]] auto
encrypt_message(const std::
string &rdx, const std::vector<uint8_t> &bytes) const
67 -> std::vector<uint8_t>;
76 [[nodiscard]] auto
decrypt_message(const std::
string &rdx, const std::vector<uint8_t> &bytes) const
87 const std::
string &alias) const -> std::
string;
131 const std::
string &content,
133 const std::
string &version) const -> std::
string;
142 [[nodiscard]] auto
lookup_contact(const std::
string &alias) const -> core::contact_info;
160 std::uint64_t since_timestamp = 0) const -> std::
string;
184 std::uint32_t signed_pre_key_id,
185 std::uint32_t kyber_pre_key_id) const ->
void;
205 std::uint32_t offset) const -> std::vector<stored_message>;
234 [[nodiscard]] auto
get_unread_count(const std::
string &rdx_fingerprint) const -> std::uint32_t;
237 mutable rust::Box<SignalBridge> bridge_;
C++ wrapper for the Rust Signal Protocol implementation.
auto get_conversations(bool include_archived) const -> std::vector< conversation >
Retrieves all conversations ordered by most recent message.
auto get_conversation_messages(const std::string &rdx_fingerprint, std::uint32_t limit, std::uint32_t offset) const -> std::vector< stored_message >
Retrieves messages from a conversation with pagination.
auto delete_message(std::int64_t message_id) const -> void
Deletes a specific message from history.
auto update_last_message_timestamp(std::uint64_t timestamp) const -> void
Updates the timestamp of the last received message.
auto get_node_fingerprint() const -> std::string
Returns this node's RDX fingerprint.
bridge(rust::Box< SignalBridge > signal_bridge)
Constructs a Signal bridge from existing Rust implementation.
auto perform_key_maintenance() const -> key_maintenance_result
Performs periodic key maintenance and rotation.
auto extract_rdx_from_bundle_base64(const std::string &bundle_base64) const -> std::string
Extracts RDX fingerprint from a prekey bundle.
bridge(const bridge &)=delete
auto operator=(const bridge &) -> bridge &=delete
auto decrypt_message(const std::string &rdx, const std::vector< uint8_t > &bytes) const -> decryption_result
Decrypts an incoming message.
bridge(bridge &&)=default
auto lookup_contact(const std::string &alias) const -> core::contact_info
Looks up a contact by RDX fingerprint or alias.
auto sign_nostr_event(const std::string &event_json) const -> std::string
Signs a Nostr event with node's private key.
auto generate_prekey_bundle_announcement(const std::string &version) const -> bundle_info
Generates a signed prekey bundle announcement.
auto delete_conversation(const std::string &rdx_fingerprint) const -> void
Deletes an entire conversation and all its messages.
auto get_unread_count(const std::string &rdx_fingerprint) const -> std::uint32_t
Gets the number of unread messages in a conversation.
auto create_and_sign_encrypted_message(const std::string &rdx, const std::string &content, uint32_t timestamp, const std::string &version) const -> std::string
Creates and signs a Nostr encrypted message event.
auto add_contact_and_establish_session_from_base64(const std::string &bundle, const std::string &alias) const -> std::string
Establishes a session from a prekey bundle.
auto mark_conversation_read(const std::string &rdx_fingerprint) const -> void
Marks all messages in a conversation as read.
auto list_contacts() const -> std::vector< core::contact_info >
Lists all known contacts.
bridge(const std::filesystem::path &bridge_db)
Constructs a Signal bridge with database path.
auto operator=(bridge &&) -> bridge &=default
auto record_published_bundle(std::uint32_t pre_key_id, std::uint32_t signed_pre_key_id, std::uint32_t kyber_pre_key_id) const -> void
Records published prekey bundle to track used keys.
auto create_subscription_for_self(const std::string &subscription_id, std::uint64_t since_timestamp=0) const -> std::string
Creates a Nostr subscription filter for messages to this node.
auto assign_contact_alias(const std::string &rdx, const std::string &alias) const -> void
Assigns an alias to a contact.
auto encrypt_message(const std::string &rdx, const std::vector< uint8_t > &bytes) const -> std::vector< uint8_t >
Encrypts a message for a peer.
auto generate_empty_bundle_announcement(const std::string &version) const -> std::string
Generates an empty bundle announcement for unpublishing.