ext_contract takes a Rust Trait and converts it to a module with static methods.
Each of these static methods takes positional arguments defined by the Trait,
then the receiver_id, the attached deposit and the amount of gas and returns a new Promise.
This attribute macro is used to enhance the unc_bindgen macro.
It is used to add Borsh and Serde derives for serialization and deserialization.
It also adds BorshSchema and JsonSchema if needed
This attribute macro is used on a struct and its implementations
to generate the necessary code to expose pub methods from the contract as well
as generating the glue code to be a valid UNC contract.
BorshStorageKey generates implementation for BorshIntoStorageKey trait.
It allows the type to be passed as a unique prefix for persistent collections.
The type should also implement or derive BorshSerialize trait.
FunctionError generates implementation for unc_sdk::FunctionError trait.
It allows contract runtime to panic with the type using its ToString implementation
as the message.
PanicOnDefault generates implementation for Default trait that panics with the following
message The contract is not initialized when default() is called.
This is a helpful macro in case the contract is required to be initialized with either init or
init(ignore_state).