pshenmic-dpp 1.0.4 → 1.0.5

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 (81) hide show
  1. package/.github/workflows/build.yml +8 -0
  2. package/.github/workflows/publish.yml +8 -0
  3. package/Cargo.lock +79 -31
  4. package/Cargo.toml +20 -17
  5. package/README.md +66 -23
  6. package/babel.config.json +19 -0
  7. package/dist/wasm/pshenmic_dpp.js +2487 -355
  8. package/dist/wasm/pshenmic_dpp_bg.js +1 -1
  9. package/package.json +13 -6
  10. package/packages/cbor_conversation/Cargo.toml +1 -1
  11. package/packages/data_contract/Cargo.toml +2 -2
  12. package/packages/data_contract/src/lib.rs +195 -23
  13. package/packages/data_contract_transitions/Cargo.toml +1 -1
  14. package/packages/data_contract_transitions/src/create/mod.rs +23 -16
  15. package/packages/data_contract_transitions/src/update/mod.rs +21 -12
  16. package/packages/document/Cargo.toml +1 -1
  17. package/packages/document/src/lib.rs +1 -1
  18. package/packages/document/src/methods/mod.rs +370 -2
  19. package/packages/{document_batch → documents_batch}/Cargo.toml +6 -4
  20. package/packages/documents_batch/src/document_base_transition/mod.rs +92 -0
  21. package/packages/documents_batch/src/document_transition/mod.rs +166 -0
  22. package/packages/documents_batch/src/generators.rs +122 -0
  23. package/packages/documents_batch/src/lib.rs +188 -0
  24. package/packages/documents_batch/src/prefunded_voting_balance/mod.rs +45 -0
  25. package/packages/documents_batch/src/transitions/create/mod.rs +123 -0
  26. package/packages/documents_batch/src/transitions/delete/mod.rs +67 -0
  27. package/packages/documents_batch/src/transitions/mod.rs +6 -0
  28. package/packages/documents_batch/src/transitions/purchase/mod.rs +91 -0
  29. package/packages/documents_batch/src/transitions/replace/mod.rs +93 -0
  30. package/packages/documents_batch/src/transitions/transfer/mod.rs +86 -0
  31. package/packages/documents_batch/src/transitions/update_price/mod.rs +75 -0
  32. package/packages/enums/Cargo.toml +3 -3
  33. package/packages/enums/src/batch/batch_enum.rs +75 -10
  34. package/packages/enums/src/keys/key_type.rs +46 -0
  35. package/packages/enums/src/keys/purpose.rs +55 -0
  36. package/packages/enums/src/keys/security_level.rs +46 -0
  37. package/packages/enums/src/lib.rs +1 -0
  38. package/packages/enums/src/network/mod.rs +67 -0
  39. package/packages/enums/src/platform/mod.rs +66 -8
  40. package/packages/identity/Cargo.toml +3 -4
  41. package/packages/identity/src/lib.rs +25 -14
  42. package/packages/{public_key → identity_public_key}/Cargo.toml +1 -1
  43. package/packages/{public_key → identity_public_key}/src/lib.rs +74 -27
  44. package/packages/identity_transitions/Cargo.toml +2 -2
  45. package/packages/identity_transitions/src/create_transition/mod.rs +3 -1
  46. package/packages/identity_transitions/src/create_transition/public_key_in_creation/mod.rs +25 -21
  47. package/packages/mock_bls/Cargo.toml +1 -1
  48. package/packages/private_key/Cargo.toml +3 -2
  49. package/packages/private_key/src/lib.rs +44 -6
  50. package/packages/state_transition/Cargo.toml +5 -4
  51. package/packages/state_transition/src/lib.rs +101 -36
  52. package/packages/utils/Cargo.toml +1 -2
  53. package/packages/utils/src/lib.rs +17 -15
  54. package/scripts/build-js.sh +6 -5
  55. package/scripts/build.sh +22 -1
  56. package/src/lib.rs +7 -1
  57. package/tests/DataContract.spec.js +175 -0
  58. package/tests/DataContractCreateStateTransition.spec.js +109 -0
  59. package/tests/DataContractUpdateStateTransition.spec.js +109 -0
  60. package/tests/Document.spec.js +232 -0
  61. package/tests/DocumentBatchTransition.spec.js +109 -0
  62. package/tests/DocumentTransition.spec.js +97 -0
  63. package/tests/DocumentsTransitions.spec.js +705 -0
  64. package/tests/Identity.spec.js +113 -0
  65. package/tests/IdentityPublicKey.spec.js +132 -0
  66. package/tests/PrivateKey.spec.js +73 -0
  67. package/tests/mocks/DataContract/DataContract.json +153 -0
  68. package/tests/mocks/DataContract/index.js +6 -0
  69. package/tests/mocks/Document/DataContract.json +23 -0
  70. package/tests/mocks/Document/document.json +3 -0
  71. package/tests/mocks/Document/document2.json +3 -0
  72. package/tests/mocks/Document/index.js +11 -0
  73. package/tests/mocks/Identity/index.js +7 -0
  74. package/tests/mocks/PrivateKey/index.js +5 -0
  75. package/tests/mocks/PublicKey/index.js +14 -0
  76. package/tests/utils/hex.js +15 -0
  77. package/tests/utils/wasm.js +14 -0
  78. package/packages/document/src/methods/js.rs +0 -260
  79. package/packages/document/src/methods/rust.rs +0 -92
  80. package/packages/document_batch/src/generators.rs +0 -63
  81. package/packages/document_batch/src/lib.rs +0 -228
@@ -0,0 +1,122 @@
1
+ use dpp::fee::Credits;
2
+ use dpp::prelude::{Identifier, IdentityNonce};
3
+ use dpp::state_transition::documents_batch_transition::document_base_transition::DocumentBaseTransition;
4
+ use dpp::state_transition::documents_batch_transition::document_base_transition::v0::DocumentBaseTransitionV0;
5
+ use dpp::state_transition::documents_batch_transition::document_create_transition::DocumentCreateTransitionV0;
6
+ use dpp::state_transition::documents_batch_transition::document_delete_transition::DocumentDeleteTransitionV0;
7
+ use dpp::state_transition::documents_batch_transition::document_replace_transition::DocumentReplaceTransitionV0;
8
+ use dpp::state_transition::documents_batch_transition::{
9
+ DocumentCreateTransition, DocumentDeleteTransition, DocumentReplaceTransition,
10
+ };
11
+ use dpp::state_transition::documents_batch_transition::document_transition::document_transfer_transition::DocumentTransferTransitionV0;
12
+ use dpp::state_transition::documents_batch_transition::document_transition::{DocumentPurchaseTransition, DocumentTransferTransition, DocumentUpdatePriceTransition};
13
+ use dpp::state_transition::documents_batch_transition::document_transition::document_purchase_transition::DocumentPurchaseTransitionV0;
14
+ use dpp::state_transition::documents_batch_transition::document_transition::document_update_price_transition::DocumentUpdatePriceTransitionV0;
15
+ use pshenmic_dpp_document::DocumentWASM;
16
+
17
+ pub fn generate_create_transition(
18
+ document: DocumentWASM,
19
+ identity_contract_nonce: IdentityNonce,
20
+ document_type_name: String,
21
+ ) -> DocumentCreateTransition {
22
+ DocumentCreateTransition::V0(DocumentCreateTransitionV0 {
23
+ base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
24
+ id: document.rs_get_id(),
25
+ identity_contract_nonce,
26
+ document_type_name,
27
+ data_contract_id: document.rs_get_data_contract_id(),
28
+ }),
29
+ entropy: document.rs_get_entropy().unwrap(),
30
+ data: document.rs_get_properties(),
31
+ prefunded_voting_balance: None,
32
+ })
33
+ }
34
+
35
+ pub fn generate_delete_transition(
36
+ document: DocumentWASM,
37
+ identity_contract_nonce: IdentityNonce,
38
+ document_type_name: String,
39
+ ) -> DocumentDeleteTransition {
40
+ DocumentDeleteTransition::V0(DocumentDeleteTransitionV0 {
41
+ base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
42
+ id: document.rs_get_id(),
43
+ identity_contract_nonce,
44
+ document_type_name,
45
+ data_contract_id: document.rs_get_data_contract_id(),
46
+ }),
47
+ })
48
+ }
49
+
50
+ pub fn generate_replace_transition(
51
+ document: DocumentWASM,
52
+ identity_contract_nonce: IdentityNonce,
53
+ document_type_name: String,
54
+ ) -> DocumentReplaceTransition {
55
+ DocumentReplaceTransition::V0(DocumentReplaceTransitionV0 {
56
+ base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
57
+ id: document.rs_get_id(),
58
+ identity_contract_nonce,
59
+ document_type_name,
60
+ data_contract_id: document.rs_get_data_contract_id(),
61
+ }),
62
+ revision: document.get_revision().unwrap(),
63
+ data: document.rs_get_properties(),
64
+ })
65
+ }
66
+
67
+ pub fn generate_transfer_transition(
68
+ document: DocumentWASM,
69
+ identity_contract_nonce: IdentityNonce,
70
+ document_type_name: String,
71
+
72
+ recipient_owner_id: Identifier,
73
+ ) -> DocumentTransferTransition {
74
+ DocumentTransferTransition::V0(DocumentTransferTransitionV0 {
75
+ base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
76
+ id: document.rs_get_id(),
77
+ identity_contract_nonce,
78
+ document_type_name,
79
+ data_contract_id: document.rs_get_data_contract_id(),
80
+ }),
81
+ revision: document.get_revision().unwrap(),
82
+ recipient_owner_id,
83
+ })
84
+ }
85
+
86
+ pub fn generate_update_price_transition(
87
+ document: DocumentWASM,
88
+ identity_contract_nonce: IdentityNonce,
89
+ document_type_name: String,
90
+
91
+ price: Credits,
92
+ ) -> DocumentUpdatePriceTransition {
93
+ DocumentUpdatePriceTransition::V0(DocumentUpdatePriceTransitionV0 {
94
+ base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
95
+ id: document.rs_get_id(),
96
+ identity_contract_nonce,
97
+ document_type_name,
98
+ data_contract_id: document.rs_get_data_contract_id(),
99
+ }),
100
+ revision: document.get_revision().unwrap(),
101
+ price,
102
+ })
103
+ }
104
+
105
+ pub fn generate_purchase_transition(
106
+ document: DocumentWASM,
107
+ identity_contract_nonce: IdentityNonce,
108
+ document_type_name: String,
109
+
110
+ price: Credits,
111
+ ) -> DocumentPurchaseTransition {
112
+ DocumentPurchaseTransition::V0(DocumentPurchaseTransitionV0 {
113
+ base: DocumentBaseTransition::V0(DocumentBaseTransitionV0 {
114
+ id: document.rs_get_id(),
115
+ identity_contract_nonce,
116
+ document_type_name,
117
+ data_contract_id: document.rs_get_data_contract_id(),
118
+ }),
119
+ revision: document.get_revision().unwrap(),
120
+ price: price,
121
+ })
122
+ }
@@ -0,0 +1,188 @@
1
+ use crate::document_transition::DocumentTransitionWASM;
2
+ use dpp::fee::Credits;
3
+ use dpp::identity::KeyID;
4
+ use dpp::platform_value::BinaryData;
5
+ use dpp::prelude::{IdentityNonce, UserFeeIncrease};
6
+ use dpp::serialization::{PlatformDeserializable, PlatformSerializable};
7
+ use dpp::state_transition::documents_batch_transition::accessors::DocumentsBatchTransitionAccessorsV0;
8
+ use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransition;
9
+ use dpp::state_transition::documents_batch_transition::methods::v0::DocumentsBatchTransitionMethodsV0;
10
+ use dpp::state_transition::documents_batch_transition::{
11
+ DocumentsBatchTransition, DocumentsBatchTransitionV0,
12
+ };
13
+ use dpp::state_transition::{StateTransition, StateTransitionIdentitySigned, StateTransitionLike};
14
+ use pshenmic_dpp_state_transition::StateTransitionWASM;
15
+ use pshenmic_dpp_utils::{IntoWasm, WithJsError, identifier_from_js_value};
16
+ use wasm_bindgen::JsValue;
17
+ use wasm_bindgen::prelude::wasm_bindgen;
18
+
19
+ pub mod document_base_transition;
20
+ pub mod document_transition;
21
+ pub mod generators;
22
+ pub mod prefunded_voting_balance;
23
+ pub mod transitions;
24
+
25
+ #[derive(Debug, Clone, PartialEq)]
26
+ #[wasm_bindgen(js_name=DocumentsBatchWASM)]
27
+ pub struct DocumentsBatchWASM(DocumentsBatchTransition);
28
+
29
+ impl From<DocumentsBatchTransition> for DocumentsBatchWASM {
30
+ fn from(transition: DocumentsBatchTransition) -> Self {
31
+ DocumentsBatchWASM(transition)
32
+ }
33
+ }
34
+
35
+ impl From<DocumentsBatchWASM> for DocumentsBatchTransition {
36
+ fn from(wrapper: DocumentsBatchWASM) -> Self {
37
+ wrapper.0
38
+ }
39
+ }
40
+
41
+ #[wasm_bindgen]
42
+ impl DocumentsBatchWASM {
43
+ #[wasm_bindgen(constructor)]
44
+ pub fn new(
45
+ document_transitions: js_sys::Array,
46
+ js_owner_id: JsValue,
47
+ user_fee_increase: Option<UserFeeIncrease>,
48
+ signature_public_key_id: Option<KeyID>,
49
+ signature: Option<Vec<u8>>,
50
+ ) -> Result<DocumentsBatchWASM, JsValue> {
51
+ let owner_id = identifier_from_js_value(&js_owner_id)?;
52
+
53
+ let transitions: Vec<DocumentTransition> = document_transitions
54
+ .iter()
55
+ .map(|js_document_transition| {
56
+ let document_transition: DocumentTransitionWASM = js_document_transition
57
+ .to_wasm::<DocumentTransitionWASM>("DocumentTransitionWASM")
58
+ .unwrap()
59
+ .clone();
60
+
61
+ DocumentTransition::from(document_transition.clone().clone())
62
+ })
63
+ .collect();
64
+
65
+ Ok(DocumentsBatchWASM(DocumentsBatchTransition::V0(
66
+ DocumentsBatchTransitionV0 {
67
+ owner_id,
68
+ transitions,
69
+ user_fee_increase: user_fee_increase.unwrap_or(0),
70
+ signature_public_key_id: signature_public_key_id.unwrap_or(0),
71
+ signature: BinaryData::from(signature.unwrap_or(Vec::new())),
72
+ },
73
+ )))
74
+ }
75
+
76
+ #[wasm_bindgen(getter = "transitions")]
77
+ pub fn get_transitions(&self) -> Vec<DocumentTransitionWASM> {
78
+ let rs_transitions = self.0.transitions();
79
+
80
+ rs_transitions
81
+ .iter()
82
+ .map(|transition| DocumentTransitionWASM::from(transition.clone()))
83
+ .collect()
84
+ }
85
+
86
+ #[wasm_bindgen(getter = "signature")]
87
+ pub fn get_signature(&self) -> Vec<u8> {
88
+ self.0.signature().to_vec()
89
+ }
90
+
91
+ #[wasm_bindgen(getter = "signaturePublicKeyId")]
92
+ pub fn get_signature_public_key_id(&self) -> KeyID {
93
+ self.0.signature_public_key_id()
94
+ }
95
+
96
+ #[wasm_bindgen(getter = "allPurchasesAmount")]
97
+ pub fn get_all_purchases_amount(&self) -> Result<Option<Credits>, JsValue> {
98
+ self.0.all_purchases_amount().with_js_error()
99
+ }
100
+
101
+ #[wasm_bindgen(getter = "ownerId")]
102
+ pub fn get_owner_id(&self) -> Vec<u8> {
103
+ self.0.owner_id().to_vec()
104
+ }
105
+
106
+ #[wasm_bindgen(getter = "modifiedDataIds")]
107
+ pub fn get_modified_data_ids(&self) -> Result<JsValue, JsValue> {
108
+ let vec_of_ids: Vec<Vec<u8>> = self
109
+ .0
110
+ .modified_data_ids()
111
+ .iter()
112
+ .map(|id| id.to_vec())
113
+ .collect();
114
+
115
+ serde_wasm_bindgen::to_value(&vec_of_ids).map_err(JsValue::from)
116
+ }
117
+
118
+ #[wasm_bindgen(getter = "allConflictingIndexCollateralVotingFunds")]
119
+ pub fn get_all_conflicting_index_collateral_voting_funds(
120
+ &self,
121
+ ) -> Result<Option<Credits>, JsValue> {
122
+ self.0
123
+ .all_conflicting_index_collateral_voting_funds()
124
+ .with_js_error()
125
+ }
126
+
127
+ #[wasm_bindgen(setter = "transitions")]
128
+ pub fn set_transitions(&mut self, transitions: Vec<DocumentTransitionWASM>) {
129
+ let rs_transitions = transitions
130
+ .iter()
131
+ .map(|transition| DocumentTransition::from(transition.clone().clone()))
132
+ .collect();
133
+
134
+ self.0.set_transitions(rs_transitions);
135
+ }
136
+
137
+ #[wasm_bindgen(setter = "signature")]
138
+ pub fn set_signature(&mut self, js_signature: Vec<u8>) {
139
+ self.0.set_signature(BinaryData::from(js_signature))
140
+ }
141
+
142
+ #[wasm_bindgen(setter = "signaturePublicKeyId")]
143
+ pub fn set_signature_public_key_id(&mut self, key_id: KeyID) {
144
+ self.0.set_signature_public_key_id(key_id)
145
+ }
146
+
147
+ #[wasm_bindgen(js_name = "setIdentityContractNonce")]
148
+ pub fn set_identity_contract_nonce(&mut self, nonce: IdentityNonce) {
149
+ self.0.set_identity_contract_nonce(nonce)
150
+ }
151
+
152
+ #[wasm_bindgen(js_name = "toStateTransition")]
153
+ pub fn to_state_transition(&self) -> StateTransitionWASM {
154
+ let st = StateTransition::from(self.0.clone());
155
+
156
+ StateTransitionWASM::from(st)
157
+ }
158
+
159
+ #[wasm_bindgen(js_name = "fromStateTransition")]
160
+ pub fn from_state_transition(
161
+ state_transition: &StateTransitionWASM,
162
+ ) -> Result<DocumentsBatchWASM, JsValue> {
163
+ let rs_transition: StateTransition = StateTransition::from(state_transition.clone());
164
+
165
+ match rs_transition {
166
+ StateTransition::DocumentsBatch(batch) => Ok(DocumentsBatchWASM(batch)),
167
+ _ => Err(JsValue::from("invalid state document_transition content")),
168
+ }
169
+ }
170
+
171
+ #[wasm_bindgen(js_name = "toBytes")]
172
+ pub fn to_bytes(&self) -> Result<JsValue, JsValue> {
173
+ let bytes = self.0.serialize_to_bytes().with_js_error();
174
+
175
+ match bytes {
176
+ Ok(bytes) => Ok(JsValue::from(bytes.clone())),
177
+ Err(err) => Err(err),
178
+ }
179
+ }
180
+
181
+ #[wasm_bindgen(js_name = "fromBytes")]
182
+ pub fn from_bytes(bytes: Vec<u8>) -> Result<DocumentsBatchWASM, JsValue> {
183
+ let rs_batch =
184
+ DocumentsBatchTransition::deserialize_from_bytes(bytes.as_slice()).with_js_error()?;
185
+
186
+ Ok(DocumentsBatchWASM::from(rs_batch))
187
+ }
188
+ }
@@ -0,0 +1,45 @@
1
+ use dpp::fee::Credits;
2
+ use wasm_bindgen::prelude::wasm_bindgen;
3
+
4
+ #[wasm_bindgen(js_name = "PrefundedVotingBalanceWASM")]
5
+ #[derive(Clone)]
6
+ pub struct PrefundedVotingBalanceWASM {
7
+ index_name: String,
8
+ credits: Credits,
9
+ }
10
+
11
+ impl From<(String, Credits)> for PrefundedVotingBalanceWASM {
12
+ fn from((index_name, credits): (String, Credits)) -> Self {
13
+ PrefundedVotingBalanceWASM {
14
+ index_name,
15
+ credits,
16
+ }
17
+ }
18
+ }
19
+
20
+ impl From<PrefundedVotingBalanceWASM> for (String, Credits) {
21
+ fn from(value: PrefundedVotingBalanceWASM) -> Self {
22
+ (value.index_name, value.credits)
23
+ }
24
+ }
25
+
26
+ #[wasm_bindgen]
27
+ impl PrefundedVotingBalanceWASM {
28
+ #[wasm_bindgen(constructor)]
29
+ pub fn new(index_name: String, credits: Credits) -> PrefundedVotingBalanceWASM {
30
+ PrefundedVotingBalanceWASM {
31
+ index_name,
32
+ credits,
33
+ }
34
+ }
35
+
36
+ #[wasm_bindgen(getter, js_name = "indexName")]
37
+ pub fn index_name(&self) -> String {
38
+ self.index_name.clone()
39
+ }
40
+
41
+ #[wasm_bindgen(getter)]
42
+ pub fn credits(&self) -> Credits {
43
+ self.credits.clone()
44
+ }
45
+ }
@@ -0,0 +1,123 @@
1
+ use crate::document_base_transition::DocumentBaseTransitionWASM;
2
+ use crate::document_transition::DocumentTransitionWASM;
3
+ use crate::generators::generate_create_transition;
4
+ use crate::prefunded_voting_balance::PrefundedVotingBalanceWASM;
5
+ use dpp::dashcore::hashes::serde::Serialize;
6
+ use dpp::prelude::IdentityNonce;
7
+ use dpp::state_transition::documents_batch_transition::DocumentCreateTransition;
8
+ use dpp::state_transition::documents_batch_transition::document_create_transition::v0::v0_methods::DocumentCreateTransitionV0Methods;
9
+ use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransition;
10
+ use pshenmic_dpp_document::DocumentWASM;
11
+ use pshenmic_dpp_utils::ToSerdeJSONExt;
12
+ use wasm_bindgen::prelude::wasm_bindgen;
13
+ use wasm_bindgen::{JsError, JsValue};
14
+
15
+ #[wasm_bindgen(js_name = "DocumentCreateTransitionWASM")]
16
+ #[derive(Clone)]
17
+ pub struct DocumentCreateTransitionWASM(DocumentCreateTransition);
18
+
19
+ impl From<DocumentCreateTransitionWASM> for DocumentCreateTransition {
20
+ fn from(transition: DocumentCreateTransitionWASM) -> Self {
21
+ transition.0
22
+ }
23
+ }
24
+
25
+ impl From<DocumentCreateTransition> for DocumentCreateTransitionWASM {
26
+ fn from(transition: DocumentCreateTransition) -> Self {
27
+ DocumentCreateTransitionWASM(transition)
28
+ }
29
+ }
30
+
31
+ #[wasm_bindgen]
32
+ impl DocumentCreateTransitionWASM {
33
+ #[wasm_bindgen(constructor)]
34
+ pub fn new(
35
+ document: &DocumentWASM,
36
+ identity_contract_nonce: IdentityNonce,
37
+ document_type_name: String,
38
+ ) -> Result<DocumentCreateTransitionWASM, JsValue> {
39
+ let rs_create_transition = generate_create_transition(
40
+ document.clone(),
41
+ identity_contract_nonce,
42
+ document_type_name.to_string(),
43
+ );
44
+
45
+ Ok(DocumentCreateTransitionWASM(rs_create_transition))
46
+ }
47
+
48
+ #[wasm_bindgen(getter = "data")]
49
+ pub fn get_data(&self) -> Result<JsValue, JsValue> {
50
+ let serializer = serde_wasm_bindgen::Serializer::json_compatible();
51
+
52
+ self.0.data().serialize(&serializer).map_err(JsValue::from)
53
+ }
54
+
55
+ #[wasm_bindgen(getter = "base")]
56
+ pub fn get_base(&self) -> DocumentBaseTransitionWASM {
57
+ self.0.base().clone().into()
58
+ }
59
+
60
+ #[wasm_bindgen(getter = "entropy")]
61
+ pub fn get_entropy(&self) -> Vec<u8> {
62
+ self.0.entropy().to_vec()
63
+ }
64
+
65
+ #[wasm_bindgen(setter = "data")]
66
+ pub fn set_data(&mut self, js_data: JsValue) -> Result<(), JsValue> {
67
+ let data = js_data.with_serde_to_platform_value_map()?;
68
+
69
+ Ok(self.0.set_data(data))
70
+ }
71
+
72
+ #[wasm_bindgen(setter = "base")]
73
+ pub fn set_base(&mut self, base: &DocumentBaseTransitionWASM) {
74
+ self.0.set_base(base.clone().into())
75
+ }
76
+
77
+ #[wasm_bindgen(setter = "entropy")]
78
+ pub fn set_entropy(&mut self, js_entropy: Vec<u8>) -> Result<(), JsValue> {
79
+ let entropy: [u8; 32] = js_entropy.as_slice().try_into().map_err(JsError::from)?;
80
+
81
+ Ok(self.0.set_entropy(entropy))
82
+ }
83
+
84
+ #[wasm_bindgen(getter = "prefundedVotingBalance")]
85
+ pub fn get_prefunded_voting_balance(&self) -> Option<PrefundedVotingBalanceWASM> {
86
+ let rs_balance = self.0.prefunded_voting_balance();
87
+
88
+ match rs_balance {
89
+ Some(balance) => Some(balance.clone().into()),
90
+ None => None,
91
+ }
92
+ }
93
+
94
+ #[wasm_bindgen(setter = "prefundedVotingBalance")]
95
+ pub fn set_prefunded_voting_balance(
96
+ &mut self,
97
+ prefunded_voting_balance: &PrefundedVotingBalanceWASM,
98
+ ) {
99
+ self.0.set_prefunded_voting_balance(
100
+ prefunded_voting_balance.index_name(),
101
+ prefunded_voting_balance.credits(),
102
+ )
103
+ }
104
+
105
+ #[wasm_bindgen(js_name = "clearPrefundedVotingBalance")]
106
+ pub fn clear_prefunded_voting_balance(&mut self) {
107
+ self.0.clear_prefunded_voting_balance()
108
+ }
109
+
110
+ #[wasm_bindgen(js_name = "toDocumentTransition")]
111
+ pub fn to_document_transition(&self) -> DocumentTransitionWASM {
112
+ let rs_transition = DocumentTransition::from(self.0.clone());
113
+
114
+ DocumentTransitionWASM::from(rs_transition)
115
+ }
116
+
117
+ #[wasm_bindgen(js_name = "fromDocumentTransition")]
118
+ pub fn from_document_transition(
119
+ js_transition: DocumentTransitionWASM,
120
+ ) -> Result<DocumentCreateTransitionWASM, JsValue> {
121
+ js_transition.get_create_transition()
122
+ }
123
+ }
@@ -0,0 +1,67 @@
1
+ use crate::document_base_transition::DocumentBaseTransitionWASM;
2
+ use crate::document_transition::DocumentTransitionWASM;
3
+ use crate::generators::generate_delete_transition;
4
+ use dpp::prelude::IdentityNonce;
5
+ use dpp::state_transition::documents_batch_transition::DocumentDeleteTransition;
6
+ use dpp::state_transition::documents_batch_transition::document_delete_transition::v0::v0_methods::DocumentDeleteTransitionV0Methods;
7
+ use dpp::state_transition::documents_batch_transition::document_transition::DocumentTransition;
8
+ use pshenmic_dpp_document::DocumentWASM;
9
+ use wasm_bindgen::JsValue;
10
+ use wasm_bindgen::prelude::wasm_bindgen;
11
+
12
+ #[wasm_bindgen(js_name = "DocumentDeleteTransitionWASM")]
13
+ pub struct DocumentDeleteTransitionWASM(DocumentDeleteTransition);
14
+
15
+ impl From<DocumentDeleteTransition> for DocumentDeleteTransitionWASM {
16
+ fn from(document_delete_transition: DocumentDeleteTransition) -> Self {
17
+ DocumentDeleteTransitionWASM(document_delete_transition)
18
+ }
19
+ }
20
+
21
+ impl From<DocumentDeleteTransitionWASM> for DocumentDeleteTransition {
22
+ fn from(document_delete_transition: DocumentDeleteTransitionWASM) -> Self {
23
+ document_delete_transition.0
24
+ }
25
+ }
26
+
27
+ #[wasm_bindgen]
28
+ impl DocumentDeleteTransitionWASM {
29
+ #[wasm_bindgen(constructor)]
30
+ pub fn new(
31
+ document: &DocumentWASM,
32
+ identity_contract_nonce: IdentityNonce,
33
+ document_type_name: String,
34
+ ) -> Result<DocumentDeleteTransitionWASM, JsValue> {
35
+ let rs_delete_transition = generate_delete_transition(
36
+ document.clone(),
37
+ identity_contract_nonce,
38
+ document_type_name.to_string(),
39
+ );
40
+
41
+ Ok(DocumentDeleteTransitionWASM(rs_delete_transition))
42
+ }
43
+
44
+ #[wasm_bindgen(getter = "base")]
45
+ pub fn get_base(&self) -> DocumentBaseTransitionWASM {
46
+ self.0.base().clone().into()
47
+ }
48
+
49
+ #[wasm_bindgen(setter = "base")]
50
+ pub fn set_base(&mut self, base: &DocumentBaseTransitionWASM) {
51
+ self.0.set_base(base.clone().into())
52
+ }
53
+
54
+ #[wasm_bindgen(js_name = "toDocumentTransition")]
55
+ pub fn to_document_transition(&self) -> DocumentTransitionWASM {
56
+ let rs_transition = DocumentTransition::from(self.0.clone());
57
+
58
+ DocumentTransitionWASM::from(rs_transition)
59
+ }
60
+
61
+ #[wasm_bindgen(js_name = "fromDocumentTransition")]
62
+ pub fn from_document_transition(
63
+ js_transition: DocumentTransitionWASM,
64
+ ) -> Result<DocumentDeleteTransitionWASM, JsValue> {
65
+ js_transition.get_delete_transition()
66
+ }
67
+ }
@@ -0,0 +1,6 @@
1
+ pub mod create;
2
+ pub mod delete;
3
+ pub mod purchase;
4
+ pub mod replace;
5
+ pub mod transfer;
6
+ pub mod update_price;
@@ -0,0 +1,91 @@
1
+ use dpp::fee::Credits;
2
+ use dpp::prelude::{IdentityNonce, Revision};
3
+ use dpp::state_transition::documents_batch_transition::document_transition::document_purchase_transition::v0::v0_methods::DocumentPurchaseTransitionV0Methods;
4
+ use dpp::state_transition::documents_batch_transition::document_transition::{DocumentPurchaseTransition, DocumentTransition};
5
+ use wasm_bindgen::JsValue;
6
+ use wasm_bindgen::prelude::wasm_bindgen;
7
+ use pshenmic_dpp_document::DocumentWASM;
8
+ use crate::document_base_transition::DocumentBaseTransitionWASM;
9
+ use crate::document_transition::DocumentTransitionWASM;
10
+ use crate::generators::generate_purchase_transition;
11
+
12
+ #[wasm_bindgen(js_name = "DocumentPurchaseTransitionWASM")]
13
+ pub struct DocumentPurchaseTransitionWASM(DocumentPurchaseTransition);
14
+
15
+ impl From<DocumentPurchaseTransitionWASM> for DocumentPurchaseTransition {
16
+ fn from(transition: DocumentPurchaseTransitionWASM) -> Self {
17
+ transition.0
18
+ }
19
+ }
20
+
21
+ impl From<DocumentPurchaseTransition> for DocumentPurchaseTransitionWASM {
22
+ fn from(transition: DocumentPurchaseTransition) -> Self {
23
+ DocumentPurchaseTransitionWASM(transition)
24
+ }
25
+ }
26
+
27
+ #[wasm_bindgen]
28
+ impl DocumentPurchaseTransitionWASM {
29
+ #[wasm_bindgen(constructor)]
30
+ pub fn new(
31
+ document: &DocumentWASM,
32
+ identity_contract_nonce: IdentityNonce,
33
+ document_type_name: String,
34
+ amount: Credits,
35
+ ) -> Result<DocumentPurchaseTransitionWASM, JsValue> {
36
+ let rs_purchase_transition = generate_purchase_transition(
37
+ document.clone(),
38
+ identity_contract_nonce,
39
+ document_type_name,
40
+ amount,
41
+ );
42
+
43
+ Ok(DocumentPurchaseTransitionWASM(rs_purchase_transition))
44
+ }
45
+
46
+ #[wasm_bindgen(getter = "base")]
47
+ pub fn get_base(&self) -> DocumentBaseTransitionWASM {
48
+ self.0.base().clone().into()
49
+ }
50
+
51
+ #[wasm_bindgen(getter = "price")]
52
+ pub fn get_price(&self) -> Credits {
53
+ self.0.price()
54
+ }
55
+
56
+ #[wasm_bindgen(getter = "revision")]
57
+ pub fn get_revision(&self) -> Revision {
58
+ self.0.revision()
59
+ }
60
+
61
+ #[wasm_bindgen(setter = "base")]
62
+ pub fn set_base(&mut self, base: &DocumentBaseTransitionWASM) {
63
+ self.0.set_base(base.clone().into())
64
+ }
65
+
66
+ #[wasm_bindgen(setter = "price")]
67
+ pub fn set_price(&mut self, price: Credits) {
68
+ match self.0 {
69
+ DocumentPurchaseTransition::V0(ref mut v0) => v0.price = price,
70
+ }
71
+ }
72
+
73
+ #[wasm_bindgen(setter = "revision")]
74
+ pub fn set_revision(&mut self, revision: Revision) {
75
+ self.0.set_revision(revision);
76
+ }
77
+
78
+ #[wasm_bindgen(js_name = "toDocumentTransition")]
79
+ pub fn to_document_transition(&self) -> DocumentTransitionWASM {
80
+ let rs_transition = DocumentTransition::from(self.0.clone());
81
+
82
+ DocumentTransitionWASM::from(rs_transition)
83
+ }
84
+
85
+ #[wasm_bindgen(js_name = "fromDocumentTransition")]
86
+ pub fn from_document_transition(
87
+ js_transition: DocumentTransitionWASM,
88
+ ) -> Result<DocumentPurchaseTransitionWASM, JsValue> {
89
+ js_transition.get_purchase_transition()
90
+ }
91
+ }