pshenmic-dpp 1.0.3 → 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 (83) hide show
  1. package/.github/workflows/build.yml +8 -0
  2. package/.github/workflows/publish.yml +8 -0
  3. package/Cargo.lock +89 -28
  4. package/Cargo.toml +22 -18
  5. package/README.md +66 -23
  6. package/babel.config.json +19 -0
  7. package/dist/wasm/pshenmic_dpp.js +2992 -402
  8. package/dist/wasm/pshenmic_dpp_bg.js +1 -1
  9. package/package.json +13 -6
  10. package/packages/{cbor-conversation → cbor_conversation}/Cargo.toml +1 -5
  11. package/packages/data_contract/Cargo.toml +3 -7
  12. package/packages/data_contract/src/lib.rs +234 -47
  13. package/packages/{document_batch → data_contract_transitions}/Cargo.toml +6 -14
  14. package/packages/data_contract_transitions/src/create/mod.rs +161 -0
  15. package/packages/data_contract_transitions/src/lib.rs +2 -0
  16. package/packages/data_contract_transitions/src/update/mod.rs +144 -0
  17. package/packages/document/Cargo.toml +2 -7
  18. package/packages/document/src/lib.rs +1 -1
  19. package/packages/document/src/methods/mod.rs +370 -2
  20. package/packages/documents_batch/Cargo.toml +19 -0
  21. package/packages/documents_batch/src/document_base_transition/mod.rs +92 -0
  22. package/packages/documents_batch/src/document_transition/mod.rs +166 -0
  23. package/packages/documents_batch/src/generators.rs +122 -0
  24. package/packages/documents_batch/src/lib.rs +188 -0
  25. package/packages/documents_batch/src/prefunded_voting_balance/mod.rs +45 -0
  26. package/packages/documents_batch/src/transitions/create/mod.rs +123 -0
  27. package/packages/documents_batch/src/transitions/delete/mod.rs +67 -0
  28. package/packages/documents_batch/src/transitions/mod.rs +6 -0
  29. package/packages/documents_batch/src/transitions/purchase/mod.rs +91 -0
  30. package/packages/documents_batch/src/transitions/replace/mod.rs +93 -0
  31. package/packages/documents_batch/src/transitions/transfer/mod.rs +86 -0
  32. package/packages/documents_batch/src/transitions/update_price/mod.rs +75 -0
  33. package/packages/enums/Cargo.toml +2 -5
  34. package/packages/enums/src/batch/batch_enum.rs +75 -10
  35. package/packages/enums/src/keys/key_type.rs +46 -0
  36. package/packages/enums/src/keys/purpose.rs +55 -0
  37. package/packages/enums/src/keys/security_level.rs +46 -0
  38. package/packages/enums/src/lib.rs +1 -0
  39. package/packages/enums/src/network/mod.rs +67 -0
  40. package/packages/enums/src/platform/mod.rs +66 -8
  41. package/packages/identity/Cargo.toml +2 -7
  42. package/packages/identity/src/lib.rs +25 -14
  43. package/packages/{public_key → identity_public_key}/Cargo.toml +2 -6
  44. package/packages/{public_key → identity_public_key}/src/lib.rs +74 -27
  45. package/packages/identity_transitions/Cargo.toml +3 -7
  46. package/packages/identity_transitions/src/create_transition/mod.rs +5 -3
  47. package/packages/identity_transitions/src/create_transition/public_key_in_creation/mod.rs +25 -21
  48. package/packages/mock_bls/Cargo.toml +2 -6
  49. package/packages/private_key/Cargo.toml +2 -5
  50. package/packages/private_key/src/lib.rs +44 -6
  51. package/packages/state_transition/Cargo.toml +4 -7
  52. package/packages/state_transition/src/lib.rs +106 -40
  53. package/packages/utils/Cargo.toml +1 -6
  54. package/packages/utils/src/lib.rs +17 -15
  55. package/scripts/build-js.sh +8 -6
  56. package/scripts/build.sh +22 -1
  57. package/src/lib.rs +8 -1
  58. package/tests/DataContract.spec.js +175 -0
  59. package/tests/DataContractCreateStateTransition.spec.js +109 -0
  60. package/tests/DataContractUpdateStateTransition.spec.js +109 -0
  61. package/tests/Document.spec.js +232 -0
  62. package/tests/DocumentBatchTransition.spec.js +109 -0
  63. package/tests/DocumentTransition.spec.js +97 -0
  64. package/tests/DocumentsTransitions.spec.js +705 -0
  65. package/tests/Identity.spec.js +113 -0
  66. package/tests/IdentityPublicKey.spec.js +132 -0
  67. package/tests/PrivateKey.spec.js +73 -0
  68. package/tests/mocks/DataContract/DataContract.json +153 -0
  69. package/tests/mocks/DataContract/index.js +6 -0
  70. package/tests/mocks/Document/DataContract.json +23 -0
  71. package/tests/mocks/Document/document.json +3 -0
  72. package/tests/mocks/Document/document2.json +3 -0
  73. package/tests/mocks/Document/index.js +11 -0
  74. package/tests/mocks/Identity/index.js +7 -0
  75. package/tests/mocks/PrivateKey/index.js +5 -0
  76. package/tests/mocks/PublicKey/index.js +14 -0
  77. package/tests/utils/hex.js +15 -0
  78. package/tests/utils/wasm.js +14 -0
  79. package/packages/document/src/methods/js.rs +0 -260
  80. package/packages/document/src/methods/rust.rs +0 -92
  81. package/packages/document_batch/src/generators.rs +0 -63
  82. package/packages/document_batch/src/lib.rs +0 -228
  83. /package/packages/{cbor-conversation → cbor_conversation}/src/lib.rs +0 -0
@@ -0,0 +1,166 @@
1
+ use crate::transitions::create::DocumentCreateTransitionWASM;
2
+ use crate::transitions::delete::DocumentDeleteTransitionWASM;
3
+ use crate::transitions::purchase::DocumentPurchaseTransitionWASM;
4
+ use crate::transitions::replace::DocumentReplaceTransitionWASM;
5
+ use crate::transitions::transfer::DocumentTransferTransitionWASM;
6
+ use crate::transitions::update_price::DocumentUpdatePriceTransitionWASM;
7
+ use dpp::prelude::{Identifier, IdentityNonce, Revision};
8
+ use dpp::state_transition::documents_batch_transition::document_transition::action_type::TransitionActionTypeGetter;
9
+ use dpp::state_transition::documents_batch_transition::document_transition::{
10
+ DocumentTransition, DocumentTransitionV0Methods,
11
+ };
12
+ use pshenmic_dpp_enums::batch::batch_enum::BatchTypeWASM;
13
+ use pshenmic_dpp_utils::identifier_from_js_value;
14
+ use wasm_bindgen::JsValue;
15
+ use wasm_bindgen::prelude::wasm_bindgen;
16
+
17
+ #[derive(Clone)]
18
+ #[wasm_bindgen(js_name = "DocumentTransitionWASM")]
19
+ pub struct DocumentTransitionWASM(DocumentTransition);
20
+
21
+ impl From<DocumentTransition> for DocumentTransitionWASM {
22
+ fn from(transition: DocumentTransition) -> Self {
23
+ DocumentTransitionWASM(transition)
24
+ }
25
+ }
26
+
27
+ impl From<DocumentTransitionWASM> for DocumentTransition {
28
+ fn from(transition: DocumentTransitionWASM) -> Self {
29
+ transition.0
30
+ }
31
+ }
32
+
33
+ #[wasm_bindgen]
34
+ impl DocumentTransitionWASM {
35
+ #[wasm_bindgen(getter = "actionType")]
36
+ pub fn get_action_type(&self) -> String {
37
+ BatchTypeWASM::from(self.0.action_type()).into()
38
+ }
39
+
40
+ #[wasm_bindgen(getter = "dataContractId")]
41
+ pub fn get_data_contract_id(&self) -> Vec<u8> {
42
+ self.0.data_contract_id().to_vec()
43
+ }
44
+
45
+ #[wasm_bindgen(getter = "id")]
46
+ pub fn get_id(&self) -> Vec<u8> {
47
+ self.0.get_id().to_vec()
48
+ }
49
+
50
+ #[wasm_bindgen(getter = "documentTypeName")]
51
+ pub fn get_document_type_name(&self) -> String {
52
+ self.0.document_type_name().clone()
53
+ }
54
+
55
+ #[wasm_bindgen(getter = "identityContractNonce")]
56
+ pub fn get_identity_contract_nonce(&self) -> IdentityNonce {
57
+ self.0.identity_contract_nonce()
58
+ }
59
+
60
+ #[wasm_bindgen(getter = "revision")]
61
+ pub fn get_revision(&self) -> Option<Revision> {
62
+ self.0.revision()
63
+ }
64
+
65
+ #[wasm_bindgen(getter = "entropy")]
66
+ pub fn get_entropy(&self) -> Option<Vec<u8>> {
67
+ self.0.entropy()
68
+ }
69
+
70
+ #[wasm_bindgen(getter = "createTransition")]
71
+ pub fn get_create_transition(&self) -> Result<DocumentCreateTransitionWASM, JsValue> {
72
+ match self.0.clone() {
73
+ DocumentTransition::Create(create) => Ok(DocumentCreateTransitionWASM::from(create)),
74
+ _ => Err(JsValue::undefined()),
75
+ }
76
+ }
77
+
78
+ #[wasm_bindgen(getter = "replaceTransition")]
79
+ pub fn get_replace_transition(&self) -> Result<DocumentReplaceTransitionWASM, JsValue> {
80
+ match self.0.clone() {
81
+ DocumentTransition::Replace(replace) => {
82
+ Ok(DocumentReplaceTransitionWASM::from(replace))
83
+ }
84
+ _ => Err(JsValue::undefined()),
85
+ }
86
+ }
87
+
88
+ #[wasm_bindgen(getter = "deleteTransition")]
89
+ pub fn get_delete_transition(&self) -> Result<DocumentDeleteTransitionWASM, JsValue> {
90
+ match self.0.clone() {
91
+ DocumentTransition::Delete(delete) => Ok(DocumentDeleteTransitionWASM::from(delete)),
92
+ _ => Err(JsValue::undefined()),
93
+ }
94
+ }
95
+
96
+ #[wasm_bindgen(getter = "purchaseTransition")]
97
+ pub fn get_purchase_transition(&self) -> Result<DocumentPurchaseTransitionWASM, JsValue> {
98
+ match self.0.clone() {
99
+ DocumentTransition::Purchase(purchase) => {
100
+ Ok(DocumentPurchaseTransitionWASM::from(purchase))
101
+ }
102
+ _ => Err(JsValue::undefined()),
103
+ }
104
+ }
105
+
106
+ #[wasm_bindgen(getter = "transferTransition")]
107
+ pub fn get_transfer_transition(&self) -> Result<DocumentTransferTransitionWASM, JsValue> {
108
+ match self.0.clone() {
109
+ DocumentTransition::Transfer(transfer) => {
110
+ Ok(DocumentTransferTransitionWASM::from(transfer))
111
+ }
112
+ _ => Err(JsValue::undefined()),
113
+ }
114
+ }
115
+
116
+ #[wasm_bindgen(getter = "updatePriceTransition")]
117
+ pub fn get_update_price_transition(
118
+ &self,
119
+ ) -> Result<DocumentUpdatePriceTransitionWASM, JsValue> {
120
+ match self.0.clone() {
121
+ DocumentTransition::UpdatePrice(update_price) => {
122
+ Ok(DocumentUpdatePriceTransitionWASM::from(update_price))
123
+ }
124
+ _ => Err(JsValue::undefined()),
125
+ }
126
+ }
127
+
128
+ #[wasm_bindgen(setter = "dataContractId")]
129
+ pub fn set_data_contract_id(&mut self, js_data_contract_id: JsValue) -> Result<(), JsValue> {
130
+ let data_contract_id = identifier_from_js_value(&js_data_contract_id)?;
131
+
132
+ Ok(self.0.set_data_contract_id(data_contract_id))
133
+ }
134
+
135
+ #[wasm_bindgen(setter = "revision")]
136
+ pub fn set_revision(&mut self, revision: Revision) {
137
+ self.0.set_revision(revision)
138
+ }
139
+
140
+ #[wasm_bindgen(setter = "identityContractNonce")]
141
+ pub fn set_identity_contract_nonce(&mut self, identity_contract_nonce: IdentityNonce) {
142
+ self.0.set_identity_contract_nonce(identity_contract_nonce)
143
+ }
144
+ }
145
+
146
+ impl DocumentTransitionWASM {
147
+ pub fn rs_get_data_contract_id(&self) -> Identifier {
148
+ self.0.data_contract_id()
149
+ }
150
+
151
+ pub fn rs_get_id(&self) -> Identifier {
152
+ self.0.get_id()
153
+ }
154
+
155
+ pub fn rs_get_entropy(&self) -> Option<Vec<u8>> {
156
+ self.0.entropy()
157
+ }
158
+
159
+ pub fn rs_get_revision(&self) -> Option<Revision> {
160
+ self.0.revision()
161
+ }
162
+
163
+ pub fn rs_get_identity_contract_nonce(&self) -> IdentityNonce {
164
+ self.0.identity_contract_nonce()
165
+ }
166
+ }
@@ -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
+ }