Skip to content

Commit

Permalink
near macro
Browse files Browse the repository at this point in the history
  • Loading branch information
PolyProgrammist committed Feb 26, 2024
1 parent 9bb16c2 commit df8f9e5
Show file tree
Hide file tree
Showing 8 changed files with 378 additions and 59 deletions.
25 changes: 11 additions & 14 deletions examples/mission-control/src/account.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
use crate::asset::*;
use crate::rate::*;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::ops;

use near_sdk::NearSchema;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};

use crate::asset::*;
use crate::rate::*;
use near_sdk::near;

#[derive(
PartialEq,
Expand All @@ -15,20 +15,17 @@ use crate::rate::*;
Hash,
Clone,
Copy,
Serialize,
Deserialize,
Debug,
BorshDeserialize,
BorshSerialize,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers = [json, borsh])]
pub struct Quantity(pub i32);

#[derive(Clone, Serialize, Deserialize, BorshDeserialize, BorshSerialize, NearSchema)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near]
pub struct X;

#[derive(Clone, NearSchema)]
#[near(serializers = [json, borsh])]
pub struct Account(pub HashMap<Asset, Quantity>);

pub enum Tranx {
Expand Down
6 changes: 3 additions & 3 deletions examples/mission-control/src/agent.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ use crate::rate::*;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use std::collections::HashMap;
use near_sdk::near;

#[derive(Clone, Serialize, Deserialize, BorshDeserialize, BorshSerialize)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[derive(Clone)]
#[near(serializers=[json, borsh])]
pub struct Agent {
pub account: Account,
pub is_alive: bool,
Expand Down
31 changes: 5 additions & 26 deletions examples/mission-control/src/asset.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use near_sdk::NearSchema;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use near_sdk::near;

#[derive(
PartialEq,
Expand All @@ -10,14 +9,9 @@ use near_sdk::serde::{Deserialize, Serialize};
Hash,
Clone,
Copy,
Serialize,
Deserialize,
BorshDeserialize,
BorshSerialize,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers = [json, borsh])]
pub enum Resource {
Battery,
RgbSensor,
Expand All @@ -33,14 +27,9 @@ pub enum Resource {
Hash,
Clone,
Copy,
Serialize,
Deserialize,
BorshDeserialize,
BorshSerialize,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers = [json, borsh])]
pub enum Reward {
Score,
Token,
Expand All @@ -57,14 +46,9 @@ pub enum Reward {
Hash,
Clone,
Copy,
Serialize,
Deserialize,
BorshDeserialize,
BorshSerialize,
NearSchema,
)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers = [json, borsh])]
pub enum Asset {
Resource(Resource),
Reward(Reward),
Expand All @@ -76,16 +60,11 @@ pub enum Asset {
PartialEq,
Eq,
Hash,
Serialize,
Deserialize,
PartialOrd,
Ord,
BorshDeserialize,
BorshSerialize,
NearSchema
)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[near(serializers = [json, borsh])]
pub enum Exchange {
MissionTimeWithResource,
MissionTimeWithTrust,
Expand Down
13 changes: 8 additions & 5 deletions examples/mission-control/src/mission_control.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,21 @@ use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use near_sdk::{env, near_bindgen};
use std::collections::HashMap;
use near_sdk::near;

#[near_bindgen]
#[derive(Serialize, Deserialize, BorshDeserialize, BorshSerialize)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
// #[near_bindgen]
// #[derive(Serialize, Deserialize, BorshDeserialize, BorshSerialize)]
// #[serde(crate = "near_sdk::serde")]
// #[borsh(crate = "near_sdk::borsh")]
#[near(serializers=[json, borsh, bindgen])]
pub struct MissionControl {
account: Account,
agents: HashMap<AccountId, Agent>,
rates: HashMap<Exchange, Rate>,
}

#[near_bindgen]
// #[near]
#[near(serializers=[json, borsh, bindgen])]
impl MissionControl {
pub fn add_agent(&mut self) {
let account_id = env::signer_account_id();
Expand Down
8 changes: 3 additions & 5 deletions examples/mission-control/src/rate.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
use crate::account::*;
use crate::asset::*;
use near_sdk::borsh::{BorshDeserialize, BorshSerialize};
use near_sdk::serde::{Deserialize, Serialize};
use std::collections::HashMap;
use near_sdk::near;

#[derive(PartialEq, Eq, Serialize, Deserialize, BorshDeserialize, BorshSerialize)]
#[serde(crate = "near_sdk::serde")]
#[borsh(crate = "near_sdk::borsh")]
#[derive(PartialEq, Eq)]
#[near(serializers = [json, borsh])]
pub struct Rate {
pub credit: HashMap<Asset, Quantity>,
pub debit: HashMap<Asset, Quantity>,
Expand Down
119 changes: 119 additions & 0 deletions kek.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub struct
Quantity(pub i32) ;
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")] #[abi(borsh)] pub
struct X ;
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub struct
Account(pub HashMap < Asset, Quantity >) ;
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub struct Agent
{ pub account : Account, pub is_alive : bool, }
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub enum Resource
{ Battery, RgbSensor, ThermalSensor, PoseEstimation, }
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub enum Reward
{ Score, Token, Prediction, Currency, Policy, }
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub enum Asset
{ Resource(Resource), Reward(Reward), MissionTime, Trust, }
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub enum Exchange
{ MissionTimeWithResource, MissionTimeWithTrust, }
mynear
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub struct
MissionControl
{
account : Account, agents : HashMap < AccountId, Agent >, rates : HashMap
< Exchange, Rate >,
}
mynear
impl MissionControlExt
{
pub fn add_agent(self,) -> :: near_sdk :: Promise
{
let __args = :: std :: vec! [] ; :: near_sdk :: Promise ::
new(self.account_id).function_call_weight(:: std :: string :: String
:: from("add_agent"), __args, self.deposit, self.static_gas,
self.gas_weight,)
} pub fn assets_quantity(self, account_id : AccountId, asset : Asset,) ->
:: near_sdk :: Promise
{
let __args =
{
#[derive(:: near_sdk :: serde :: Serialize)]
#[serde(crate = "::near_sdk::serde")] struct Input < 'nearinput >
{
account_id : & 'nearinput AccountId, asset : & 'nearinput
Asset,
} let __args = Input
{ account_id : & account_id, asset : & asset, } ; :: near_sdk ::
serde_json ::
to_vec(&
__args).expect("Failed to serialize the cross contract args using JSON.")
} ; :: near_sdk :: Promise ::
new(self.account_id).function_call_weight(:: std :: string :: String
:: from("assets_quantity"), __args, self.deposit, self.static_gas,
self.gas_weight,)
} pub fn simulate(self, account_id : AccountId,) -> :: near_sdk :: Promise
{
let __args =
{
#[derive(:: near_sdk :: serde :: Serialize)]
#[serde(crate = "::near_sdk::serde")] struct Input < 'nearinput >
{ account_id : & 'nearinput AccountId, } let __args = Input
{ account_id : & account_id, } ; :: near_sdk :: serde_json ::
to_vec(&
__args).expect("Failed to serialize the cross contract args using JSON.")
} ; :: near_sdk :: Promise ::
new(self.account_id).function_call_weight(:: std :: string :: String
:: from("simulate"), __args, self.deposit, self.static_gas,
self.gas_weight,)
}
}
process_impl_block
#[derive(near_sdk :: NearSchema)]
#[derive(near_sdk :: borsh :: BorshSerialize, near_sdk :: borsh ::
BorshDeserialize)] #[borsh(crate = "near_sdk::borsh")]
#[derive(near_sdk :: serde :: Serialize, near_sdk :: serde :: Deserialize)]
#[serde(crate = "near_sdk::serde")] #[abi(borsh, json)] pub struct Rate
{
pub credit : HashMap < Asset, Quantity >, pub debit : HashMap < Asset,
Quantity >,
}
mynear
Loading

0 comments on commit df8f9e5

Please sign in to comment.