ark-rest 0.9.3

REST client for Ark server communication
Documentation
use ark_core::Vtxo;
use bitcoin::key::Secp256k1;
use bitcoin::secp256k1::PublicKey;
use bitcoin::secp256k1::SecretKey;

// Configure WASM tests to run in browser environment
wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);

#[wasm_bindgen_test::wasm_bindgen_test]
#[cfg_attr(not(target_arch = "wasm32"), allow(dead_code))]
async fn test_get_info() {
    use ark_rest::Client;

    let server_url = "http://localhost:7070".to_string();

    let client = Client::new(server_url).expect("failed to create client");

    match client.get_info().await {
        Ok(info) => {
            assert!(
                info.session_duration > 0,
                "Session duration should be positive"
            );
        }
        Err(err) => {
            web_sys::console::error_1(&format!("Error getting info: {err:?}").into());
        }
    }
}

#[wasm_bindgen_test::wasm_bindgen_test]
#[cfg_attr(not(target_arch = "wasm32"), allow(dead_code))]
async fn test_get_offchain_address() {
    use ark_rest::Client;

    let secp = Secp256k1::new();
    let sk = SecretKey::from_slice(&[0xcd; 32]).expect("32 bytes, within curve order");
    let pk = PublicKey::from_secret_key(&secp, &sk);

    let server_url = "http://localhost:7070".to_string();

    let client = Client::new(server_url).expect("failed to create client");

    let server_info = client
        .get_info()
        .await
        .expect("to be able to retrieve server info");

    let vtxo = Vtxo::new_default(
        &secp,
        server_info.signer_pk.into(),
        pk.into(),
        server_info.unilateral_exit_delay,
        server_info.network,
    )
    .expect("to be able to create a vtxo");

    let ark_address = vtxo.to_ark_address();
    let address_string = ark_address.encode();
    assert_eq!(
        address_string,
        "tark1qqv6a8wylu3mdllwr20hwvcx89aslhctyp6eranf8pmqau97rtze0qdgw2t9vuuqwhzsm4qfvjyatltmefu8q0gh02m535j9w85dhanp087p46"
    );
}