Skip to content

Commit 6195004

Browse files
authored
Swap extension assets info (#94)
* add assets_info fn
1 parent 4e0a97f commit 6195004

3 files changed

Lines changed: 20 additions & 7 deletions

File tree

guest-examples/swap-info/src/main.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ mod swap_info {
1616
pub decimals: u8,
1717
}
1818

19-
#[program::extension_fn(extension_id = 17401483330909459524u64, fn_index = 0)]
19+
#[program::extension_fn(extension_id = 15900548380266538526u64, fn_index = 0)]
2020
fn quote_price_tokens_for_exact_tokens(
2121
asset1: AssetId,
2222
asset2: AssetId,
@@ -25,7 +25,7 @@ mod swap_info {
2525
) -> Option<Balance> {
2626
}
2727

28-
#[program::extension_fn(extension_id = 17401483330909459524u64, fn_index = 1)]
28+
#[program::extension_fn(extension_id = 15900548380266538526u64, fn_index = 1)]
2929
fn quote_price_exact_tokens_for_tokens(
3030
asset1: AssetId,
3131
asset2: AssetId,
@@ -34,15 +34,18 @@ mod swap_info {
3434
) -> Option<Balance> {
3535
}
3636

37-
#[program::extension_fn(extension_id = 17401483330909459524u64, fn_index = 2)]
37+
#[program::extension_fn(extension_id = 15900548380266538526u64, fn_index = 2)]
3838
fn get_liquidity_pool(asset1: AssetId, asset2: AssetId) -> Option<(Balance, Balance)> {}
3939

40-
#[program::extension_fn(extension_id = 17401483330909459524u64, fn_index = 3)]
40+
#[program::extension_fn(extension_id = 15900548380266538526u64, fn_index = 3)]
4141
fn list_pools() -> alloc::vec::Vec<(AssetId, AssetId)> {}
4242

43-
#[program::extension_fn(extension_id = 17401483330909459524u64, fn_index = 4)]
43+
#[program::extension_fn(extension_id = 15900548380266538526u64, fn_index = 4)]
4444
fn asset_info(asset: AssetId) -> Option<AssetInfo> {}
4545

46+
#[program::extension_fn(extension_id = 15900548380266538526u64, fn_index = 5)]
47+
fn assets_info() -> alloc::collections::BTreeMap<AssetId, AssetInfo> {}
48+
4649
#[program::entrypoint]
4750
fn entrypoint_quote_price_exact_tokens_for_tokens(
4851
asset1: AssetId,
@@ -70,9 +73,10 @@ mod swap_info {
7073
fn entrypoint_list_pools() -> alloc::vec::Vec<(AssetInfo, AssetInfo)> {
7174
let pools = list_pools();
7275
let mut result = alloc::vec::Vec::new();
76+
let assets_info = assets_info();
7377
for pool in pools {
74-
let asset1_info = asset_info(pool.0.clone());
75-
let asset2_info = asset_info(pool.1.clone());
78+
let asset1_info = assets_info.get(&pool.0).cloned();
79+
let asset2_info = assets_info.get(&pool.1).cloned();
7680
if let (Some(a1), Some(a2)) = (asset1_info, asset2_info) {
7781
result.push((a1, a2));
7882
}

pvq-extension-swap/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use pvq_extension::extension_decl;
55

66
#[extension_decl]
77
pub mod extension {
8+
use alloc::collections::BTreeMap;
89
use alloc::vec::Vec;
910

1011
#[extension_decl::extension]
@@ -32,5 +33,7 @@ pub mod extension {
3233
fn list_pools() -> Vec<(Self::AssetId, Self::AssetId)>;
3334

3435
fn asset_info(asset: Self::AssetId) -> Option<Self::AssetInfo>;
36+
37+
fn assets_info() -> BTreeMap<Self::AssetId, Self::AssetInfo>;
3538
}
3639
}

pvq-test-runner/src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ pub enum ExtensionFungiblesFunctions {
1717

1818
#[extensions_impl]
1919
pub mod extensions {
20+
use std::collections::BTreeMap;
21+
2022
use parity_scale_codec::Decode;
2123

2224
#[extensions_impl::impl_struct]
@@ -78,6 +80,10 @@ pub mod extensions {
7880
fn asset_info(_asset: Self::AssetId) -> Option<Self::AssetInfo> {
7981
None
8082
}
83+
84+
fn assets_info() -> BTreeMap<Self::AssetId, Self::AssetInfo> {
85+
BTreeMap::new()
86+
}
8187
}
8288
}
8389

0 commit comments

Comments
 (0)