pub fn new() -> (Component, Bucket) {
let minter_badge = ResourceBuilder::new_fungible(DIVISIBILITY_NONE)
.initial_supply_fungible(1);
// Create a mutable supply token and specify
// the resource definition of the badge allowed to mint and burn.
// Notice that new_token_mutable does not return a bucket but only a resource_definition.
let token_resource_def = ResourceBuilder::new_fungible(DIVISIBILITY_MAXIMUM)
.metadata("name", "Really Cool Token - but mutable")
.metadata("symbol", "RCTM")
.flags(MINTABLE | BURNABLE)
.badge(minter_badge.resource_def(), MAY_MINT | MAY_BURN)
// Now we can mint tokens
let tokens = token_resource_def.mint(1000, minter_badge.present());
// It's the same when creating mutable badges (divisibility of 0)
let badge_resource_def = ResourceBuilder::new_fungible(DIVISIBILITY_ZERO)
.metadata("name", "Mutable Badge")
.flags(MINTABLE | BURNABLE)
.badge(minter_badge.resource_def(), MAY_MINT | MAY_BURN)
let badge = badge_resource_def.mint(1, minter_badge.present());
minter_badge: Vault::with_bucket(minter_badge),
token_vault: Vault::with_bucket(tokens)