Struct casper_contract_schema::Event
source · pub struct Event {
pub name: String,
pub ty: TypeName,
}
Expand description
Event definition.
Fields§
§name: String
§ty: TypeName
Implementations§
source§impl Event
impl Event
sourcepub fn new(name: &str, ty: &str) -> Self
pub fn new(name: &str, ty: &str) -> Self
Creates a new event.
Examples found in repository?
examples/dns.rs (line 118)
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
fn enum_example_schema() -> ContractSchema {
ContractSchema {
casper_contract_schema_version: 1,
toolchain: String::from("rustc 1.73.0 (cc66ad468 2023-10-03)"),
contract_name: String::from("DNS"),
contract_version: String::from("0.1.3"),
authors: vec![],
repository: None,
homepage: None,
errors: vec![],
types: vec![
CustomType::Struct {
name: TypeName::new("IP::IPv6"),
description: None,
members: vec![StructMember::new("ip", "", NamedCLType::ByteArray(16))],
},
CustomType::Struct {
name: TypeName::new("IP::IPv6WithDescription"),
description: None,
members: vec![
StructMember::new("ip", "", NamedCLType::ByteArray(16)),
StructMember::new("description", "", NamedCLType::String),
],
},
CustomType::Enum {
name: TypeName::new("IP"),
description: Some(String::from("IP address")),
variants: vec![
EnumVariant {
name: String::from("Unknown"),
description: None,
discriminant: 0,
ty: NamedCLType::Unit.into(),
},
EnumVariant {
name: String::from("IPv4"),
description: Some(String::from("IPv4 address")),
discriminant: 1,
ty: NamedCLType::ByteArray(4).into(),
},
EnumVariant {
name: String::from("IPv4WithDescription"),
description: Some(String::from("IPv4 address with description")),
discriminant: 2,
ty: NamedCLType::Tuple2([
Box::new(NamedCLType::ByteArray(4)),
Box::new(NamedCLType::String),
])
.into(),
},
EnumVariant {
name: String::from("IPv6"),
description: Some(String::from("IPv6 address")),
discriminant: 3,
ty: NamedCLType::Custom("IP::IPv6".to_owned()).into(),
},
EnumVariant {
name: String::from("IPv6WithDescription"),
description: Some(String::from("IPv6 address with description")),
discriminant: 4,
ty: NamedCLType::Custom("IP::IPv6WithDescription".to_owned()).into(),
},
],
},
CustomType::Struct {
name: TypeName::new("DNSRecord"),
description: Some(String::from("DNS record")),
members: vec![
StructMember::new("name", "Domain name", NamedCLType::String),
StructMember::new("ip", "", NamedCLType::Custom("IP".to_owned())),
],
},
],
entry_points: vec![
Entrypoint {
name: String::from("add_record"),
description: None,
is_mutable: true,
arguments: vec![
Argument::new("name", "", NamedCLType::String),
Argument::new("ip", "", NamedCLType::Custom("IP".to_owned())),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("remove_record"),
description: Some(String::from("Remove a DNS record")),
is_mutable: true,
arguments: vec![
Argument::new("name", "", NamedCLType::String),
Argument::new("ip", "", NamedCLType::Custom("IP".to_owned())),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Groups(vec![String::from("admin"), String::from("moderator")]),
},
],
events: vec![
Event::new("event_RecordAdded", "DNSRecord"),
Event::new("event_RecordRemoved", "DNSRecord"),
],
call: None,
}
}
More examples
examples/erc20.rs (line 134)
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
pub fn example_erc20_schema() -> ContractSchema {
ContractSchema {
casper_contract_schema_version: 1,
toolchain: String::from("rustc 1.73.0 (cc66ad468 2023-10-03)"),
contract_name: String::from("Erc20"),
contract_version: String::from("0.1.0"),
authors: vec![String::from("John Doe <john@doe.com>")],
repository: Some(String::from(
"https://github.com/casper-ecosystem/casper-contract-schema",
)),
homepage: Some(String::from("https://john.doe.com")),
errors: vec![
UserError {
name: String::from("InsufficientFunds"),
description: Some(String::from("Insufficient funds")),
discriminant: 100u16,
},
UserError {
name: String::from("InsufficientAllowance"),
description: Some(String::from("Insufficient allowance")),
discriminant: 101u16,
},
],
types: vec![
CustomType::Struct {
name: TypeName::new("Transfer"),
description: Some(String::from("Transfer event")),
members: vec![
StructMember::new(
"from",
"Sender of tokens.",
NamedCLType::Option(Box::new(NamedCLType::Key)),
),
StructMember::new(
"to",
"Recipient of tokens.",
NamedCLType::Option(Box::new(NamedCLType::Key)),
),
StructMember::new("value", "Transfered amount.", NamedCLType::U256),
],
},
CustomType::Struct {
name: TypeName::new("Approval"),
description: Some(String::from("Approval event")),
members: vec![
StructMember::new("owner", "", NamedCLType::Option(Box::new(NamedCLType::Key))),
StructMember::new(
"spender",
"",
NamedCLType::Option(Box::new(NamedCLType::Key)),
),
StructMember::new("value", "", NamedCLType::U256),
],
},
],
entry_points: vec![
Entrypoint {
name: String::from("transfer"),
description: Some(String::from("Transfer tokens to another account")),
is_mutable: true,
arguments: vec![
Argument::new("recipient", "", NamedCLType::Key),
Argument::new("amount", "", NamedCLType::U256),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("transfer_from"),
description: Some(String::from("Transfer tokens from one account to another")),
is_mutable: true,
arguments: vec![
Argument::new("owner", "", NamedCLType::Key),
Argument::new("recipient", "", NamedCLType::Key),
Argument::new("amount", "", NamedCLType::U256),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("approve"),
description: Some(String::from(
"Approve spender to use tokens on behalf of the owner",
)),
is_mutable: true,
arguments: vec![
Argument::new("spender", "", NamedCLType::Key),
Argument::new("amount", "", NamedCLType::U256),
],
return_ty: NamedCLType::Unit.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("allowance"),
description: Some(String::from(
"Check the amount of tokens that an owner allowed to a spender",
)),
is_mutable: false,
arguments: vec![
Argument::new("owner", "", NamedCLType::Key),
Argument::new("spender", "", NamedCLType::Key),
],
return_ty: NamedCLType::U256.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("balance_of"),
description: Some(String::from(
"Check the amount of tokens owned by an account",
)),
is_mutable: false,
arguments: vec![Argument::new("owner", "", NamedCLType::Key)],
return_ty: NamedCLType::U256.into(),
is_contract_context: true,
access: Access::Public,
},
Entrypoint {
name: String::from("total_supply"),
description: Some(String::from("Check the total supply of tokens")),
is_mutable: false,
arguments: vec![],
return_ty: NamedCLType::U256.into(),
is_contract_context: true,
access: Access::Public,
},
],
events: vec![
Event::new("event_Transfer", "Transfer"),
Event::new("event_Approval", "Approval"),
],
call: Some(CallMethod::new(
"erc20.wasm",
"Fungible token",
vec![
Argument::new("name", "Name of the token", NamedCLType::String),
Argument::new("symbol", "Symbol of the token", NamedCLType::String),
Argument::new("decimals", "Number of decimals", NamedCLType::U8),
Argument::new(
"initial_supply",
"Initial supply of tokens",
NamedCLType::U256,
),
],
)),
}
}
Trait Implementations§
source§impl<'de> Deserialize<'de> for Event
impl<'de> Deserialize<'de> for Event
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl JsonSchema for Event
impl JsonSchema for Event
source§fn schema_name() -> String
fn schema_name() -> String
The name of the generated JSON Schema. Read more
source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
Whether JSON Schemas generated for this type should be re-used where possible using the
$ref
keyword. Read moresource§impl Ord for Event
impl Ord for Event
source§impl PartialEq for Event
impl PartialEq for Event
source§impl PartialOrd for Event
impl PartialOrd for Event
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moreimpl Eq for Event
impl StructuralPartialEq for Event
Auto Trait Implementations§
impl Freeze for Event
impl RefUnwindSafe for Event
impl Send for Event
impl Sync for Event
impl Unpin for Event
impl UnwindSafe for Event
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.