Skip to content

Commit 4eb159f

Browse files
committed
define token interfaces
1 parent 6f5714b commit 4eb159f

File tree

5 files changed

+55
-1
lines changed

5 files changed

+55
-1
lines changed

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
[workspace]
22

33
members = [
4-
"fvm_dispatch"
4+
"fvm_dispatch",
5+
"fil_token",
56
]

fil_token/Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "fil_token"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7+
8+
[dependencies]
9+
fvm_shared = { version = "0.8.0" }

fil_token/src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
pub mod token;
2+
3+
#[cfg(test)]
4+
mod tests {}

fil_token/src/token/mod.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
pub mod receiver;
2+
3+
use fvm_shared::address::Address;
4+
pub use fvm_shared::econ::TokenAmount;
5+
6+
pub type Result<T> = std::result::Result<T, TokenError>;
7+
pub enum TokenError {}
8+
9+
/// A standard fungible token interface allowing for on-chain transactions
10+
pub trait Token {
11+
fn name() -> String;
12+
13+
fn symbol() -> String;
14+
15+
fn total_supply() -> TokenAmount;
16+
17+
fn balance_of(holder: Address) -> Result<TokenAmount>;
18+
19+
fn increase_allowance(spender: Address, value: TokenAmount) -> Result<TokenAmount>;
20+
21+
fn decrease_allowance(spender: Address, value: TokenAmount) -> Result<TokenAmount>;
22+
23+
fn revoke_allowance(spender: Address) -> Result<()>;
24+
25+
fn allowance(owner: Address, spender: Address) -> Result<TokenAmount>;
26+
27+
fn burn(amount: TokenAmount, data: &[u8]) -> Result<TokenAmount>;
28+
29+
fn burn_from(from: Address, amount: TokenAmount, data: &[u8]) -> Result<TokenAmount>;
30+
}

fil_token/src/token/receiver.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
use fvm_shared::{address::Address, econ::TokenAmount};
2+
3+
pub type Result<T> = std::result::Result<T, ReceiverError>;
4+
5+
pub enum ReceiverError {}
6+
7+
/// Standard interface for a contract that wishes to receive tokens
8+
pub trait TokenReceiver {
9+
fn token_received(from: Address, amount: TokenAmount, data: &[u8]) -> Result<u32>;
10+
}

0 commit comments

Comments
 (0)