diff --git a/target_chains/cosmwasm/examples/cw-contract/Cargo.lock b/target_chains/cosmwasm/examples/cw-contract/Cargo.lock index 9127768c..7a8a4c0d 100644 --- a/target_chains/cosmwasm/examples/cw-contract/Cargo.lock +++ b/target_chains/cosmwasm/examples/cw-contract/Cargo.lock @@ -31,32 +31,15 @@ version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b645a089122eccb6111b4f81cbc1a49f5900ac4666bb93ac027feaecf15607bf" -[[package]] -name = "bigint" -version = "4.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0e8c8a600052b52482eff2cf4d810e462fdff1f656ac1ecb6232132a1ed7def" -dependencies = [ - "byteorder", - "crunchy 0.1.6", -] - [[package]] name = "block-buffer" version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ - "block-padding", "generic-array", ] -[[package]] -name = "block-padding" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" - [[package]] name = "borsh" version = "0.9.3" @@ -108,12 +91,6 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" -[[package]] -name = "bytes" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" - [[package]] name = "cfg-if" version = "1.0.0" @@ -134,7 +111,7 @@ checksum = "5eb0afef2325df81aadbf9be1233f522ed8f6e91df870c764bc44cca2b1415bd" dependencies = [ "digest", "ed25519-zebra", - "k256 0.10.4", + "k256", "rand_core 0.6.4", "thiserror", ] @@ -208,30 +185,12 @@ dependencies = [ "libc", ] -[[package]] -name = "crunchy" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda" - [[package]] name = "crunchy" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" -[[package]] -name = "crypto-bigint" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83bd3bb4314701c568e340cd8cf78c975aa0ca79e03d3f6d1677d5b0c9c0c03" -dependencies = [ - "generic-array", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - [[package]] name = "crypto-bigint" version = "0.3.2" @@ -278,80 +237,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cw-utils" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dbaecb78c8e8abfd6b4258c7f4fbeb5c49a5e45ee4d910d3240ee8e1d714e1b" -dependencies = [ - "cosmwasm-std", - "schemars", - "serde", - "thiserror", -] - -[[package]] -name = "cw2" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cf4639517490dd36b333bbd6c4fbd92e325fd0acf4683b41753bc5eb63bfc1" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus", - "schemars", - "serde", -] - -[[package]] -name = "cw20" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cb782b8f110819a4eb5dbbcfed25ffba49ec16bbe32b4ad8da50a5ce68fec05" -dependencies = [ - "cosmwasm-std", - "cw-utils", - "schemars", - "serde", -] - -[[package]] -name = "cw20-base" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0306e606581f4fb45e82bcbb7f0333179ed53dd949c6523f01a99b4bfc1475a0" -dependencies = [ - "cosmwasm-std", - "cw-storage-plus", - "cw-utils", - "cw2", - "cw20", - "schemars", - "serde", - "thiserror", -] - -[[package]] -name = "cw20-wrapped-2" -version = "0.1.0" -source = "git+https://github.com/wormhole-foundation/wormhole?tag=v2.8.9#e47f9e481ef84d4dea7a94c9eafbf3b180892466" -dependencies = [ - "cosmwasm-std", - "cosmwasm-storage", - "cw-storage-plus", - "cw2", - "cw20", - "cw20-base", - "schemars", - "serde", - "thiserror", -] - -[[package]] -name = "der" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79b71cca7d95d7681a4b3b9cdf63c8dbc3730d0584c2c74e31416d64a90493f4" - [[package]] name = "der" version = "0.5.1" @@ -376,26 +261,14 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9b0705efd4599c15a38151f4721f7bc388306f61084d3bfd50bd07fbca5cb60" -[[package]] -name = "ecdsa" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ee23aa5b4f68c7a092b5c3beb25f50c406adc75e2363634f242f28ab255372" -dependencies = [ - "der 0.4.5", - "elliptic-curve 0.10.6", - "hmac", - "signature", -] - [[package]] name = "ecdsa" version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0d69ae62e0ce582d56380743515fefaf1a8c70cec685d9677636d7e30ae9dc9" dependencies = [ - "der 0.5.1", - "elliptic-curve 0.11.12", + "der", + "elliptic-curve", "rfc6979", "signature", ] @@ -415,21 +288,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "elliptic-curve" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beca177dcb8eb540133e7680baff45e7cc4d93bf22002676cec549f82343721b" -dependencies = [ - "crypto-bigint 0.2.11", - "ff 0.10.1", - "generic-array", - "group 0.10.0", - "rand_core 0.6.4", - "subtle", - "zeroize", -] - [[package]] name = "elliptic-curve" version = "0.11.12" @@ -437,11 +295,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25b477563c2bfed38a3b7a60964c49e058b2510ad3f12ba3483fd8f62c2306d6" dependencies = [ "base16ct", - "crypto-bigint 0.3.2", - "der 0.5.1", - "ff 0.11.1", + "crypto-bigint", + "der", + "ff", "generic-array", - "group 0.11.0", + "group", "rand_core 0.6.4", "sec1", "subtle", @@ -456,21 +314,11 @@ dependencies = [ "cosmwasm-std", "cosmwasm-storage", "cw-storage-plus", - "pyth-cosmwasm", + "pyth-sdk-cw", "schemars", "serde", ] -[[package]] -name = "ff" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f40b2dcd8bc322217a5f6559ae5f9e9d1de202a2ecee2e9eafcbece7562a4f" -dependencies = [ - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "ff" version = "0.11.1" @@ -508,24 +356,13 @@ dependencies = [ "wasi", ] -[[package]] -name = "group" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c363a5301b8f153d80747126a04b3c82073b9fe3130571a9d170cacdeaf7912" -dependencies = [ - "ff 0.10.1", - "rand_core 0.6.4", - "subtle", -] - [[package]] name = "group" version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89" dependencies = [ - "ff 0.11.1", + "ff", "rand_core 0.6.4", "subtle", ] @@ -573,17 +410,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" -[[package]] -name = "k256" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903ae2481bcdfdb7b68e0a9baa4b7c9aff600b9ae2e8e5bb5833b8c91ab851ea" -dependencies = [ - "cfg-if", - "ecdsa 0.12.4", - "elliptic-curve 0.10.6", -] - [[package]] name = "k256" version = "0.10.4" @@ -591,27 +417,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19c3a5e0a0b8450278feda242592512e09f61c72e018b8cd5c859482802daf2d" dependencies = [ "cfg-if", - "ecdsa 0.13.4", - "elliptic-curve 0.11.12", + "ecdsa", + "elliptic-curve", "sec1", "sha2", ] -[[package]] -name = "keccak" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" -dependencies = [ - "cpufeatures", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - [[package]] name = "libc" version = "0.2.139" @@ -630,23 +441,13 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" -[[package]] -name = "p2w-sdk" -version = "0.1.1" -source = "git+https://github.com/pyth-network/pyth-crosschain?tag=pyth-cosmwasm-v0.1.0#16b7977179483d2a52d970a85bac707525068db5" -dependencies = [ - "hex", - "pyth-sdk 0.5.0", - "serde", -] - [[package]] name = "pkcs8" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" dependencies = [ - "der 0.5.1", + "der", "spki", "zeroize", ] @@ -669,53 +470,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "protobuf" -version = "2.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" -dependencies = [ - "bytes", -] - -[[package]] -name = "pyth-cosmwasm" -version = "0.1.0" -source = "git+https://github.com/pyth-network/pyth-crosschain?tag=pyth-cosmwasm-v0.1.0#16b7977179483d2a52d970a85bac707525068db5" -dependencies = [ - "bigint", - "byteorder", - "cosmwasm-schema", - "cosmwasm-std", - "cosmwasm-storage", - "generic-array", - "hex", - "k256 0.9.6", - "lazy_static", - "p2w-sdk", - "pyth-sdk 0.7.0", - "schemars", - "serde", - "serde_derive", - "sha3", - "terraswap", - "thiserror", - "wormhole-bridge-terra-2", -] - -[[package]] -name = "pyth-sdk" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5c805ba3dfb5b7ed6a8ffa62ec38391f485a79c7cf6b3b11d3bd44fb0325824" -dependencies = [ - "borsh", - "borsh-derive", - "hex", - "schemars", - "serde", -] - [[package]] name = "pyth-sdk" version = "0.7.0" @@ -729,6 +483,16 @@ dependencies = [ "serde", ] +[[package]] +name = "pyth-sdk-cw" +version = "0.1.0" +dependencies = [ + "cosmwasm-schema", + "cosmwasm-std", + "pyth-sdk", + "thiserror", +] + [[package]] name = "quote" version = "1.0.23" @@ -759,7 +523,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96ef608575f6392792f9ecf7890c00086591d29a83910939d430753f7c050525" dependencies = [ - "crypto-bigint 0.3.2", + "crypto-bigint", "hmac", "zeroize", ] @@ -800,7 +564,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08da66b8b0965a5555b6bd6639e68ccba85e1e2506f5fbb089e93f8a04e1a2d1" dependencies = [ - "der 0.5.1", + "der", "generic-array", "pkcs8", "subtle", @@ -871,18 +635,6 @@ dependencies = [ "opaque-debug", ] -[[package]] -name = "sha3" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" -dependencies = [ - "block-buffer", - "digest", - "keccak", - "opaque-debug", -] - [[package]] name = "signature" version = "1.3.2" @@ -900,7 +652,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" dependencies = [ "base64ct", - "der 0.5.1", + "der", ] [[package]] @@ -926,20 +678,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "terraswap" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9540f8489ec6e098de380c9fa8fa81fa95e502f87d63705aa6fba56817ad1a7" -dependencies = [ - "cosmwasm-std", - "cosmwasm-storage", - "cw20", - "protobuf", - "schemars", - "serde", -] - [[package]] name = "thiserror" version = "1.0.38" @@ -982,7 +720,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" dependencies = [ "byteorder", - "crunchy 0.2.2", + "crunchy", "hex", "static_assertions", ] @@ -1005,27 +743,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wormhole-bridge-terra-2" -version = "0.1.0" -source = "git+https://github.com/wormhole-foundation/wormhole?tag=v2.8.9#e47f9e481ef84d4dea7a94c9eafbf3b180892466" -dependencies = [ - "cosmwasm-std", - "cosmwasm-storage", - "cw20", - "cw20-base", - "cw20-wrapped-2", - "generic-array", - "getrandom", - "hex", - "k256 0.9.6", - "lazy_static", - "schemars", - "serde", - "sha3", - "thiserror", -] - [[package]] name = "zeroize" version = "1.4.3" diff --git a/target_chains/cosmwasm/examples/cw-contract/Cargo.toml b/target_chains/cosmwasm/examples/cw-contract/Cargo.toml index 9723b6d6..80a9ce83 100644 --- a/target_chains/cosmwasm/examples/cw-contract/Cargo.toml +++ b/target_chains/cosmwasm/examples/cw-contract/Cargo.toml @@ -34,5 +34,5 @@ cosmwasm-storage = { version = "1.0.0" } cw-storage-plus = "0.13.4" schemars = "0.8" serde = { version = "1.0", default-features = false, features = ["derive"] } -pyth-cosmwasm = { git="https://github.com/pyth-network/pyth-crosschain", tag="pyth-cosmwasm-v0.1.0", features=["library"] } +pyth-sdk-cw = { path="../../pyth-sdk-cw"} cosmwasm-schema = "1.1.9" diff --git a/target_chains/cosmwasm/examples/cw-contract/src/contract.rs b/target_chains/cosmwasm/examples/cw-contract/src/contract.rs index 8b1866ce..07c588c2 100644 --- a/target_chains/cosmwasm/examples/cw-contract/src/contract.rs +++ b/target_chains/cosmwasm/examples/cw-contract/src/contract.rs @@ -9,16 +9,17 @@ use cosmwasm_std::{ DepsMut, Env, MessageInfo, - QueryRequest, Response, StdError, StdResult, - WasmQuery, Coin, + Coin, }; -use pyth_cosmwasm::msg::{ +use pyth_sdk_cw::{ PriceFeedResponse, - QueryMsg as PythQueryMsg, + get_update_fee, + get_valid_time_period, + query_price_feed, }; use crate::msg::{ @@ -89,14 +90,7 @@ fn query_fetch_price(deps: Deps, env: Env) -> StdResult { // price feed. The result is a PriceFeed object with fields for the current price and other // useful information. The function will fail if the contract address or price feed id are // invalid. - let price_feed_response: PriceFeedResponse = - deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart { - contract_addr: state.pyth_contract_addr.into_string(), - msg: to_binary(&PythQueryMsg::PriceFeed { - id: state.price_feed_id, - })?, - }))?; - + let price_feed_response: PriceFeedResponse = query_price_feed(&deps.querier, state.pyth_contract_addr, state.price_feed_id)?; let price_feed = price_feed_response.price_feed; // Get the current price and confidence interval from the price feed. @@ -125,20 +119,165 @@ fn query_fetch_price(deps: Deps, env: Env) -> StdResult { fn query_fetch_update_fee(deps: Deps, vaas: Vec) -> StdResult { let state = STATE.load(deps.storage)?; - let contract_addr = state.pyth_contract_addr.into_string(); - - let msg = to_binary(&PythQueryMsg::GetUpdateFee { vaas })?; - - let coin: Coin = deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr, msg }))?; + let coin = get_update_fee(&deps.querier, state.pyth_contract_addr, vaas.as_slice())?; Ok(coin) } fn query_fetch_valid_time_period(deps: Deps) -> StdResult { let state = STATE.load(deps.storage)?; - let contract_addr = state.pyth_contract_addr.into_string(); - - let msg = to_binary(&PythQueryMsg::GetValidTimePeriod)?; - - let duration: Duration = deps.querier.query(&QueryRequest::Wasm(WasmQuery::Smart { contract_addr, msg }))?; + let duration = get_valid_time_period(&deps.querier, state.pyth_contract_addr)?; Ok(duration) } + +#[cfg(test)] +mod test { + use super::*; + use cosmwasm_std::testing::{ + mock_dependencies, + mock_env, + MockApi, + MockQuerier, + MockStorage, + }; + use cosmwasm_std::{ + from_binary, + Addr, + Coin, + OwnedDeps, + QuerierResult, + SystemError, + SystemResult, + Timestamp, + WasmQuery, + }; + use pyth_sdk_cw::testing::MockPyth; + use pyth_sdk_cw::{ + Price, + PriceFeed, + PriceIdentifier, + UnixTimestamp, + }; + use std::convert::TryFrom; + use std::time::Duration; + + // Dummy contract address for testing. + // For real deployments, see list of contract addresses here https://docs.pyth.network/pythnet-price-feeds/cosmwasm + const PYTH_CONTRACT_ADDR: &str = "pyth_contract_addr"; + // For real deployments, see list of price feed ids here https://pyth.network/developers/price-feed-ids + const PRICE_ID: &str = "63f341689d98a12ef60a5cff1d7f85c70a9e17bf1575f0e7c0b2512d48b1c8b3"; + + fn default_state() -> State { + State { + pyth_contract_addr: Addr::unchecked(PYTH_CONTRACT_ADDR), + price_feed_id: PriceIdentifier::from_hex(PRICE_ID).unwrap(), + } + } + + fn setup_test( + state: &State, + mock_pyth: &MockPyth, + block_timestamp: UnixTimestamp, + ) -> (OwnedDeps, Env) { + let mut dependencies = mock_dependencies(); + + let mock_pyth_copy = (*mock_pyth).clone(); + dependencies + .querier + .update_wasm(move |x| handle_wasm_query(&mock_pyth_copy, x)); + + STATE.save(dependencies.as_mut().storage, state).unwrap(); + + let mut env = mock_env(); + env.block.time = Timestamp::from_seconds(u64::try_from(block_timestamp).unwrap()); + + (dependencies, env) + } + + // Create a handler like this in your test to handle pyth queries. If needed, other contracts + // can be configured in this handler via additional cases. + fn handle_wasm_query(pyth: &MockPyth, wasm_query: &WasmQuery) -> QuerierResult { + match wasm_query { + WasmQuery::Smart { contract_addr, msg } if *contract_addr == PYTH_CONTRACT_ADDR => { + pyth.handle_wasm_query(msg) + } + WasmQuery::Smart { contract_addr, .. } => { + SystemResult::Err(SystemError::NoSuchContract { + addr: contract_addr.clone(), + }) + } + WasmQuery::Raw { contract_addr, .. } => { + SystemResult::Err(SystemError::NoSuchContract { + addr: contract_addr.clone(), + }) + } + WasmQuery::ContractInfo { contract_addr, .. } => { + SystemResult::Err(SystemError::NoSuchContract { + addr: contract_addr.clone(), + }) + } + _ => unreachable!(), + } + } + + #[test] + fn test_get_price() { + // Arbitrary unix timestamp to coordinate the price feed timestamp and the block time. + let current_unix_time = 10_000_000; + + let mut mock_pyth = MockPyth::new(Duration::from_secs(60), Coin::new(1, "foo"), &[]); + let price_feed = PriceFeed::new( + PriceIdentifier::from_hex(PRICE_ID).unwrap(), + Price { + price: 100, + conf: 10, + expo: -1, + publish_time: current_unix_time, + }, + Price { + price: 200, + conf: 20, + expo: -1, + publish_time: current_unix_time, + }, + ); + + mock_pyth.add_feed(price_feed); + + let (deps, env) = setup_test(&default_state(), &mock_pyth, current_unix_time); + + let msg = QueryMsg::FetchPrice {}; + let result = query(deps.as_ref(), env, msg) + .and_then(|binary| from_binary::(&binary)); + + assert_eq!(result.map(|r| r.current_price.price), Ok(100)); + } + + #[test] + fn test_query_fetch_valid_time_period() { + // Arbitrary unix timestamp to coordinate the price feed timestamp and the block time. + let current_unix_time = 10_000_000; + + let mock_pyth = MockPyth::new(Duration::from_secs(60), Coin::new(1, "foo"), &[]); + let (deps, env) = setup_test(&default_state(), &mock_pyth, current_unix_time); + + let msg = QueryMsg::FetchValidTimePeriod {}; + let result = query(deps.as_ref(), env, msg) + .and_then(|binary| from_binary::(&binary)); + + assert_eq!(result.map(|r| r.as_secs()), Ok(60)); + } + + #[test] + fn test_query_fetch_update_fee() { + // Arbitrary unix timestamp to coordinate the price feed timestamp and the block time. + let current_unix_time = 10_000_000; + + let mock_pyth = MockPyth::new(Duration::from_secs(60), Coin::new(1, "foo"), &[]); + let (deps, env) = setup_test(&default_state(), &mock_pyth, current_unix_time); + + let msg = QueryMsg::FetchUpdateFee { vaas: vec![Binary(vec![1,2,3])] }; + let result = query(deps.as_ref(), env, msg) + .and_then(|binary| from_binary::(&binary)); + assert_eq!(result.map( |r| r.to_string()), Ok(String::from("1foo"))) + } +} diff --git a/target_chains/cosmwasm/examples/cw-contract/src/msg.rs b/target_chains/cosmwasm/examples/cw-contract/src/msg.rs index 2fdf86e8..c4954aa2 100644 --- a/target_chains/cosmwasm/examples/cw-contract/src/msg.rs +++ b/target_chains/cosmwasm/examples/cw-contract/src/msg.rs @@ -1,7 +1,7 @@ use std::time::Duration; use cosmwasm_std::{Binary, Coin}; -use pyth_cosmwasm::{ +use pyth_sdk_cw::{ Price, PriceIdentifier, }; diff --git a/target_chains/cosmwasm/examples/cw-contract/src/state.rs b/target_chains/cosmwasm/examples/cw-contract/src/state.rs index 68b8260e..7ca28b2d 100644 --- a/target_chains/cosmwasm/examples/cw-contract/src/state.rs +++ b/target_chains/cosmwasm/examples/cw-contract/src/state.rs @@ -6,7 +6,7 @@ use serde::{ }; use cw_storage_plus::Item; -use pyth_cosmwasm::PriceIdentifier; +use pyth_sdk_cw::PriceIdentifier; #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)] pub struct State { diff --git a/target_chains/cosmwasm/pyth-sdk-cw/src/lib.rs b/target_chains/cosmwasm/pyth-sdk-cw/src/lib.rs index e2825ab6..ec4e7a36 100644 --- a/target_chains/cosmwasm/pyth-sdk-cw/src/lib.rs +++ b/target_chains/cosmwasm/pyth-sdk-cw/src/lib.rs @@ -5,6 +5,7 @@ pub use pyth_sdk::{ Price, PriceFeed, PriceIdentifier, + UnixTimestamp, }; use { cosmwasm_schema::{