Skip to content

Commit bf851fd

Browse files
committed
(feat) add get_price view functions to aptos contract
1 parent f621690 commit bf851fd

File tree

1 file changed

+20
-0
lines changed
  • target_chains/aptos/contracts/sources

1 file changed

+20
-0
lines changed

target_chains/aptos/contracts/sources/pyth.move

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,14 @@ module pyth::pyth {
424424
get_price_no_older_than(price_identifier, state::get_stale_price_threshold_secs())
425425
}
426426

427+
#[view]
428+
/// A view function version of get_price(...) that's available in offchain programming environments
429+
/// including aptos fullnode api, aptos cli, and aptos ts sdk.
430+
public fun get_price_by_feed_id(feed_id: vector<u8>): Price {
431+
let price_identifier = price_identifier::from_byte_vec(feed_id);
432+
get_price(price_identifier)
433+
}
434+
427435
/// Get the latest available price cached for the given price identifier, if that price is
428436
/// no older than the given age.
429437
public fun get_price_no_older_than(price_identifier: PriceIdentifier, max_age_secs: u64): Price {
@@ -433,6 +441,12 @@ module pyth::pyth {
433441
price
434442
}
435443

444+
#[view]
445+
public fun get_price_no_older_than_by_feed_id(feed_id: vector<u8>, max_age_secs: u64): Price {
446+
let price_identifier = price_identifier::from_byte_vec(feed_id);
447+
get_price_no_older_than(price_identifier, max_age_secs)
448+
}
449+
436450
/// Get the latest available price cached for the given price identifier.
437451
///
438452
/// WARNING: the returned price can be from arbitrarily far in the past.
@@ -446,6 +460,12 @@ module pyth::pyth {
446460
price_info::get_price_feed(&state::get_latest_price_info(price_identifier)))
447461
}
448462

463+
#[view]
464+
public fun get_price_unsafe_by_feed_id(feed_id: vector<u8>): Price {
465+
let price_identifier = price_identifier::from_byte_vec(feed_id);
466+
get_price_unsafe(price_identifier)
467+
}
468+
449469
fun abs_diff(x: u64, y: u64): u64 {
450470
if (x > y) {
451471
return x - y

0 commit comments

Comments
 (0)