@dashevo/wasm-dpp 1.8.0 → 2.0.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/.eslintrc +3 -0
  2. package/Cargo.toml +3 -2
  3. package/dist/wasm/wasm_dpp.d.ts +1824 -1070
  4. package/dist/wasm/wasm_dpp.js +597 -168
  5. package/dist/wasm/wasm_dpp_bg.js +1 -1
  6. package/lib/test/fixtures/getIdentityCreditTransferTransitionFixture.js +1 -1
  7. package/lib/test/fixtures/getIdentityFixture.js +1 -1
  8. package/lib/wasm/wasm_dpp.d.ts +1824 -1070
  9. package/package.json +6 -6
  10. package/scripts/build-wasm.sh +1 -1
  11. package/src/data_contract/data_contract.rs +17 -22
  12. package/src/data_contract/mod.rs +1 -0
  13. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +21 -0
  14. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +25 -0
  15. package/src/data_contract/tokens.rs +60 -0
  16. package/src/document/document_facade.rs +3 -3
  17. package/src/document/errors/document_already_exists_error.rs +1 -1
  18. package/src/document/errors/document_not_provided_error.rs +1 -1
  19. package/src/document/errors/invalid_document_action_error.rs +2 -2
  20. package/src/document/extended_document.rs +3 -5
  21. package/src/document/factory.rs +14 -8
  22. package/src/document/mod.rs +3 -5
  23. package/src/document/state_transition/batch_transition/batched_transition/mod.rs +18 -0
  24. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/document_create_transition.rs +45 -3
  25. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/document_delete_transition.rs +23 -4
  26. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/document_replace_transition.rs +24 -5
  27. package/src/document/state_transition/{document_batch_transition → batch_transition}/document_transition/mod.rs +99 -14
  28. package/src/document/state_transition/{document_batch_transition → batch_transition}/mod.rs +45 -29
  29. package/src/document/state_transition/batch_transition/token_transition/burn.rs +12 -0
  30. package/src/document/state_transition/batch_transition/token_transition/claim.rs +12 -0
  31. package/src/document/state_transition/batch_transition/token_transition/config.rs +12 -0
  32. package/src/document/state_transition/batch_transition/token_transition/destroy.rs +22 -0
  33. package/src/document/state_transition/batch_transition/token_transition/emergency_action.rs +12 -0
  34. package/src/document/state_transition/batch_transition/token_transition/freeze.rs +22 -0
  35. package/src/document/state_transition/batch_transition/token_transition/mint.rs +31 -0
  36. package/src/document/state_transition/batch_transition/token_transition/mod.rs +147 -0
  37. package/src/document/state_transition/batch_transition/token_transition/transfer.rs +22 -0
  38. package/src/document/state_transition/batch_transition/token_transition/unfreeze.rs +22 -0
  39. package/src/document/state_transition/mod.rs +1 -1
  40. package/src/errors/consensus/basic/identity/identity_insufficient_balance_error.rs +2 -2
  41. package/src/errors/consensus/consensus_error.rs +167 -1
  42. package/src/errors/consensus/fee/balance_is_not_enough_error.rs +4 -4
  43. package/src/identity/identity.rs +14 -14
  44. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +10 -0
  45. package/src/identity/state_transition/identity_credit_transfer_transition/transition.rs +31 -6
  46. package/src/identity/state_transition/identity_credit_withdrawal_transition/transition.rs +15 -0
  47. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +10 -0
  48. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +29 -4
  49. package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
  50. package/src/identity/state_transition/transition_types.rs +1 -1
  51. package/src/metadata.rs +16 -27
  52. package/src/state_transition/state_transition_factory.rs +2 -4
  53. package/src/voting/state_transition/masternode_vote_transition/mod.rs +75 -50
  54. package/test/integration/document/Document.spec.js +2 -7
  55. package/test/integration/document/DocumentFacade.spec.js +4 -4
  56. package/test/integration/identity/IdentityFacade.spec.js +5 -10
  57. package/test/integration/identity/stateTransition/IdentityUpdateTransition/validation/state/validateIdentityUpdateTransitionStateFactory.spec.js +4 -4
  58. package/test/integration/identity/stateTransition/assetLockProof/chain/validateChainAssetLockProofStructureFactory.spec.js +3 -3
  59. package/test/integration/identity/stateTransition/assetLockProof/fetchAssetLockTransactionOutputFactory.spec.js +1 -1
  60. package/test/integration/stateTransition/StateTransitionFacade.spec.js +3 -3
  61. package/test/unit/Metadata.spec.js +8 -23
  62. package/test/unit/dataContract/DataContract.spec.js +1 -18
  63. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +1 -1
  64. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +1 -1
  65. package/test/unit/document/Document.spec.js +4 -7
  66. package/test/unit/document/DocumentFactory.spec.js +2 -2
  67. package/test/unit/identity/Identity.spec.js +15 -35
  68. package/test/unit/identity/IdentityFactory.spec.js +3 -3
  69. package/test/unit/identity/stateTransition/IdentityUpdateTransition/IdentityUpdateTransition.spec.js +2 -2
  70. package/test/unit/identity/stateTransition/identityCreditTransferTransition/identityCreditTransferTransition.spec.js +1 -1
  71. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/find_duplicates_by_id.rs +0 -0
  72. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/find_duplicates_by_indices.rs +0 -0
  73. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/mod.rs +0 -0
  74. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/validate_documents_batch_transition_basic.rs +0 -0
  75. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/basic/validate_partial_compound_indices.rs +0 -0
  76. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/mod.rs +0 -0
  77. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/fetch_extended_documents.rs +0 -0
  78. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/mod.rs +0 -0
  79. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/validate_documents_batch_transitions_state.rs +0 -0
  80. /package/src/document/state_transition/{document_batch_transition → batch_transition}/validation/state/validate_documents_uniqueness_by_indices.rs +0 -0
@@ -7,17 +7,23 @@ mod document_create_transition;
7
7
  // pub use document_replace_transition::*;
8
8
 
9
9
  use dpp::platform_value::Value;
10
- use dpp::state_transition::documents_batch_transition::document_create_transition::v0::v0_methods::DocumentCreateTransitionV0Methods;
11
- use dpp::state_transition::documents_batch_transition::document_transition::action_type::TransitionActionTypeGetter;
12
- use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransitionV0Methods;
13
- use dpp::{
14
- state_transition::documents_batch_transition::document_transition::DocumentTransition,
15
- util::json_value::JsonValueExt, ProtocolError,
10
+ use dpp::state_transition::batch_transition::batched_transition::document_transition::{
11
+ DocumentTransition, DocumentTransitionV0Methods,
16
12
  };
13
+ use dpp::state_transition::batch_transition::batched_transition::document_transition_action_type::DocumentTransitionActionTypeGetter;
14
+ use dpp::state_transition::batch_transition::document_create_transition::v0::v0_methods::DocumentCreateTransitionV0Methods;
15
+ use dpp::{util::json_value::JsonValueExt, ProtocolError};
17
16
  use serde::Serialize;
18
17
  use serde_json::Value as JsonValue;
19
18
  use wasm_bindgen::prelude::*;
20
-
19
+ use dpp::fee::Credits;
20
+ use dpp::platform_value::converter::serde_json::BTreeValueJsonConverter;
21
+ use dpp::prelude::Revision;
22
+ use dpp::state_transition::batch_transition::document_base_transition::DocumentBaseTransition;
23
+ use dpp::state_transition::batch_transition::document_replace_transition::v0::v0_methods::DocumentReplaceTransitionV0Methods;
24
+ use dpp::state_transition::batch_transition::batched_transition::document_purchase_transition::v0::v0_methods::DocumentPurchaseTransitionV0Methods;
25
+ use dpp::state_transition::batch_transition::batched_transition::document_transfer_transition::v0::v0_methods::DocumentTransferTransitionV0Methods;
26
+ use dpp::state_transition::batch_transition::batched_transition::document_update_price_transition::v0::v0_methods::DocumentUpdatePriceTransitionV0Methods;
21
27
  use crate::{
22
28
  buffer::Buffer,
23
29
  identifier::{identifier_from_js_value, IdentifierWrapper},
@@ -42,6 +48,28 @@ impl DocumentTransitionWasm {
42
48
  self.0.document_type_name().to_owned()
43
49
  }
44
50
 
51
+ #[wasm_bindgen(js_name=getData)]
52
+ pub fn get_data(&self) -> JsValue {
53
+ match &self.0 {
54
+ DocumentTransition::Create(document_create_transition) => {
55
+ let json_value = document_create_transition.data().to_json_value().unwrap();
56
+ json_value
57
+ .serialize(&serde_wasm_bindgen::Serializer::json_compatible())
58
+ .unwrap()
59
+ }
60
+ DocumentTransition::Replace(document_replace_transition) => {
61
+ let json_value = document_replace_transition.data().to_json_value().unwrap();
62
+ json_value
63
+ .serialize(&serde_wasm_bindgen::Serializer::json_compatible())
64
+ .unwrap()
65
+ }
66
+ DocumentTransition::Delete(_) => JsValue::null(),
67
+ DocumentTransition::Transfer(_) => JsValue::null(),
68
+ DocumentTransition::UpdatePrice(_) => JsValue::null(),
69
+ DocumentTransition::Purchase(_) => JsValue::null(),
70
+ }
71
+ }
72
+
45
73
  #[wasm_bindgen(js_name=getAction)]
46
74
  pub fn get_action(&self) -> u8 {
47
75
  self.0.action_type() as u8
@@ -59,18 +87,49 @@ impl DocumentTransitionWasm {
59
87
  Ok(())
60
88
  }
61
89
 
90
+ #[wasm_bindgen(js_name=getIdentityContractNonce)]
91
+ pub fn get_identity_contract_nonce(&self) -> JsValue {
92
+ match self.0.base() {
93
+ DocumentBaseTransition::V0(v0) => JsValue::from(v0.identity_contract_nonce),
94
+ }
95
+ }
96
+
62
97
  #[wasm_bindgen(js_name=getRevision)]
63
- pub fn get_revision(&self) -> JsValue {
64
- if let Some(revision) = self.0.revision() {
65
- (revision as f64).into()
66
- } else {
67
- JsValue::NULL
98
+ pub fn get_revision(&self) -> Option<Revision> {
99
+ self.0.revision()
100
+ }
101
+ #[wasm_bindgen(js_name=getEntropy)]
102
+ pub fn get_entropy(&self) -> Option<Vec<u8>> {
103
+ self.0.entropy()
104
+ }
105
+
106
+ #[wasm_bindgen(js_name=get_price)]
107
+ pub fn get_price(&self) -> Option<Credits> {
108
+ match &self.0 {
109
+ DocumentTransition::Create(_) => None,
110
+ DocumentTransition::Replace(_) => None,
111
+ DocumentTransition::Delete(_) => None,
112
+ DocumentTransition::Transfer(_) => None,
113
+ DocumentTransition::UpdatePrice(update_price) => Some(update_price.price()),
114
+ DocumentTransition::Purchase(purchase) => Some(purchase.price()),
115
+ }
116
+ }
117
+
118
+ #[wasm_bindgen(js_name=getReceiverId)]
119
+ pub fn get_receiver_id(&self) -> Option<IdentifierWrapper> {
120
+ match &self.0 {
121
+ DocumentTransition::Create(_) => None,
122
+ DocumentTransition::Replace(_) => None,
123
+ DocumentTransition::Delete(_) => None,
124
+ DocumentTransition::Transfer(transfer) => Some(transfer.recipient_owner_id().into()),
125
+ DocumentTransition::UpdatePrice(_) => None,
126
+ DocumentTransition::Purchase(_) => None,
68
127
  }
69
128
  }
70
129
 
71
130
  #[wasm_bindgen(js_name=setRevision)]
72
- pub fn set_revision(&mut self, revision: u32) {
73
- self.0.set_revision(revision as u64);
131
+ pub fn set_revision(&mut self, revision: u64) {
132
+ self.0.set_revision(revision);
74
133
  }
75
134
 
76
135
  #[wasm_bindgen(js_name=hasPrefundedBalance)]
@@ -82,6 +141,32 @@ impl DocumentTransitionWasm {
82
141
  _ => false,
83
142
  }
84
143
  }
144
+
145
+ #[wasm_bindgen(js_name=getPrefundedVotingBalance)]
146
+ pub fn get_prefunded_voting_balance(&self) -> Result<JsValue, JsValue> {
147
+ match &self.0 {
148
+ DocumentTransition::Create(create_transition) => {
149
+ let prefunded_voting_balance = create_transition.prefunded_voting_balance().clone();
150
+
151
+ if prefunded_voting_balance.is_none() {
152
+ return Ok(JsValue::null());
153
+ }
154
+
155
+ let (index_name, credits) = prefunded_voting_balance.unwrap();
156
+
157
+ let js_object = js_sys::Object::new();
158
+
159
+ js_sys::Reflect::set(
160
+ &js_object,
161
+ &JsValue::from_str(&index_name),
162
+ &JsValue::from(credits),
163
+ )?;
164
+
165
+ Ok(JsValue::from(js_object))
166
+ }
167
+ _ => Ok(JsValue::null()),
168
+ }
169
+ }
85
170
  }
86
171
 
87
172
  impl From<DocumentTransition> for DocumentTransitionWasm {
@@ -12,9 +12,8 @@ use dpp::consensus::signature::SignatureError;
12
12
  use dpp::consensus::ConsensusError;
13
13
  use dpp::platform_value::BinaryData;
14
14
  use dpp::serialization::PlatformSerializable;
15
- use dpp::state_transition::documents_batch_transition::accessors::DocumentsBatchTransitionAccessorsV0;
16
- use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransition;
17
- use dpp::state_transition::documents_batch_transition::DocumentsBatchTransition;
15
+ use dpp::state_transition::batch_transition::accessors::DocumentsBatchTransitionAccessorsV0;
16
+ use dpp::state_transition::batch_transition::BatchTransition;
18
17
  use dpp::state_transition::StateTransition;
19
18
  use wasm_bindgen::prelude::*;
20
19
 
@@ -26,17 +25,23 @@ use crate::{
26
25
  IdentityPublicKeyWasm,
27
26
  };
28
27
 
29
- use document_transition::DocumentTransitionWasm;
30
- use dpp::state_transition::documents_batch_transition::methods::v0::DocumentsBatchTransitionMethodsV0;
28
+ use dpp::ed25519_dalek::ed25519::signature::SignerMut;
29
+ use dpp::state_transition::batch_transition::batched_transition::BatchedTransition;
30
+ use dpp::state_transition::batch_transition::methods::v0::DocumentsBatchTransitionMethodsV0;
31
31
 
32
+ use crate::batch_transition::batched_transition::BatchedTransitionWasm;
33
+ use crate::batch_transition::document_transition::DocumentTransitionWasm;
34
+ use crate::batch_transition::token_transition::TokenTransitionWasm;
32
35
  use dpp::state_transition::StateTransitionIdentitySigned;
33
36
 
37
+ pub mod batched_transition;
34
38
  pub mod document_transition;
39
+ pub mod token_transition;
35
40
  // pub mod validation;
36
41
 
37
42
  #[derive(Clone, Debug)]
38
- #[wasm_bindgen(js_name = DocumentsBatchTransition)]
39
- pub struct DocumentsBatchTransitionWasm(DocumentsBatchTransition);
43
+ #[wasm_bindgen(js_name = BatchTransition)]
44
+ pub struct BatchTransitionWasm(BatchTransition);
40
45
 
41
46
  #[derive(Debug, Serialize, Deserialize, Default, Clone, Copy)]
42
47
  #[serde(rename_all = "camelCase")]
@@ -47,8 +52,8 @@ pub struct ToObjectOptions {
47
52
  skip_identifiers_conversion: bool,
48
53
  }
49
54
 
50
- #[wasm_bindgen(js_class=DocumentsBatchTransition)]
51
- impl DocumentsBatchTransitionWasm {
55
+ #[wasm_bindgen(js_class=BatchTransition)]
56
+ impl BatchTransitionWasm {
52
57
  // #[wasm_bindgen(constructor)]
53
58
  // pub fn from_object(
54
59
  // js_raw_transition: JsValue,
@@ -90,7 +95,7 @@ impl DocumentsBatchTransitionWasm {
90
95
 
91
96
  #[wasm_bindgen(js_name=getType)]
92
97
  pub fn get_type(&self) -> u8 {
93
- StateTransitionType::DocumentsBatch.into()
98
+ StateTransitionType::Batch.into()
94
99
  }
95
100
 
96
101
  #[wasm_bindgen(js_name=getOwnerId)]
@@ -98,14 +103,26 @@ impl DocumentsBatchTransitionWasm {
98
103
  self.0.owner_id().to_owned().into()
99
104
  }
100
105
 
106
+ #[wasm_bindgen(js_name=getUserFeeIncrease)]
107
+ pub fn get_user_fee_increase(&self) -> u16 {
108
+ self.0.user_fee_increase() as u16
109
+ }
110
+
111
+ #[wasm_bindgen(js_name=setUserFeeIncrease)]
112
+ pub fn set_user_fee_increase(&mut self, user_fee_increase: u16) {
113
+ self.0.set_user_fee_increase(user_fee_increase);
114
+ }
115
+
101
116
  #[wasm_bindgen(js_name=getTransitions)]
102
117
  pub fn get_transitions(&self) -> js_sys::Array {
103
118
  let array = js_sys::Array::new();
104
- let transitions = self.0.transitions();
105
119
 
106
- for tr in transitions.iter().cloned() {
107
- let transition: DocumentTransitionWasm = tr.into();
108
- array.push(&transition.into());
120
+ for tr in self.0.transitions_iter() {
121
+ let js_value = match tr.to_owned_transition() {
122
+ BatchedTransition::Token(doc) => TokenTransitionWasm::from(doc).into(),
123
+ BatchedTransition::Document(tok) => DocumentTransitionWasm::from(tok).into(),
124
+ };
125
+ array.push(&js_value);
109
126
  }
110
127
 
111
128
  array
@@ -115,8 +132,8 @@ impl DocumentsBatchTransitionWasm {
115
132
  pub fn set_transitions(&mut self, js_transitions: Array) -> Result<(), JsValue> {
116
133
  let mut transitions = vec![];
117
134
  for js_transition in js_transitions.iter() {
118
- let transition: DocumentTransition = js_transition
119
- .to_wasm::<DocumentTransitionWasm>("DocumentTransition")?
135
+ let transition: BatchedTransition = js_transition
136
+ .to_wasm::<BatchedTransitionWasm>("BatchedTransition")?
120
137
  .to_owned()
121
138
  .into();
122
139
  transitions.push(transition)
@@ -128,8 +145,8 @@ impl DocumentsBatchTransitionWasm {
128
145
  }
129
146
 
130
147
  #[wasm_bindgen(js_name=setIdentityContractNonce)]
131
- pub fn set_identity_contract_nonce(&mut self, nonce: u32) {
132
- self.0.set_identity_contract_nonce(nonce as u64);
148
+ pub fn set_identity_contract_nonce(&mut self, nonce: u64) {
149
+ self.0.set_identity_contract_nonce(nonce);
133
150
  }
134
151
 
135
152
  // #[wasm_bindgen(js_name=toJSON)]
@@ -276,7 +293,7 @@ impl DocumentsBatchTransitionWasm {
276
293
  let bls_adapter = BlsAdapter(bls);
277
294
 
278
295
  // TODO: come up with a better way to set signature to the binding.
279
- let mut state_transition = StateTransition::DocumentsBatch(self.0.clone());
296
+ let mut state_transition = StateTransition::Batch(self.0.clone());
280
297
  state_transition
281
298
  .sign(
282
299
  &identity_public_key.to_owned().into(),
@@ -322,7 +339,7 @@ impl DocumentsBatchTransitionWasm {
322
339
  ) -> Result<bool, JsValue> {
323
340
  let bls_adapter = BlsAdapter(bls);
324
341
 
325
- let verification_result = StateTransition::DocumentsBatch(self.0.clone())
342
+ let verification_result = StateTransition::Batch(self.0.clone())
326
343
  .verify_signature(&identity_public_key.to_owned().into(), &bls_adapter);
327
344
 
328
345
  match verification_result {
@@ -402,10 +419,9 @@ impl DocumentsBatchTransitionWasm {
402
419
 
403
420
  #[wasm_bindgen(js_name=toBuffer)]
404
421
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
405
- let bytes = PlatformSerializable::serialize_to_bytes(&StateTransition::DocumentsBatch(
406
- self.0.clone(),
407
- ))
408
- .with_js_error()?;
422
+ let bytes =
423
+ PlatformSerializable::serialize_to_bytes(&StateTransition::Batch(self.0.clone()))
424
+ .with_js_error()?;
409
425
  Ok(Buffer::from_bytes(&bytes))
410
426
  }
411
427
 
@@ -423,14 +439,14 @@ impl DocumentsBatchTransitionWasm {
423
439
  // }
424
440
  }
425
441
 
426
- impl From<DocumentsBatchTransition> for DocumentsBatchTransitionWasm {
427
- fn from(t: DocumentsBatchTransition) -> Self {
428
- DocumentsBatchTransitionWasm(t)
442
+ impl From<BatchTransition> for BatchTransitionWasm {
443
+ fn from(t: BatchTransition) -> Self {
444
+ BatchTransitionWasm(t)
429
445
  }
430
446
  }
431
447
 
432
- impl From<DocumentsBatchTransitionWasm> for DocumentsBatchTransition {
433
- fn from(t: DocumentsBatchTransitionWasm) -> Self {
448
+ impl From<BatchTransitionWasm> for BatchTransition {
449
+ fn from(t: BatchTransitionWasm) -> Self {
434
450
  t.0
435
451
  }
436
452
  }
@@ -0,0 +1,12 @@
1
+ use dpp::state_transition::batch_transition::TokenBurnTransition;
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+
4
+ #[wasm_bindgen(js_name=TokenBurnTransition)]
5
+ #[derive(Debug, Clone)]
6
+ pub struct TokenBurnTransitionWasm(TokenBurnTransition);
7
+
8
+ impl From<TokenBurnTransition> for TokenBurnTransitionWasm {
9
+ fn from(value: TokenBurnTransition) -> Self {
10
+ Self(value)
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ use dpp::state_transition::batch_transition::TokenClaimTransition;
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+
4
+ #[wasm_bindgen(js_name=TokenClaimTransition)]
5
+ #[derive(Debug, Clone)]
6
+ pub struct TokenClaimTransitionWasm(TokenClaimTransition);
7
+
8
+ impl From<TokenClaimTransition> for TokenClaimTransitionWasm {
9
+ fn from(value: TokenClaimTransition) -> Self {
10
+ Self(value)
11
+ }
12
+ }
@@ -0,0 +1,12 @@
1
+ use dpp::state_transition::batch_transition::TokenConfigUpdateTransition;
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+
4
+ #[wasm_bindgen(js_name=TokenConfigUpdateTransition)]
5
+ #[derive(Debug, Clone)]
6
+ pub struct TokenConfigUpdateTransitionWasm(TokenConfigUpdateTransition);
7
+
8
+ impl From<TokenConfigUpdateTransition> for TokenConfigUpdateTransitionWasm {
9
+ fn from(value: TokenConfigUpdateTransition) -> Self {
10
+ Self(value)
11
+ }
12
+ }
@@ -0,0 +1,22 @@
1
+ use crate::identifier::IdentifierWrapper;
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+ use dpp::state_transition::batch_transition::token_destroy_frozen_funds_transition::v0::v0_methods::TokenDestroyFrozenFundsTransitionV0Methods;
4
+ use dpp::state_transition::batch_transition::TokenDestroyFrozenFundsTransition;
5
+
6
+ #[wasm_bindgen(js_name=TokenDestroyFrozenFundsTransition)]
7
+ #[derive(Debug, Clone)]
8
+ pub struct TokenDestroyFrozenFundsTransitionWasm(TokenDestroyFrozenFundsTransition);
9
+
10
+ impl From<TokenDestroyFrozenFundsTransition> for TokenDestroyFrozenFundsTransitionWasm {
11
+ fn from(value: TokenDestroyFrozenFundsTransition) -> Self {
12
+ Self(value)
13
+ }
14
+ }
15
+
16
+ #[wasm_bindgen(js_class = TokenDestroyFrozenFundsTransition)]
17
+ impl TokenDestroyFrozenFundsTransitionWasm {
18
+ #[wasm_bindgen(js_name=getFrozenIdentityId)]
19
+ pub fn frozen_identity_id(&self) -> IdentifierWrapper {
20
+ self.0.frozen_identity_id().into()
21
+ }
22
+ }
@@ -0,0 +1,12 @@
1
+ use dpp::state_transition::batch_transition::TokenEmergencyActionTransition;
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+
4
+ #[wasm_bindgen(js_name=TokenEmergencyActionTransition)]
5
+ #[derive(Debug, Clone)]
6
+ pub struct TokenEmergencyActionTransitionWasm(TokenEmergencyActionTransition);
7
+
8
+ impl From<TokenEmergencyActionTransition> for TokenEmergencyActionTransitionWasm {
9
+ fn from(value: TokenEmergencyActionTransition) -> Self {
10
+ Self(value)
11
+ }
12
+ }
@@ -0,0 +1,22 @@
1
+ use crate::identifier::IdentifierWrapper;
2
+ use dpp::state_transition::batch_transition::token_freeze_transition::v0::v0_methods::TokenFreezeTransitionV0Methods;
3
+ use dpp::state_transition::batch_transition::TokenFreezeTransition;
4
+ use wasm_bindgen::prelude::wasm_bindgen;
5
+
6
+ #[wasm_bindgen(js_name=TokenFreezeTransition)]
7
+ #[derive(Debug, Clone)]
8
+ pub struct TokenFreezeTransitionWasm(TokenFreezeTransition);
9
+
10
+ impl From<TokenFreezeTransition> for TokenFreezeTransitionWasm {
11
+ fn from(value: TokenFreezeTransition) -> Self {
12
+ Self(value)
13
+ }
14
+ }
15
+
16
+ #[wasm_bindgen(js_class = TokenFreezeTransition)]
17
+ impl TokenFreezeTransitionWasm {
18
+ #[wasm_bindgen(js_name=getFrozenIdentityId)]
19
+ pub fn frozen_identity_id(&self) -> IdentifierWrapper {
20
+ self.0.frozen_identity_id().into()
21
+ }
22
+ }
@@ -0,0 +1,31 @@
1
+ use crate::identifier::IdentifierWrapper;
2
+ use crate::tokens::TokenConfigurationWasm;
3
+ use crate::utils::WithJsError;
4
+ use dpp::state_transition::batch_transition::token_mint_transition::v0::v0_methods::TokenMintTransitionV0Methods;
5
+ use dpp::state_transition::batch_transition::TokenMintTransition;
6
+ use wasm_bindgen::prelude::wasm_bindgen;
7
+ use wasm_bindgen::JsValue;
8
+
9
+ #[wasm_bindgen(js_name=TokenMintTransition)]
10
+ #[derive(Debug, Clone)]
11
+ pub struct TokenMintTransitionWasm(TokenMintTransition);
12
+
13
+ impl From<TokenMintTransition> for TokenMintTransitionWasm {
14
+ fn from(value: TokenMintTransition) -> Self {
15
+ Self(value)
16
+ }
17
+ }
18
+
19
+ #[wasm_bindgen(js_class=TokenMintTransition)]
20
+ impl TokenMintTransitionWasm {
21
+ #[wasm_bindgen(js_name=getRecipientId)]
22
+ pub fn recipient_id(
23
+ &self,
24
+ token_configuration: TokenConfigurationWasm,
25
+ ) -> Result<IdentifierWrapper, JsValue> {
26
+ self.0
27
+ .recipient_id(&token_configuration.into())
28
+ .with_js_error()
29
+ .map(Into::into)
30
+ }
31
+ }
@@ -0,0 +1,147 @@
1
+ pub mod burn;
2
+ mod claim;
3
+ pub mod config;
4
+ pub mod destroy;
5
+ pub mod emergency_action;
6
+ pub mod freeze;
7
+ pub mod mint;
8
+ pub mod transfer;
9
+ pub mod unfreeze;
10
+
11
+ use crate::batch_transition::token_transition::burn::TokenBurnTransitionWasm;
12
+ use crate::batch_transition::token_transition::claim::TokenClaimTransitionWasm;
13
+ use crate::batch_transition::token_transition::config::TokenConfigUpdateTransitionWasm;
14
+ use crate::batch_transition::token_transition::destroy::TokenDestroyFrozenFundsTransitionWasm;
15
+ use crate::batch_transition::token_transition::emergency_action::TokenEmergencyActionTransitionWasm;
16
+ use crate::batch_transition::token_transition::freeze::TokenFreezeTransitionWasm;
17
+ use crate::batch_transition::token_transition::mint::TokenMintTransitionWasm;
18
+ use crate::batch_transition::token_transition::transfer::TokenTransferTransitionWasm;
19
+ use crate::batch_transition::token_transition::unfreeze::TokenUnfreezeTransitionWasm;
20
+ use crate::identifier::IdentifierWrapper;
21
+ use dpp::prelude::IdentityNonce;
22
+ use dpp::state_transition::batch_transition::batched_transition::token_transition::{
23
+ TokenTransition, TokenTransitionV0Methods,
24
+ };
25
+ use dpp::state_transition::batch_transition::token_base_transition::v0::v0_methods::TokenBaseTransitionV0Methods;
26
+ use dpp::state_transition::batch_transition::token_base_transition::v0::TokenBaseTransitionV0;
27
+ use dpp::state_transition::batch_transition::token_mint_transition::TokenMintTransitionV0;
28
+ use dpp::state_transition::batch_transition::TokenMintTransition;
29
+ use js_sys::Number;
30
+ use wasm_bindgen::prelude::wasm_bindgen;
31
+ use wasm_bindgen::JsValue;
32
+
33
+ #[wasm_bindgen]
34
+ pub enum TokenTransitionType {
35
+ Burn,
36
+ Mint,
37
+ Transfer,
38
+ Freeze,
39
+ Unfreeze,
40
+ DestroyFrozenFunds,
41
+ Claim,
42
+ EmergencyAction,
43
+ ConfigUpdate,
44
+ }
45
+
46
+ impl From<&TokenTransition> for TokenTransitionType {
47
+ fn from(t: &TokenTransition) -> Self {
48
+ match t {
49
+ TokenTransition::Burn(_) => TokenTransitionType::Burn,
50
+ TokenTransition::Mint(_) => TokenTransitionType::Mint,
51
+ TokenTransition::Transfer(_) => TokenTransitionType::Transfer,
52
+ TokenTransition::Freeze(_) => TokenTransitionType::Freeze,
53
+ TokenTransition::Unfreeze(_) => TokenTransitionType::Unfreeze,
54
+ TokenTransition::DestroyFrozenFunds(_) => TokenTransitionType::DestroyFrozenFunds,
55
+ TokenTransition::EmergencyAction(_) => TokenTransitionType::EmergencyAction,
56
+ TokenTransition::ConfigUpdate(_) => TokenTransitionType::ConfigUpdate,
57
+ TokenTransition::Claim(_) => TokenTransitionType::Claim,
58
+ }
59
+ }
60
+ }
61
+
62
+ #[wasm_bindgen(js_name=TokenTransition)]
63
+ #[derive(Debug, Clone)]
64
+ pub struct TokenTransitionWasm(TokenTransition);
65
+
66
+ impl From<TokenTransition> for TokenTransitionWasm {
67
+ fn from(t: TokenTransition) -> Self {
68
+ TokenTransitionWasm(t)
69
+ }
70
+ }
71
+
72
+ impl From<TokenTransitionWasm> for TokenTransition {
73
+ fn from(t: TokenTransitionWasm) -> Self {
74
+ t.0
75
+ }
76
+ }
77
+
78
+ #[wasm_bindgen(js_class = TokenTransition)]
79
+ impl TokenTransitionWasm {
80
+ #[wasm_bindgen(js_name=getTransitionType)]
81
+ pub fn transition_type(&self) -> TokenTransitionType {
82
+ TokenTransitionType::from(&self.0)
83
+ }
84
+
85
+ #[wasm_bindgen(js_name=getTokenId)]
86
+ pub fn token_id(&self) -> IdentifierWrapper {
87
+ self.0.base().token_id().into()
88
+ }
89
+
90
+ #[wasm_bindgen(js_name=getTokenContractPosition)]
91
+ pub fn token_contract_position(&self) -> Number {
92
+ self.0.base().token_contract_position().into()
93
+ }
94
+
95
+ #[wasm_bindgen(js_name=getDataContractId)]
96
+ pub fn data_contract_id(&self) -> IdentifierWrapper {
97
+ self.0.base().data_contract_id().into()
98
+ }
99
+
100
+ #[wasm_bindgen(js_name=getHistoricalDocumentTypeName)]
101
+ pub fn historical_document_type_name(&self) -> String {
102
+ self.0.historical_document_type_name().to_string()
103
+ }
104
+
105
+ #[wasm_bindgen(js_name=getHistoricalDocumentId)]
106
+ pub fn historical_document_id(
107
+ &self,
108
+ owner_id: IdentifierWrapper,
109
+ owner_nonce: IdentityNonce,
110
+ ) -> IdentifierWrapper {
111
+ self.0
112
+ .historical_document_id(owner_id.into(), owner_nonce)
113
+ .into()
114
+ }
115
+
116
+ #[wasm_bindgen(js_name=getIdentityContractNonce)]
117
+ pub fn identity_contract_nonce(&self) -> IdentityNonce {
118
+ self.0.base().identity_contract_nonce()
119
+ }
120
+
121
+ #[wasm_bindgen(js_name=toTransition)]
122
+ pub fn to_transition(&self) -> JsValue {
123
+ match &self.0 {
124
+ TokenTransition::Burn(burn) => TokenBurnTransitionWasm::from(burn.clone()).into(),
125
+ TokenTransition::Mint(mint) => TokenMintTransitionWasm::from(mint.clone()).into(),
126
+ TokenTransition::Transfer(transfer) => {
127
+ TokenTransferTransitionWasm::from(transfer.clone()).into()
128
+ }
129
+ TokenTransition::Freeze(freeze) => {
130
+ TokenFreezeTransitionWasm::from(freeze.clone()).into()
131
+ }
132
+ TokenTransition::Unfreeze(unfreeze) => {
133
+ TokenUnfreezeTransitionWasm::from(unfreeze.clone()).into()
134
+ }
135
+ TokenTransition::DestroyFrozenFunds(destroy_frozen_funds) => {
136
+ TokenDestroyFrozenFundsTransitionWasm::from(destroy_frozen_funds.clone()).into()
137
+ }
138
+ TokenTransition::EmergencyAction(emergency_action) => {
139
+ TokenEmergencyActionTransitionWasm::from(emergency_action.clone()).into()
140
+ }
141
+ TokenTransition::ConfigUpdate(config_update) => {
142
+ TokenConfigUpdateTransitionWasm::from(config_update.clone()).into()
143
+ }
144
+ TokenTransition::Claim(claim) => TokenClaimTransitionWasm::from(claim.clone()).into(),
145
+ }
146
+ }
147
+ }
@@ -0,0 +1,22 @@
1
+ use crate::identifier::IdentifierWrapper;
2
+ use dpp::state_transition::batch_transition::token_transfer_transition::v0::v0_methods::TokenTransferTransitionV0Methods;
3
+ use dpp::state_transition::batch_transition::TokenTransferTransition;
4
+ use wasm_bindgen::prelude::wasm_bindgen;
5
+
6
+ #[wasm_bindgen(js_name=TokenTransferTransition)]
7
+ #[derive(Debug, Clone)]
8
+ pub struct TokenTransferTransitionWasm(TokenTransferTransition);
9
+
10
+ impl From<TokenTransferTransition> for TokenTransferTransitionWasm {
11
+ fn from(value: TokenTransferTransition) -> Self {
12
+ Self(value)
13
+ }
14
+ }
15
+
16
+ #[wasm_bindgen(js_class = TokenTransferTransition)]
17
+ impl TokenTransferTransitionWasm {
18
+ #[wasm_bindgen(js_name=getRecipientId)]
19
+ pub fn recipient_id(&self) -> IdentifierWrapper {
20
+ self.0.recipient_id().into()
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ use crate::identifier::IdentifierWrapper;
2
+ use dpp::state_transition::batch_transition::token_unfreeze_transition::v0::v0_methods::TokenUnfreezeTransitionV0Methods;
3
+ use dpp::state_transition::batch_transition::TokenUnfreezeTransition;
4
+ use wasm_bindgen::prelude::wasm_bindgen;
5
+
6
+ #[wasm_bindgen(js_name=TokenUnfreezeTransition)]
7
+ #[derive(Debug, Clone)]
8
+ pub struct TokenUnfreezeTransitionWasm(TokenUnfreezeTransition);
9
+
10
+ impl From<TokenUnfreezeTransition> for TokenUnfreezeTransitionWasm {
11
+ fn from(value: TokenUnfreezeTransition) -> Self {
12
+ Self(value)
13
+ }
14
+ }
15
+
16
+ #[wasm_bindgen(js_class = TokenUnfreezeTransition)]
17
+ impl TokenUnfreezeTransitionWasm {
18
+ #[wasm_bindgen(js_name=getFrozenIdentityId)]
19
+ pub fn frozen_identity_id(&self) -> IdentifierWrapper {
20
+ self.0.frozen_identity_id().into()
21
+ }
22
+ }
@@ -1 +1 @@
1
- pub mod document_batch_transition;
1
+ pub mod batch_transition;
@@ -23,8 +23,8 @@ impl IdentityInsufficientBalanceErrorWasm {
23
23
  }
24
24
 
25
25
  #[wasm_bindgen(js_name=getBalance)]
26
- pub fn balance(&self) -> u32 {
27
- self.inner.balance() as u32
26
+ pub fn balance(&self) -> u64 {
27
+ self.inner.balance()
28
28
  }
29
29
 
30
30
  #[wasm_bindgen(js_name=getCode)]