#ifndef SIGNEDBY_CORE_H
#define SIGNEDBY_CORE_H
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
void sbm_free_string(char* ptr);
void sbm_free_bytes(uint8_t* ptr, size_t len);
char* sbm_hello_from_rust(void);
char* sbm_sha256_hex(const char* input);
uint8_t* sbm_generate_private_key(void);
char* sbm_derive_public_key_hex(const uint8_t* priv_ptr, size_t priv_len);
char* sbm_get_x_only_pubkey(const uint8_t* priv_ptr, size_t priv_len);
char* sbm_sign_message_der_hex(
const uint8_t* priv_ptr,
size_t priv_len,
const char* message
);
char* sbm_sign_schnorr(
const uint8_t* priv_ptr,
size_t priv_len,
const char* message
);
bool sbm_is_prover_ready(void);
bool sbm_init_prover(
const char* zkey_path,
const char* dat_path,
const char* calc_path
);
char* sbm_generate_proof(const char* input_json);
uint8_t* sbm_compute_leaf_commitment(
const uint8_t* secret_ptr,
size_t secret_len
);
bool sbm_has_real_stwo(void);
char* sbm_generate_preimage(void);
char* sbm_verify_payment(
const char* payment_hash,
const char* preimage_hex
);
char* sbm_generate_identity_proof(
const char* did_pubkey,
const char* wallet_address,
const char* wallet_signature,
int64_t expiry_days
);
char* sbm_verify_identity_proof(const char* proof_json);
char* sbm_generate_real_identity_proof_v3(
const char* did_pubkey_hex,
const char* wallet_address,
const char* payment_hash_hex,
int64_t amount_sats,
int64_t expires_at,
const char* ea_domain,
const char* nonce_hex
);
char* sbm_generate_real_identity_proof_v4(
const char* did_pubkey_hex,
const char* wallet_address,
const char* client_id,
const char* session_id,
const char* payment_hash_hex,
int64_t amount_sats,
int64_t expires_at,
const char* ea_domain,
const char* nonce_hex,
int64_t purpose_id,
const char* root_id
);
char* sbm_verify_real_identity_proof(const char* proof_json);
#ifdef __cplusplus
}
#endif
#endif