Skip to content

refactor: update import paths and API calls for OZ v0.6.0 module structure #3

@aguilar1x

Description

@aguilar1x

Context

Depends on #2 (dependency migration). Once Cargo.toml is updated the Rust source will fail to compile because the module paths and public API changed significantly between v0.3.0 and v0.6.0.

Import path changes

Old (v0.3.0) New (v0.6.0)
use stellar_fungible::Base; use stellar_tokens::fungible::{Base, FungibleToken};
use stellar_access_control as access_control; use stellar_access::access_control;
use stellar_pausable as pausable; use stellar_contract_utils::pausable;
use stellar_pausable_macros::when_not_paused; use stellar_macros::when_not_paused;
use stellar_upgradeable_macros::...; use stellar_macros::...;

API call changes

Access control

// v0.3.0
access_control::ensure_role(&env, &caller, &Symbol::new(&env, MINTER_ROLE));
access_control::has_role(&env, &address, &role_symbol).is_some()
access_control::get_admin(&env)

// v0.6.0
access_control::ensure_role(&env, &caller, &Symbol::new(&env, MINTER_ROLE)); // same
access_control::has_role(&env, &address, &role_symbol)  // returns Option<u32>
access_control::get_admin(&env)  // same

Pausable

// v0.3.0
pausable::paused(&env)
pausable::pause(&env)
pausable::unpause(&env)

// v0.6.0  — same function signatures, different module path
stellar_contract_utils::pausable::paused(&env)
stellar_contract_utils::pausable::pause(&env)
stellar_contract_utils::pausable::unpause(&env)

Fungible Base

// v0.3.0
Base::mint(&env, &to, amount)
Base::transfer(&env, &from, &to, amount)   // to: &Address
Base::burn(&env, &from, amount)

// v0.6.0
Base::mint(&env, &to, amount)              // same
Base::transfer(&env, &from, &to, amount)   // to: &MuxedAddress  ← breaking change
Base::burn(&env, &from, amount)            // same

Files to update

  • Contracts/stablecoin/src/contract.rs — all use/import statements + transfer / transfer_from signatures
  • Contracts/stablecoin/src/extensions/burnable.rs
  • Contracts/stablecoin/src/extensions/pausable.rs
  • Contracts/stablecoin/src/extensions/upgradeable.rs
  • Contracts/stablecoin/src/utils.rs

Acceptance criteria

  • All use statements reference the new v0.6.0 module paths
  • transfer and transfer_from accept MuxedAddress for the to parameter
  • cargo build compiles without errors

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions