# SEP-0041 Token Exposes the interface of the SEP-0041 Token alongside a mock token contract. SEP-0041 Definition: https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0041.md ## Safety This is **experimental software** and is provided on an "as is" and "as available" basis. We do **not give any warranties** and **will not be liable for any loss** incurred through any use of this codebase. ## Getting Started Add the package to your `Cargo.toml`: ```toml [dependencies] sep-41-token = "" ``` You can optionally include the `testutils` feature in your `dev-dependencies` to deploy a mock version of the `sep-41-token` for testing: ```toml [dev_dependencies] sep-40-token = { version = "", features = ["testutils"] } ``` ### Client and Traits This package exposes 3 different token clients based on your usage. * `TokenClient` is the `SEP-0041` standard and is derived from the trait `Token` * `StellarAssetClient` exposes the functions implemented by the Stellar Asset Contract and is derived from the trait `StellarAssetExtension` ### Mock Token This package exposes an example Soroban token implementation of the `SEP-0041` standard that can be used to test protocol interactions with Soroban tokens. This is important to test as interacting with Soroban tokens has a much larger cost impact than interacting with the Stellar Asset Contract. A WASM version of the contract can be deployed as follows: ```rust use sep_41_token::testutils::{MockTokenClient, MockTokenWASM}; use soroban_sdk::{testutils::Address as _, Address, Env, String}; let env = Env::default(); let admin = Address::generate(&env); let token_id = env.register_contract_wasm(None, MockTokenWASM); let token_client = MockTokenClient::new(&env, &token_id); token_client.initialize( &admin, &7, &String::from_str(&env, "Name"), &String::from_str(&env, "Symbol"), ); ```