bolt-cw-sdk 1.0.0

SDK for the BOLT protocol, providing utilities for interacting with the BOLT contracts.
Documentation
use crate::oracle::add_asset_pairs::{Asset, AssetPair};
use cosmrs::tendermint::abci::Event;

pub const TEST_ASSET_ARCH_USDT_PAIR: &str = "aarch:uusd";
pub const TEST_ASSET_ETH_USDT_PAIR: &str = "weth:uusd";
pub const TEST_ASSET_ARCH_ETH_PAIR: &str = "aarch:weth";
pub fn get_test_arch_usdt_pair() -> AssetPair {
    AssetPair {
        base: get_test_asset_arch(),
        quote: get_test_asset_usdt(),
    }
}

pub fn get_test_eth_usdt_pair() -> AssetPair {
    AssetPair {
        base: get_test_asset_eth(),
        quote: get_test_asset_usdt(),
    }
}

pub fn get_test_arch_eth_pair() -> AssetPair {
    AssetPair {
        base: get_test_asset_arch(),
        quote: get_test_asset_eth(),
    }
}

pub const TEST_ASSET_ARCH_NAME: &str = "arch";
pub const TEST_ASSET_ARCH_SYMBOL: &str = "aarch";
pub const TEST_ASSET_ARCH_PRECISION: u8 = 18;
pub fn get_test_map_arch() -> (String, String) {
    token_map(TEST_ASSET_ARCH_NAME, TEST_ASSET_ARCH_SYMBOL)
}
pub fn get_test_asset_arch() -> Asset {
    Asset {
        name: TEST_ASSET_ARCH_NAME.to_string(),
        symbol: TEST_ASSET_ARCH_SYMBOL.to_string(),
        precision: TEST_ASSET_ARCH_PRECISION,
    }
}

pub const TEST_ASSET_USDT_NAME: &str = "usdt";
pub const TEST_ASSET_USDT_SYMBOL: &str = "uusd";
pub const TEST_ASSET_USDT_PRECISION: u8 = 6;
pub fn get_test_map_usdt() -> (String, String) {
    token_map(TEST_ASSET_USDT_NAME, TEST_ASSET_USDT_SYMBOL)
}
pub fn get_test_asset_usdt() -> Asset {
    Asset {
        name: TEST_ASSET_USDT_NAME.to_string(),
        symbol: TEST_ASSET_USDT_SYMBOL.to_string(),
        precision: TEST_ASSET_USDT_PRECISION,
    }
}

pub const TEST_ASSET_ETH_NAME: &str = "eth";
pub const TEST_ASSET_ETH_SYMBOL: &str = "weth";
pub const TEST_ASSET_ETH_PRECISION: u8 = 6; // all ibc assets are 6 in cosmos
pub fn get_test_map_eth() -> (String, String) {
    token_map(TEST_ASSET_ETH_NAME, TEST_ASSET_ETH_SYMBOL)
}
pub fn get_test_asset_eth() -> Asset {
    Asset {
        name: TEST_ASSET_ETH_NAME.to_string(),
        symbol: TEST_ASSET_ETH_SYMBOL.to_string(),
        precision: TEST_ASSET_ETH_PRECISION,
    }
}

fn token_map(name: &str, symbol: &str) -> (String, String) {
    (name.to_string(), symbol.to_string())
}

#[track_caller]
pub fn assert_event_attribute(event: &Event, attribute_key: &str, attribute_value: &str) {
    let event_attr = event
        .attributes
        .iter()
        .find(|attr| attr.key_str().expect("Key could not be stringified") == attribute_key)
        .unwrap_or_else(|| panic!("Failed to find event attr: {}", attribute_key));
    assert_eq!(
        event_attr
            .value_str()
            .expect("Value could not be stringified"),
        attribute_value
    );
}

pub const VALID_BECH32_ADDRESS: &str =
    "archway1706lywddqxu24ff6426puftkfaw20tyhdkun30pljux7e9alv2fql0q0ca";