diff --git a/.github/workflows/build-and-verify-alignment.yml b/.github/workflows/build-and-verify-alignment.yml index 6dd6d42..9789859 100644 --- a/.github/workflows/build-and-verify-alignment.yml +++ b/.github/workflows/build-and-verify-alignment.yml @@ -30,6 +30,7 @@ jobs: echo "Installing Android NDK 29.0.14206865..." $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install "ndk;29.0.14206865" echo "ANDROID_NDK_ROOT=$ANDROID_HOME/ndk/29.0.14206865" >> $GITHUB_ENV + echo "ANDROID_NDK_HOME=$ANDROID_HOME/ndk/29.0.14206865" >> $GITHUB_ENV - name: Cache Gradle packages uses: actions/cache@v4 @@ -41,13 +42,37 @@ jobs: restore-keys: | ${{ runner.os }}-gradle- + - name: clone platform repo + run: git clone --branch ferment-2.0 https://github.com/hashengineering/platform.git ../platform + + - name: clone rs-x11-hash repo + run: git clone --branch feat/add-android-support https://github.com/hashengineering/rs-x11-hash.git ../rs-x11-hash + - name: Grant execute permission for gradlew run: chmod +x gradlew - - name: Install SWIG + - name: Install SWIG and protoc run: | sudo apt-get update sudo apt-get install -y swig + PROTOC_VERSION=25.3 + PROTOC_SHA256="f853e691868d0557425ea290bf7ba6384eef2fa9b04c323afab49a770ba9da80" + BASE_URL="https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}" + ZIP_FILE="protoc-${PROTOC_VERSION}-linux-x86_64.zip" + curl -fL -o "${ZIP_FILE}" "${BASE_URL}/${ZIP_FILE}" + echo "${PROTOC_SHA256} ${ZIP_FILE}" | sha256sum --check + PROTOC_TMP=$(mktemp -d) + unzip -n "${ZIP_FILE}" -d "${PROTOC_TMP}" + mkdir -p "$HOME/.local/bin" "$HOME/.local/include" + cp --update=none "${PROTOC_TMP}/bin/protoc" "$HOME/.local/bin/protoc" + chmod +x "$HOME/.local/bin/protoc" + cp -r --update=none "${PROTOC_TMP}/include/." "$HOME/.local/include/" + rm -rf "${PROTOC_TMP}" "${ZIP_FILE}" + echo "$HOME/.local/bin" >> $GITHUB_PATH + echo "PROTOC_INCLUDE=$HOME/.local/include" >> $GITHUB_ENV + + - name: Install cbindgen + run: cargo install cbindgen - name: generate the header file run: | @@ -61,11 +86,17 @@ jobs: - name: Generate Protobuf run: ./gradlew generateProto + - name: Install Cargo NDK and Rust targets + run: | + cargo install cargo-ndk --version "^3" + rustup component add rust-src --toolchain nightly + rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android --toolchain nightly + - name: Build CMake run: ./gradlew cmakeClean cmakeConfigure cmakeBuild - name: Build with Gradle - run: ./gradlew build + run: ./gradlew build -x test -PskipDetekt - name: Verify 16KB Page Size Alignment run: ./scripts/verify-16kb-alignment.sh diff --git a/README.md b/README.md index 0bbceff..1a1eff2 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Build the android libraries to publish to Maven Central: ``` ### Use in other projects ```groovy -dppVersion = "2.0.4" +dppVersion = "2.0.5-SNAPSHOT" dependencies { implementation "org.dashj.platform:dash-sdk-java:$dppVersion" implementation "org.dashj.platform:dash-sdk-kotlin:$dppVersion" // dpp diff --git a/build.gradle b/build.gradle index 91cbad0..bfd6c59 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ buildscript { - ext.version = '2.0.4' + ext.version = '2.0.5-SNAPSHOT' ext.kotlin_version = '2.1.20' - ext.dashj_version = '21.1.14' + ext.dashj_version = '22.0.1' repositories { google() // Required for Android library and application projects mavenCentral() diff --git a/dash-sdk-android/.gitignore b/dash-sdk-android/.gitignore index 2e11679..968890b 100644 --- a/dash-sdk-android/.gitignore +++ b/dash-sdk-android/.gitignore @@ -1,4 +1,3 @@ build/ target/ -fermented.rs .cxx/ \ No newline at end of file diff --git a/dash-sdk-android/src/main/rust/Cargo.lock b/dash-sdk-android/src/main/rust/Cargo.lock index 6066158..5aa4718 100644 --- a/dash-sdk-android/src/main/rust/Cargo.lock +++ b/dash-sdk-android/src/main/rust/Cargo.lock @@ -868,7 +868,7 @@ dependencies = [ [[package]] name = "dash-sdk-bindings" -version = "2.0.4" +version = "2.0.5" dependencies = [ "cbindgen 0.26.0", "dash-sdk", @@ -2898,7 +2898,7 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "platform-mobile" -version = "2.0.4" +version = "2.0.5" dependencies = [ "async-trait", "base64 0.13.1", diff --git a/dash-sdk-android/src/main/rust/Cargo.toml b/dash-sdk-android/src/main/rust/Cargo.toml index 4962173..84594fc 100644 --- a/dash-sdk-android/src/main/rust/Cargo.toml +++ b/dash-sdk-android/src/main/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk-bindings" -version = "2.0.4" +version = "2.0.5" edition = "2021" [dependencies] diff --git a/dash-sdk-android/src/main/rust/src/fermented.rs b/dash-sdk-android/src/main/rust/src/fermented.rs new file mode 100644 index 0000000..4e6ed43 --- /dev/null +++ b/dash-sdk-android/src/main/rust/src/fermented.rs @@ -0,0 +1,8145 @@ +#[allow( + clippy::let_and_return, + clippy::suspicious_else_formatting, + clippy::redundant_field_names, + dead_code, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + redundant_semicolons, + unreachable_patterns, + unused_braces, + unused_imports, + unused_parens, + unused_qualifications, + unused_unsafe, + unused_variables +)] +pub mod types { + pub mod rs_dapi_client { + use crate as dash_sdk_bindings; + + pub mod transport { use crate as dash_sdk_bindings; } + } + + pub mod dpp { + use crate as dash_sdk_bindings; + + pub mod fee { + use crate as dash_sdk_bindings; + + pub mod epoch { + use crate as dash_sdk_bindings; + + #[cfg(feature = "fee-distribution")] + pub mod distribution { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(feature = "fee-distribution")] + pub mod fee_result { + use crate as dash_sdk_bindings; + + pub mod refunds { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + pub mod default_costs { use crate as dash_sdk_bindings; } + } + + pub mod group { + use crate as dash_sdk_bindings; + + pub mod group_action { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "core-types")] + pub mod core_types { + use crate as dash_sdk_bindings; + + pub mod validator_set { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod validator { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod bls { use crate as dash_sdk_bindings; } + + pub mod asset_lock { + use crate as dash_sdk_bindings; + + pub mod reduced_asset_lock_value { use crate as dash_sdk_bindings; } + } + + pub mod validation { + use crate as dash_sdk_bindings; + + #[cfg(feature = "validation")] + pub mod byte_array_keyword { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "validation")] + pub mod json_schema_validator { + use crate as dash_sdk_bindings; + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod new { use crate as dash_sdk_bindings; } + + pub mod compile { use crate as dash_sdk_bindings; } + + pub mod validate { use crate as dash_sdk_bindings; } + } + } + } + + pub mod block { + use crate as dash_sdk_bindings; + + pub mod block_info { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`BlockInfo`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_block_block_info_BlockInfo { + pub time_ms: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, + pub height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub core_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + pub epoch: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch, + } + + impl ferment::FFIConversionFrom for dpp_block_block_info_BlockInfo { + unsafe fn ffi_from_const(ffi: *const dpp_block_block_info_BlockInfo) -> dpp::block::block_info::BlockInfo { + let ffi_ref = &*ffi; + dpp::block::block_info::BlockInfo { time_ms: >::ffi_from(ffi_ref.time_ms), height: >::ffi_from(ffi_ref.height), core_height: >::ffi_from(ffi_ref.core_height), epoch: >::ffi_from(ffi_ref.epoch) } + } + } + + impl ferment::FFIConversionTo for dpp_block_block_info_BlockInfo { unsafe fn ffi_to_const(obj: dpp::block::block_info::BlockInfo) -> *const dpp_block_block_info_BlockInfo { ferment::boxed(dpp_block_block_info_BlockInfo { time_ms: >::ffi_to(obj.time_ms), height: >::ffi_to(obj.height), core_height: >::ffi_to(obj.core_height), epoch: >::ffi_to(obj.epoch) }) } } + + impl Drop for dpp_block_block_info_BlockInfo { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.time_ms); + ferment::unbox_any(ffi_ref.height); + ferment::unbox_any(ffi_ref.core_height); + ferment::unbox_any(ffi_ref.epoch); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_ctor<>(time_ms: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, core_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, epoch: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch) -> *mut dpp_block_block_info_BlockInfo { ferment::boxed(dpp_block_block_info_BlockInfo { time_ms, height, core_height, epoch }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_destroy<>(ffi: *mut dpp_block_block_info_BlockInfo) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_time_ms<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis { (*obj).time_ms } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_core_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).core_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_epoch<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch { (*obj).epoch } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_time_ms<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis { (*obj).time_ms } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_core_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).core_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_epoch<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch { (*obj).epoch } + } + + pub mod extended_block_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod epoch { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`EpochIndex`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_block_epoch_EpochIndex(u16); + + impl ferment::FFIConversionFrom for dpp_block_epoch_EpochIndex { + unsafe fn ffi_from_const(ffi: *const dpp_block_epoch_EpochIndex) -> dpp::block::epoch::EpochIndex { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_block_epoch_EpochIndex { unsafe fn ffi_to_const(obj: dpp::block::epoch::EpochIndex) -> *const dpp_block_epoch_EpochIndex { ferment::boxed(dpp_block_epoch_EpochIndex(obj)) } } + + impl Drop for dpp_block_epoch_EpochIndex { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_ctor<>(o_0: u16) -> *mut dpp_block_epoch_EpochIndex { ferment::boxed(dpp_block_epoch_EpochIndex(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_destroy<>(ffi: *mut dpp_block_epoch_EpochIndex) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_get_0<>(obj: *const dpp_block_epoch_EpochIndex) -> u16 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_set_0<>(obj: *const dpp_block_epoch_EpochIndex) -> u16 { (*obj).0 } + + #[doc = "FFI-representation of the [`Epoch`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_block_epoch_Epoch { + pub index: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex, + pub key: *mut crate::fermented::generics::Arr_u8_2, + } + + impl ferment::FFIConversionFrom for dpp_block_epoch_Epoch { + unsafe fn ffi_from_const(ffi: *const dpp_block_epoch_Epoch) -> dpp::block::epoch::Epoch { + let ffi_ref = &*ffi; + dpp::block::epoch::Epoch { index: >::ffi_from(ffi_ref.index), key: >::ffi_from(ffi_ref.key) } + } + } + + impl ferment::FFIConversionTo for dpp_block_epoch_Epoch { unsafe fn ffi_to_const(obj: dpp::block::epoch::Epoch) -> *const dpp_block_epoch_Epoch { ferment::boxed(dpp_block_epoch_Epoch { index: >::ffi_to(obj.index), key: >::ffi_to(obj.key) }) } } + + impl Drop for dpp_block_epoch_Epoch { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.index); + ferment::unbox_any(ffi_ref.key); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_ctor<>(index: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex, key: *mut crate::fermented::generics::Arr_u8_2) -> *mut dpp_block_epoch_Epoch { ferment::boxed(dpp_block_epoch_Epoch { index, key }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_destroy<>(ffi: *mut dpp_block_epoch_Epoch) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_get_index<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex { (*obj).index } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_get_key<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::generics::Arr_u8_2 { (*obj).key } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_set_index<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex { (*obj).index } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_set_key<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::generics::Arr_u8_2 { (*obj).key } + } + + pub mod extended_epoch_info { use crate as dash_sdk_bindings; } + + pub mod finalized_epoch_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod withdrawal { + use crate as dash_sdk_bindings; + + #[cfg(feature = "system_contracts")] + pub mod document_try_into_asset_unlock_base_transaction_info { + use crate as dash_sdk_bindings; + } + + pub mod daily_withdrawal_limit { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod errors { + use crate as dash_sdk_bindings; + + pub mod non_consensus_error { use crate as dash_sdk_bindings; } + + pub mod consensus { + use crate as dash_sdk_bindings; + + pub mod state { + use crate as dash_sdk_bindings; + + pub mod voting { use crate as dash_sdk_bindings; } + + pub mod data_contract { use crate as dash_sdk_bindings; } + + pub mod document { use crate as dash_sdk_bindings; } + + pub mod token { use crate as dash_sdk_bindings; } + + pub mod data_trigger { use crate as dash_sdk_bindings; } + + pub mod group { use crate as dash_sdk_bindings; } + + pub mod prefunded_specialized_balances { use crate as dash_sdk_bindings; } + + pub mod identity { use crate as dash_sdk_bindings; } + } + + pub mod signature { use crate as dash_sdk_bindings; } + + pub mod fee { use crate as dash_sdk_bindings; } + + pub mod basic { + use crate as dash_sdk_bindings; + + pub mod token { use crate as dash_sdk_bindings; } + + pub mod state_transition { use crate as dash_sdk_bindings; } + + pub mod json_schema_error { use crate as dash_sdk_bindings; } + + pub mod group { use crate as dash_sdk_bindings; } + + pub mod unsupported_version_error { use crate as dash_sdk_bindings; } + + pub mod identity { use crate as dash_sdk_bindings; } + + pub mod unsupported_protocol_version_error { use crate as dash_sdk_bindings; } + + pub mod document { use crate as dash_sdk_bindings; } + + pub mod decode { use crate as dash_sdk_bindings; } + + pub mod data_contract { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(feature = "state-transitions")] + pub mod state_transition { + use crate as dash_sdk_bindings; + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod traits { use crate as dash_sdk_bindings; } + + pub mod abstract_state_transition { use crate as dash_sdk_bindings; } + + pub mod errors { use crate as dash_sdk_bindings; } + + pub mod state_transitions { + use crate as dash_sdk_bindings; + + pub mod document { + use crate as dash_sdk_bindings; + + pub mod batch_transition { + use crate as dash_sdk_bindings; + + pub mod batched_transition { + use crate as dash_sdk_bindings; + + pub mod token_config_update_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod document_transfer_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_destroy_frozen_funds_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod token_mint_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_purchase_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_claim_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_unfreeze_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_burn_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_create_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_set_price_for_direct_purchase_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod document_delete_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_freeze_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod token_transfer_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod document_update_price_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_replace_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_direct_purchase_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_emergency_action_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod token_base_transition { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_base_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod v1 { use crate as dash_sdk_bindings; } + } + } + + pub mod v1 { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod resolvers { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validation { + use crate as dash_sdk_bindings; + + pub mod find_duplicates_by_id { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod validate_basic_structure { use crate as dash_sdk_bindings; } + } + } + } + + pub mod contract { + use crate as dash_sdk_bindings; + + pub mod data_contract_update_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod data_contract_create_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + #[cfg(feature = "state-transition-json-conversion")] + pub mod json_conversion { + use crate as dash_sdk_bindings; + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod common_fields { use crate as dash_sdk_bindings; } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod identity_create_transition { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod public_key_in_creation { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod hash { use crate as dash_sdk_bindings; } + + pub mod duplicated_key_ids_witness { use crate as dash_sdk_bindings; } + + pub mod duplicated_keys_witness { use crate as dash_sdk_bindings; } + + pub mod validate_identity_public_keys_structure { use crate as dash_sdk_bindings; } + + #[cfg(feature = "state-transition-signing")] + pub mod from_public_key_signed_with_private_key { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "state-transition-signing")] + pub mod from_public_key_signed_external { + use crate as dash_sdk_bindings; + } + } + } + + pub mod identity_credit_withdrawal_transition { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod v1 { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod common_fields { use crate as dash_sdk_bindings; } + + pub mod identity_update_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "state-transition-json-conversion")] + pub mod json_conversion { + use crate as dash_sdk_bindings; + } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod masternode_vote_transition { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod identity_credit_transfer_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod identity_topup_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + } + + pub mod common_fields { use crate as dash_sdk_bindings; } + } + } + + pub mod voting { + use crate as dash_sdk_bindings; + + pub mod vote_polls { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`VotePoll`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_vote_polls_VotePoll { ContestedDocumentResourceVotePoll(*mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) } + + impl ferment::FFIConversionFrom for dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_polls_VotePoll) -> dpp::voting::vote_polls::VotePoll { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(o_0) => dpp::voting::vote_polls::VotePoll::ContestedDocumentResourceVotePoll(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_to_const(obj: dpp::voting::vote_polls::VotePoll) -> *const dpp_voting_vote_polls_VotePoll { + ferment::boxed(match obj { + dpp::voting::vote_polls::VotePoll::ContestedDocumentResourceVotePoll(o_0) => dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_vote_polls_VotePoll { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_VotePoll_ContestedDocumentResourceVotePoll_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut dpp_voting_vote_polls_VotePoll { ferment::boxed(dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_VotePoll_destroy<>(ffi: *mut dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + pub mod contested_document_resource_vote_poll { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ContestedDocumentResourceVotePoll`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + pub contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub document_type_name: *mut std::os::raw::c_char, + pub index_name: *mut std::os::raw::c_char, + pub index_values: *mut crate::fermented::generics::Vec_platform_value_Value, + } + + impl ferment::FFIConversionFrom for dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll { + let ffi_ref = &*ffi; + dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll { contract_id: >::ffi_from(ffi_ref.contract_id), document_type_name: >::ffi_from(ffi_ref.document_type_name), index_name: >::ffi_from(ffi_ref.index_name), index_values: >>::ffi_from(ffi_ref.index_values) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + unsafe fn ffi_to_const(obj: dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll) -> *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { ferment::boxed(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { contract_id: >::ffi_to(obj.contract_id), document_type_name: >::ffi_to(obj.document_type_name), index_name: >::ffi_to(obj.index_name), index_values: >>::ffi_to(obj.index_values) }) } + } + + impl Drop for dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.contract_id); + ferment::unbox_string(ffi_ref.document_type_name); + ferment::unbox_string(ffi_ref.index_name); + ferment::unbox_any(ffi_ref.index_values); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_ctor<>(contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_name: *mut std::os::raw::c_char, index_name: *mut std::os::raw::c_char, index_values: *mut crate::fermented::generics::Vec_platform_value_Value) -> *mut dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { ferment::boxed(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { contract_id, document_type_name, index_name, index_values }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_destroy<>(ffi: *mut dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_contract_id<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).contract_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_document_type_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).document_type_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_index_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).index_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_index_values<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::generics::Vec_platform_value_Value { (*obj).index_values } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_contract_id<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).contract_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_document_type_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).document_type_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_index_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).index_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_index_values<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::generics::Vec_platform_value_Value { (*obj).index_values } + } + } + + pub mod votes { + use crate as dash_sdk_bindings; + + pub mod resource_vote { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ResourceVoteV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + pub vote_poll: *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll, + pub resource_vote_choice: *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice, + } + + impl ferment::FFIConversionFrom for dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + unsafe fn ffi_from_const(ffi: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> dpp::voting::votes::resource_vote::v0::ResourceVoteV0 { + let ffi_ref = &*ffi; + dpp::voting::votes::resource_vote::v0::ResourceVoteV0 { vote_poll: >::ffi_from(ffi_ref.vote_poll), resource_vote_choice: >::ffi_from(ffi_ref.resource_vote_choice) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { unsafe fn ffi_to_const(obj: dpp::voting::votes::resource_vote::v0::ResourceVoteV0) -> *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { ferment::boxed(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { vote_poll: >::ffi_to(obj.vote_poll), resource_vote_choice: >::ffi_to(obj.resource_vote_choice) }) } } + + impl Drop for dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.vote_poll); + ferment::unbox_any(ffi_ref.resource_vote_choice); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_ctor<>(vote_poll: *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll, resource_vote_choice: *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) -> *mut dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { ferment::boxed(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { vote_poll, resource_vote_choice }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_destroy<>(ffi: *mut dpp_voting_votes_resource_vote_v0_ResourceVoteV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_get_vote_poll<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll { (*obj).vote_poll } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_get_resource_vote_choice<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { (*obj).resource_vote_choice } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_set_vote_poll<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll { (*obj).vote_poll } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_set_resource_vote_choice<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { (*obj).resource_vote_choice } + } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ResourceVote`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_votes_resource_vote_ResourceVote { V0(*mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0) } + + impl ferment::FFIConversionFrom for dpp_voting_votes_resource_vote_ResourceVote { + unsafe fn ffi_from_const(ffi: *const dpp_voting_votes_resource_vote_ResourceVote) -> dpp::voting::votes::resource_vote::ResourceVote { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_votes_resource_vote_ResourceVote::V0(o_0) => dpp::voting::votes::resource_vote::ResourceVote::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_votes_resource_vote_ResourceVote { + unsafe fn ffi_to_const(obj: dpp::voting::votes::resource_vote::ResourceVote) -> *const dpp_voting_votes_resource_vote_ResourceVote { + ferment::boxed(match obj { + dpp::voting::votes::resource_vote::ResourceVote::V0(o_0) => dpp_voting_votes_resource_vote_ResourceVote::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_votes_resource_vote_ResourceVote { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_votes_resource_vote_ResourceVote::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_ResourceVote_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut dpp_voting_votes_resource_vote_ResourceVote { ferment::boxed(dpp_voting_votes_resource_vote_ResourceVote::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_ResourceVote_destroy<>(ffi: *mut dpp_voting_votes_resource_vote_ResourceVote) { ferment::unbox_any(ffi); } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Vote`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_votes_Vote { ResourceVote(*mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) } + + impl ferment::FFIConversionFrom for dpp_voting_votes_Vote { + unsafe fn ffi_from_const(ffi: *const dpp_voting_votes_Vote) -> dpp::voting::votes::Vote { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_votes_Vote::ResourceVote(o_0) => dpp::voting::votes::Vote::ResourceVote(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_votes_Vote { + unsafe fn ffi_to_const(obj: dpp::voting::votes::Vote) -> *const dpp_voting_votes_Vote { + ferment::boxed(match obj { + dpp::voting::votes::Vote::ResourceVote(o_0) => dpp_voting_votes_Vote::ResourceVote(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_votes_Vote { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_votes_Vote::ResourceVote(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_Vote_ResourceVote_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) -> *mut dpp_voting_votes_Vote { ferment::boxed(dpp_voting_votes_Vote::ResourceVote(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_Vote_destroy<>(ffi: *mut dpp_voting_votes_Vote) { ferment::unbox_any(ffi); } + } + + pub mod contender_structs { + use crate as dash_sdk_bindings; + + pub mod contender { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ContenderWithSerializedDocument`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { V0(*mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) } + + impl ferment::FFIConversionFrom for dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + unsafe fn ffi_from_const(ffi: *const dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> dpp::voting::contender_structs::contender::ContenderWithSerializedDocument { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(o_0) => dpp::voting::contender_structs::contender::ContenderWithSerializedDocument::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + unsafe fn ffi_to_const(obj: dpp::voting::contender_structs::contender::ContenderWithSerializedDocument) -> *const dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + ferment::boxed(match obj { + dpp::voting::contender_structs::contender::ContenderWithSerializedDocument::V0(o_0) => dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { ferment::boxed(dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy<>(ffi: *mut dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) { ferment::unbox_any(ffi); } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ContenderWithSerializedDocumentV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + pub identity_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub serialized_document: *mut crate::fermented::generics::Vec_u8, + pub vote_tally: *mut u32, + } + + impl ferment::FFIConversionFrom for dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + unsafe fn ffi_from_const(ffi: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> dpp::voting::contender_structs::contender::v0::ContenderWithSerializedDocumentV0 { + let ffi_ref = &*ffi; + dpp::voting::contender_structs::contender::v0::ContenderWithSerializedDocumentV0 { identity_id: >::ffi_from(ffi_ref.identity_id), serialized_document: >>::ffi_from_opt(ffi_ref.serialized_document), vote_tally: ferment::from_opt_primitive(ffi_ref.vote_tally) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { unsafe fn ffi_to_const(obj: dpp::voting::contender_structs::contender::v0::ContenderWithSerializedDocumentV0) -> *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { ferment::boxed(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { identity_id: >::ffi_to(obj.identity_id), serialized_document: >>::ffi_to_opt(obj.serialized_document), vote_tally: ferment::to_opt_primitive(obj.vote_tally) }) } } + + impl Drop for dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.identity_id); + ferment::unbox_any_opt(ffi_ref.serialized_document); + ferment::destroy_opt_primitive(ffi_ref.vote_tally); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_ctor<>(identity_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, serialized_document: *mut crate::fermented::generics::Vec_u8, vote_tally: *mut u32) -> *mut dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { ferment::boxed(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { identity_id, serialized_document, vote_tally }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_destroy<>(ffi: *mut dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_get_identity_id<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).identity_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_get_serialized_document<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::generics::Vec_u8 { (*obj).serialized_document } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_get_vote_tally<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut u32 { (*obj).vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_set_identity_id<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).identity_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_set_serialized_document<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::generics::Vec_u8 { (*obj).serialized_document } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_set_vote_tally<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut u32 { (*obj).vote_tally } + } + } + } + + pub mod vote_info_storage { + use crate as dash_sdk_bindings; + + pub mod contested_document_vote_poll_stored_info { use crate as dash_sdk_bindings; } + + pub mod contested_document_vote_poll_winner_info { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ContestedDocumentVotePollWinnerInfo`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { NoWinner, WonByIdentity(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier), Locked } + + impl ferment::FFIConversionFrom for dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo) -> dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner => dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::NoWinner, + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_0) => dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::WonByIdentity(>::ffi_from(*o_0)), + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked => dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::Locked + } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + unsafe fn ffi_to_const(obj: dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo) -> *const dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + ferment::boxed(match obj { + dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::NoWinner => dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner, + dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_0) => dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(>::ffi_to(o_0)), + dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::Locked => dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner => {} + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_0) => { ferment::unbox_any(*o_0); } + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_NoWinner_ctor() -> *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { ferment::boxed(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_WonByIdentity_ctor(o_o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { ferment::boxed(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_Locked_ctor() -> *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { ferment::boxed(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_destroy<>(ffi: *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo) { ferment::unbox_any(ffi); } + } + } + + pub mod vote_choices { + use crate as dash_sdk_bindings; + + pub mod resource_vote_choice { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ResourceVoteChoice`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { TowardsIdentity(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier), Abstain, Lock } + + impl ferment::FFIConversionFrom for dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) -> dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(o_0) => dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::TowardsIdentity(>::ffi_from(*o_0)), + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain => dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Abstain, + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock => dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Lock + } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + unsafe fn ffi_to_const(obj: dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice) -> *const dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + ferment::boxed(match obj { + dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::TowardsIdentity(o_0) => dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(>::ffi_to(o_0)), + dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Abstain => dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain, + dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Lock => dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(o_0) => { ferment::unbox_any(*o_0); } + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain => {} + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_TowardsIdentity_ctor(o_o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { ferment::boxed(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_Abstain_ctor() -> *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { ferment::boxed(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_Lock_ctor() -> *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { ferment::boxed(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_destroy<>(ffi: *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) { ferment::unbox_any(ffi); } + } + } + } + + pub mod balances { use crate as dash_sdk_bindings; } + + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod token_payment_info { + use crate as dash_sdk_bindings; + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod info { use crate as dash_sdk_bindings; } + + pub mod contract_info { use crate as dash_sdk_bindings; } + + pub mod status { use crate as dash_sdk_bindings; } + } + + pub mod document { + use crate as dash_sdk_bindings; + + #[cfg(feature = "factories")] + pub mod specialized_document_factory { + use crate as dash_sdk_bindings; + } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Document`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_document_Document { V0(*mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0) } + + impl ferment::FFIConversionFrom for dpp_document_Document { + unsafe fn ffi_from_const(ffi: *const dpp_document_Document) -> dpp::document::Document { + let ffi_ref = &*ffi; + match ffi_ref { dpp_document_Document::V0(o_0) => dpp::document::Document::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_document_Document { + unsafe fn ffi_to_const(obj: dpp::document::Document) -> *const dpp_document_Document { + ferment::boxed(match obj { + dpp::document::Document::V0(o_0) => dpp_document_Document::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_document_Document { + fn drop(&mut self) { + unsafe { + match self { + dpp_document_Document::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_Document_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0) -> *mut dpp_document_Document { ferment::boxed(dpp_document_Document::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_Document_destroy<>(ffi: *mut dpp_document_Document) { ferment::unbox_any(ffi); } + + #[cfg(feature = "extended-document")] + pub mod extended_document { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod document_methods { + use crate as dash_sdk_bindings; + + pub mod get_raw_for_contract { use crate as dash_sdk_bindings; } + + pub mod hash { use crate as dash_sdk_bindings; } + + pub mod get_raw_for_document_type { use crate as dash_sdk_bindings; } + + pub mod is_equal_ignoring_timestamps { use crate as dash_sdk_bindings; } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + #[cfg(feature = "factories")] + pub mod document_factory { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod serialization_traits { + use crate as dash_sdk_bindings; + + pub mod platform_serialization_conversion { + use crate as dash_sdk_bindings; + + pub mod deserialize { use crate as dash_sdk_bindings; } + + pub mod serialize { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "document-json-conversion")] + pub mod json_conversion { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "document-cbor-conversion")] + pub mod cbor_conversion { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "document-value-conversion")] + pub mod platform_value_conversion { + use crate as dash_sdk_bindings; + } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`DocumentV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_document_v0_DocumentV0 { + pub id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub properties: *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value, + pub revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision, + pub created_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + pub updated_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + pub transferred_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + pub created_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub updated_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub transferred_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub created_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + pub updated_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + pub transferred_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + } + + impl ferment::FFIConversionFrom for dpp_document_v0_DocumentV0 { + unsafe fn ffi_from_const(ffi: *const dpp_document_v0_DocumentV0) -> dpp::document::v0::DocumentV0 { + let ffi_ref = &*ffi; + dpp::document::v0::DocumentV0 { + id: >::ffi_from(ffi_ref.id), + owner_id: >::ffi_from(ffi_ref.owner_id), + properties: >>::ffi_from(ffi_ref.properties), + revision: >::ffi_from_opt(ffi_ref.revision), + created_at: >::ffi_from_opt(ffi_ref.created_at), + updated_at: >::ffi_from_opt(ffi_ref.updated_at), + transferred_at: >::ffi_from_opt(ffi_ref.transferred_at), + created_at_block_height: >::ffi_from_opt(ffi_ref.created_at_block_height), + updated_at_block_height: >::ffi_from_opt(ffi_ref.updated_at_block_height), + transferred_at_block_height: >::ffi_from_opt(ffi_ref.transferred_at_block_height), + created_at_core_block_height: >::ffi_from_opt(ffi_ref.created_at_core_block_height), + updated_at_core_block_height: >::ffi_from_opt(ffi_ref.updated_at_core_block_height), + transferred_at_core_block_height: >::ffi_from_opt(ffi_ref.transferred_at_core_block_height), + } + } + } + + impl ferment::FFIConversionTo for dpp_document_v0_DocumentV0 { + unsafe fn ffi_to_const(obj: dpp::document::v0::DocumentV0) -> *const dpp_document_v0_DocumentV0 { + ferment::boxed(dpp_document_v0_DocumentV0 { + id: >::ffi_to(obj.id), + owner_id: >::ffi_to(obj.owner_id), + properties: >>::ffi_to(obj.properties), + revision: >::ffi_to_opt(obj.revision), + created_at: >::ffi_to_opt(obj.created_at), + updated_at: >::ffi_to_opt(obj.updated_at), + transferred_at: >::ffi_to_opt(obj.transferred_at), + created_at_block_height: >::ffi_to_opt(obj.created_at_block_height), + updated_at_block_height: >::ffi_to_opt(obj.updated_at_block_height), + transferred_at_block_height: >::ffi_to_opt(obj.transferred_at_block_height), + created_at_core_block_height: >::ffi_to_opt(obj.created_at_core_block_height), + updated_at_core_block_height: >::ffi_to_opt(obj.updated_at_core_block_height), + transferred_at_core_block_height: >::ffi_to_opt(obj.transferred_at_core_block_height), + }) + } + } + + impl Drop for dpp_document_v0_DocumentV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.owner_id); + ferment::unbox_any(ffi_ref.properties); + ferment::unbox_any_opt(ffi_ref.revision); + ferment::unbox_any_opt(ffi_ref.created_at); + ferment::unbox_any_opt(ffi_ref.updated_at); + ferment::unbox_any_opt(ffi_ref.transferred_at); + ferment::unbox_any_opt(ffi_ref.created_at_block_height); + ferment::unbox_any_opt(ffi_ref.updated_at_block_height); + ferment::unbox_any_opt(ffi_ref.transferred_at_block_height); + ferment::unbox_any_opt(ffi_ref.created_at_core_block_height); + ferment::unbox_any_opt(ffi_ref.updated_at_core_block_height); + ferment::unbox_any_opt(ffi_ref.transferred_at_core_block_height); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_ctor<>(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, properties: *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value, revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision, created_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, updated_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, transferred_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, created_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, updated_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, transferred_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, created_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, updated_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, transferred_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight) -> *mut dpp_document_v0_DocumentV0 { ferment::boxed(dpp_document_v0_DocumentV0 { id, owner_id, properties, revision, created_at, updated_at, transferred_at, created_at_block_height, updated_at_block_height, transferred_at_block_height, created_at_core_block_height, updated_at_core_block_height, transferred_at_core_block_height }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_destroy<>(ffi: *mut dpp_document_v0_DocumentV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_owner_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_properties<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value { (*obj).properties } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_revision<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_created_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).created_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_updated_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).updated_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_transferred_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).transferred_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_created_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).created_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_updated_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).updated_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_transferred_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).transferred_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_created_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).created_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_updated_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).updated_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_transferred_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).transferred_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_owner_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_properties<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value { (*obj).properties } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_revision<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_created_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).created_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_updated_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).updated_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_transferred_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).transferred_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_created_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).created_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_updated_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).updated_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_transferred_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).transferred_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_created_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).created_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_updated_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).updated_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_transferred_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).transferred_at_core_block_height } + } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod prelude { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`TimestampMillis`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_TimestampMillis(u64); + + impl ferment::FFIConversionFrom for dpp_prelude_TimestampMillis { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_TimestampMillis) -> dpp::prelude::TimestampMillis { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_TimestampMillis { unsafe fn ffi_to_const(obj: dpp::prelude::TimestampMillis) -> *const dpp_prelude_TimestampMillis { ferment::boxed(dpp_prelude_TimestampMillis(obj)) } } + + impl Drop for dpp_prelude_TimestampMillis { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_ctor<>(o_0: u64) -> *mut dpp_prelude_TimestampMillis { ferment::boxed(dpp_prelude_TimestampMillis(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_destroy<>(ffi: *mut dpp_prelude_TimestampMillis) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_get_0<>(obj: *const dpp_prelude_TimestampMillis) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_set_0<>(obj: *const dpp_prelude_TimestampMillis) -> u64 { (*obj).0 } + + #[doc = "FFI-representation of the [`Revision`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_Revision(u64); + + impl ferment::FFIConversionFrom for dpp_prelude_Revision { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_Revision) -> dpp::prelude::Revision { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_Revision { unsafe fn ffi_to_const(obj: dpp::prelude::Revision) -> *const dpp_prelude_Revision { ferment::boxed(dpp_prelude_Revision(obj)) } } + + impl Drop for dpp_prelude_Revision { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_ctor<>(o_0: u64) -> *mut dpp_prelude_Revision { ferment::boxed(dpp_prelude_Revision(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_destroy<>(ffi: *mut dpp_prelude_Revision) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_get_0<>(obj: *const dpp_prelude_Revision) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_set_0<>(obj: *const dpp_prelude_Revision) -> u64 { (*obj).0 } + + #[doc = "FFI-representation of the [`BlockHeight`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_BlockHeight(u64); + + impl ferment::FFIConversionFrom for dpp_prelude_BlockHeight { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_BlockHeight) -> dpp::prelude::BlockHeight { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_BlockHeight { unsafe fn ffi_to_const(obj: dpp::prelude::BlockHeight) -> *const dpp_prelude_BlockHeight { ferment::boxed(dpp_prelude_BlockHeight(obj)) } } + + impl Drop for dpp_prelude_BlockHeight { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_ctor<>(o_0: u64) -> *mut dpp_prelude_BlockHeight { ferment::boxed(dpp_prelude_BlockHeight(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_destroy<>(ffi: *mut dpp_prelude_BlockHeight) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_get_0<>(obj: *const dpp_prelude_BlockHeight) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_set_0<>(obj: *const dpp_prelude_BlockHeight) -> u64 { (*obj).0 } + + #[doc = "FFI-representation of the [`CoreBlockHeight`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_CoreBlockHeight(u32); + + impl ferment::FFIConversionFrom for dpp_prelude_CoreBlockHeight { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_CoreBlockHeight) -> dpp::prelude::CoreBlockHeight { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_CoreBlockHeight { unsafe fn ffi_to_const(obj: dpp::prelude::CoreBlockHeight) -> *const dpp_prelude_CoreBlockHeight { ferment::boxed(dpp_prelude_CoreBlockHeight(obj)) } } + + impl Drop for dpp_prelude_CoreBlockHeight { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_ctor<>(o_0: u32) -> *mut dpp_prelude_CoreBlockHeight { ferment::boxed(dpp_prelude_CoreBlockHeight(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_destroy<>(ffi: *mut dpp_prelude_CoreBlockHeight) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_get_0<>(obj: *const dpp_prelude_CoreBlockHeight) -> u32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_set_0<>(obj: *const dpp_prelude_CoreBlockHeight) -> u32 { (*obj).0 } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod identity_nonce { use crate as dash_sdk_bindings; } + + pub mod identity_public_key { + use crate as dash_sdk_bindings; + + pub mod key_type { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`KeyType`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_key_type_KeyType { ECDSA_SECP256K1 = 0, BLS12_381 = 1, ECDSA_HASH160 = 2, BIP13_SCRIPT_HASH = 3, EDDSA_25519_HASH160 = 4 } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_key_type_KeyType { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_key_type_KeyType) -> dpp::identity::identity_public_key::key_type::KeyType { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1 => dpp::identity::identity_public_key::key_type::KeyType::ECDSA_SECP256K1, + dpp_identity_identity_public_key_key_type_KeyType::BLS12_381 => dpp::identity::identity_public_key::key_type::KeyType::BLS12_381, + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160 => dpp::identity::identity_public_key::key_type::KeyType::ECDSA_HASH160, + dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH => dpp::identity::identity_public_key::key_type::KeyType::BIP13_SCRIPT_HASH, + dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160 => dpp::identity::identity_public_key::key_type::KeyType::EDDSA_25519_HASH160 + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_key_type_KeyType { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::key_type::KeyType) -> *const dpp_identity_identity_public_key_key_type_KeyType { + ferment::boxed(match obj { + dpp::identity::identity_public_key::key_type::KeyType::ECDSA_SECP256K1 => dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1, + dpp::identity::identity_public_key::key_type::KeyType::BLS12_381 => dpp_identity_identity_public_key_key_type_KeyType::BLS12_381, + dpp::identity::identity_public_key::key_type::KeyType::ECDSA_HASH160 => dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160, + dpp::identity::identity_public_key::key_type::KeyType::BIP13_SCRIPT_HASH => dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH, + dpp::identity::identity_public_key::key_type::KeyType::EDDSA_25519_HASH160 => dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_key_type_KeyType { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1 => {} + dpp_identity_identity_public_key_key_type_KeyType::BLS12_381 => {} + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160 => {} + dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH => {} + dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160 => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_ECDSA_SECP256K1_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_BLS12_381_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::BLS12_381 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_ECDSA_HASH160_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_BIP13_SCRIPT_HASH_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_EDDSA_25519_HASH160_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_destroy<>(ffi: *mut dpp_identity_identity_public_key_key_type_KeyType) { ferment::unbox_any(ffi); } + } + + pub mod conversion { + use crate as dash_sdk_bindings; + + #[cfg(feature = "platform-value")] + pub mod platform_value { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "json-object")] + pub mod json { + use crate as dash_sdk_bindings; + } + } + + #[doc = "FFI-representation of the [`KeyID`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_KeyID(u32); + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_KeyID { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_KeyID) -> dpp::identity::identity_public_key::KeyID { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_KeyID { unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::KeyID) -> *const dpp_identity_identity_public_key_KeyID { ferment::boxed(dpp_identity_identity_public_key_KeyID(obj)) } } + + impl Drop for dpp_identity_identity_public_key_KeyID { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_ctor<>(o_0: u32) -> *mut dpp_identity_identity_public_key_KeyID { ferment::boxed(dpp_identity_identity_public_key_KeyID(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_destroy<>(ffi: *mut dpp_identity_identity_public_key_KeyID) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_get_0<>(obj: *const dpp_identity_identity_public_key_KeyID) -> u32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_set_0<>(obj: *const dpp_identity_identity_public_key_KeyID) -> u32 { (*obj).0 } + + #[doc = "FFI-representation of the [`TimestampMillis`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_TimestampMillis(u64); + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_TimestampMillis { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_TimestampMillis) -> dpp::identity::identity_public_key::TimestampMillis { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_TimestampMillis { unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::TimestampMillis) -> *const dpp_identity_identity_public_key_TimestampMillis { ferment::boxed(dpp_identity_identity_public_key_TimestampMillis(obj)) } } + + impl Drop for dpp_identity_identity_public_key_TimestampMillis { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_ctor<>(o_0: u64) -> *mut dpp_identity_identity_public_key_TimestampMillis { ferment::boxed(dpp_identity_identity_public_key_TimestampMillis(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_destroy<>(ffi: *mut dpp_identity_identity_public_key_TimestampMillis) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_get_0<>(obj: *const dpp_identity_identity_public_key_TimestampMillis) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_set_0<>(obj: *const dpp_identity_identity_public_key_TimestampMillis) -> u64 { (*obj).0 } + + pub mod purpose { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Purpose`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_purpose_Purpose { AUTHENTICATION = 0, ENCRYPTION = 1, DECRYPTION = 2, TRANSFER = 3, SYSTEM = 4, VOTING = 5, OWNER = 6 } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_purpose_Purpose { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_purpose_Purpose) -> dpp::identity::identity_public_key::purpose::Purpose { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION => dpp::identity::identity_public_key::purpose::Purpose::AUTHENTICATION, + dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION => dpp::identity::identity_public_key::purpose::Purpose::ENCRYPTION, + dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION => dpp::identity::identity_public_key::purpose::Purpose::DECRYPTION, + dpp_identity_identity_public_key_purpose_Purpose::TRANSFER => dpp::identity::identity_public_key::purpose::Purpose::TRANSFER, + dpp_identity_identity_public_key_purpose_Purpose::SYSTEM => dpp::identity::identity_public_key::purpose::Purpose::SYSTEM, + dpp_identity_identity_public_key_purpose_Purpose::VOTING => dpp::identity::identity_public_key::purpose::Purpose::VOTING, + dpp_identity_identity_public_key_purpose_Purpose::OWNER => dpp::identity::identity_public_key::purpose::Purpose::OWNER + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_purpose_Purpose { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::purpose::Purpose) -> *const dpp_identity_identity_public_key_purpose_Purpose { + ferment::boxed(match obj { + dpp::identity::identity_public_key::purpose::Purpose::AUTHENTICATION => dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION, + dpp::identity::identity_public_key::purpose::Purpose::ENCRYPTION => dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION, + dpp::identity::identity_public_key::purpose::Purpose::DECRYPTION => dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION, + dpp::identity::identity_public_key::purpose::Purpose::TRANSFER => dpp_identity_identity_public_key_purpose_Purpose::TRANSFER, + dpp::identity::identity_public_key::purpose::Purpose::SYSTEM => dpp_identity_identity_public_key_purpose_Purpose::SYSTEM, + dpp::identity::identity_public_key::purpose::Purpose::VOTING => dpp_identity_identity_public_key_purpose_Purpose::VOTING, + dpp::identity::identity_public_key::purpose::Purpose::OWNER => dpp_identity_identity_public_key_purpose_Purpose::OWNER, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_purpose_Purpose { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION => {} + dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION => {} + dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION => {} + dpp_identity_identity_public_key_purpose_Purpose::TRANSFER => {} + dpp_identity_identity_public_key_purpose_Purpose::SYSTEM => {} + dpp_identity_identity_public_key_purpose_Purpose::VOTING => {} + dpp_identity_identity_public_key_purpose_Purpose::OWNER => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_AUTHENTICATION_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_ENCRYPTION_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_DECRYPTION_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_TRANSFER_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::TRANSFER {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_SYSTEM_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::SYSTEM {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_VOTING_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::VOTING {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_OWNER_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::OWNER {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_destroy<>(ffi: *mut dpp_identity_identity_public_key_purpose_Purpose) { ferment::unbox_any(ffi); } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + pub mod methods { use crate as dash_sdk_bindings; } + + #[doc = "FFI-representation of the [`IdentityPublicKeyV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + pub id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, + pub purpose: *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose, + pub security_level: *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel, + pub contract_bounds: *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds, + pub key_type: *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType, + pub read_only: bool, + pub data: *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData, + pub disabled_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> dpp::identity::identity_public_key::v0::IdentityPublicKeyV0 { + let ffi_ref = &*ffi; + dpp::identity::identity_public_key::v0::IdentityPublicKeyV0 { + id: >::ffi_from(ffi_ref.id), + purpose: >::ffi_from(ffi_ref.purpose), + security_level: >::ffi_from(ffi_ref.security_level), + contract_bounds: >::ffi_from_opt(ffi_ref.contract_bounds), + key_type: >::ffi_from(ffi_ref.key_type), + read_only: ffi_ref.read_only, + data: >::ffi_from(ffi_ref.data), + disabled_at: >::ffi_from_opt(ffi_ref.disabled_at), + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::v0::IdentityPublicKeyV0) -> *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + ferment::boxed(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + id: >::ffi_to(obj.id), + purpose: >::ffi_to(obj.purpose), + security_level: >::ffi_to(obj.security_level), + contract_bounds: >::ffi_to_opt(obj.contract_bounds), + key_type: >::ffi_to(obj.key_type), + read_only: obj.read_only, + data: >::ffi_to(obj.data), + disabled_at: >::ffi_to_opt(obj.disabled_at), + }) + } + } + + impl Drop for dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.purpose); + ferment::unbox_any(ffi_ref.security_level); + ferment::unbox_any_opt(ffi_ref.contract_bounds); + ferment::unbox_any(ffi_ref.key_type); + ; + ferment::unbox_any(ffi_ref.data); + ferment::unbox_any_opt(ffi_ref.disabled_at); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_ctor<>(id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, purpose: *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose, security_level: *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel, contract_bounds: *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds, key_type: *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType, read_only: bool, data: *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData, disabled_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis) -> *mut dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { ferment::boxed(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { id, purpose, security_level, contract_bounds, key_type, read_only, data, disabled_at }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_destroy<>(ffi: *mut dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_id<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_purpose<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose { (*obj).purpose } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_security_level<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel { (*obj).security_level } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_contract_bounds<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds { (*obj).contract_bounds } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_key_type<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType { (*obj).key_type } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_read_only<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> bool { (*obj).read_only } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_data<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData { (*obj).data } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_disabled_at<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).disabled_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_id<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_purpose<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose { (*obj).purpose } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_security_level<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel { (*obj).security_level } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_contract_bounds<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds { (*obj).contract_bounds } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_key_type<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType { (*obj).key_type } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_read_only<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> bool { (*obj).read_only } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_data<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData { (*obj).data } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_disabled_at<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).disabled_at } + + pub mod conversion { use crate as dash_sdk_bindings; } + } + + pub mod security_level { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`SecurityLevel`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_security_level_SecurityLevel { MASTER = 0, CRITICAL = 1, HIGH = 2, MEDIUM = 3 } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_security_level_SecurityLevel { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_security_level_SecurityLevel) -> dpp::identity::identity_public_key::security_level::SecurityLevel { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER => dpp::identity::identity_public_key::security_level::SecurityLevel::MASTER, + dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL => dpp::identity::identity_public_key::security_level::SecurityLevel::CRITICAL, + dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH => dpp::identity::identity_public_key::security_level::SecurityLevel::HIGH, + dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM => dpp::identity::identity_public_key::security_level::SecurityLevel::MEDIUM + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_security_level_SecurityLevel { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::security_level::SecurityLevel) -> *const dpp_identity_identity_public_key_security_level_SecurityLevel { + ferment::boxed(match obj { + dpp::identity::identity_public_key::security_level::SecurityLevel::MASTER => dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER, + dpp::identity::identity_public_key::security_level::SecurityLevel::CRITICAL => dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL, + dpp::identity::identity_public_key::security_level::SecurityLevel::HIGH => dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH, + dpp::identity::identity_public_key::security_level::SecurityLevel::MEDIUM => dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_security_level_SecurityLevel { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER => {} + dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL => {} + dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH => {} + dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_MASTER_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_CRITICAL_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_HIGH_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_MEDIUM_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_destroy<>(ffi: *mut dpp_identity_identity_public_key_security_level_SecurityLevel) { ferment::unbox_any(ffi); } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod contract_bounds { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ContractBounds`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_contract_bounds_ContractBounds { SingleContract { id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier }, SingleContractDocumentType { id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_name: *mut std::os::raw::c_char } } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_contract_bounds_ContractBounds { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_contract_bounds_ContractBounds) -> dpp::identity::identity_public_key::contract_bounds::ContractBounds { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id } => dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContract { id: >::ffi_from(*id) }, + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id, document_type_name } => dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContractDocumentType { id: >::ffi_from(*id), document_type_name: >::ffi_from(*document_type_name) } + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_contract_bounds_ContractBounds { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::contract_bounds::ContractBounds) -> *const dpp_identity_identity_public_key_contract_bounds_ContractBounds { + ferment::boxed(match obj { + dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContract { id } => dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id: >::ffi_to(id) }, + dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContractDocumentType { id, document_type_name } => dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id: >::ffi_to(id), document_type_name: >::ffi_to(document_type_name) }, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_contract_bounds_ContractBounds { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id } => { ferment::unbox_any(*id); } + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id, document_type_name } => { + ferment::unbox_any(*id); + ; + ferment::unbox_string(*document_type_name); + } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_contract_bounds_ContractBounds_SingleContract_ctor(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut dpp_identity_identity_public_key_contract_bounds_ContractBounds { ferment::boxed(dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_contract_bounds_ContractBounds_SingleContractDocumentType_ctor(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_name: *mut std::os::raw::c_char) -> *mut dpp_identity_identity_public_key_contract_bounds_ContractBounds { ferment::boxed(dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id, document_type_name }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_contract_bounds_ContractBounds_destroy<>(ffi: *mut dpp_identity_identity_public_key_contract_bounds_ContractBounds) { ferment::unbox_any(ffi); } + } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod hash { use crate as dash_sdk_bindings; } + } + + #[doc = "FFI-representation of the [`KeyCount`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_KeyCount(*mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID); + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_KeyCount { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_KeyCount) -> dpp::identity::identity_public_key::KeyCount { + let ffi_ref = &*ffi; + >::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_KeyCount { unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::KeyCount) -> *const dpp_identity_identity_public_key_KeyCount { ferment::boxed(dpp_identity_identity_public_key_KeyCount(>::ffi_to(obj))) } } + + impl Drop for dpp_identity_identity_public_key_KeyCount { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_ctor<>(o_0: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID) -> *mut dpp_identity_identity_public_key_KeyCount { ferment::boxed(dpp_identity_identity_public_key_KeyCount(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_destroy<>(ffi: *mut dpp_identity_identity_public_key_KeyCount) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_get_0<>(obj: *const dpp_identity_identity_public_key_KeyCount) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_set_0<>(obj: *const dpp_identity_identity_public_key_KeyCount) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).0 } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`IdentityPublicKey`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_IdentityPublicKey { V0(*mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_IdentityPublicKey) -> dpp::identity::identity_public_key::IdentityPublicKey { + let ffi_ref = &*ffi; + match ffi_ref { dpp_identity_identity_public_key_IdentityPublicKey::V0(o_0) => dpp::identity::identity_public_key::IdentityPublicKey::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::IdentityPublicKey) -> *const dpp_identity_identity_public_key_IdentityPublicKey { + ferment::boxed(match obj { + dpp::identity::identity_public_key::IdentityPublicKey::V0(o_0) => dpp_identity_identity_public_key_IdentityPublicKey::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_IdentityPublicKey { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_IdentityPublicKey::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_IdentityPublicKey_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(dpp_identity_identity_public_key_IdentityPublicKey::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_IdentityPublicKey_destroy<>(ffi: *mut dpp_identity_identity_public_key_IdentityPublicKey) { ferment::unbox_any(ffi); } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Identity`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_Identity { V0(*mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0) } + + impl ferment::FFIConversionFrom for dpp_identity_identity_Identity { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_Identity) -> dpp::identity::identity::Identity { + let ffi_ref = &*ffi; + match ffi_ref { dpp_identity_identity_Identity::V0(o_0) => dpp::identity::identity::Identity::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_Identity { + unsafe fn ffi_to_const(obj: dpp::identity::identity::Identity) -> *const dpp_identity_identity_Identity { + ferment::boxed(match obj { + dpp::identity::identity::Identity::V0(o_0) => dpp_identity_identity_Identity::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_Identity { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_Identity::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_Identity_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0) -> *mut dpp_identity_identity_Identity { ferment::boxed(dpp_identity_identity_Identity::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_Identity_destroy<>(ffi: *mut dpp_identity_identity_Identity) { ferment::unbox_any(ffi); } + } + + pub mod credits_converter { use crate as dash_sdk_bindings; } + + pub mod conversion { + use crate as dash_sdk_bindings; + + #[cfg(feature = "identity-cbor-conversion")] + pub mod cbor { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "identity-value-conversion")] + pub mod platform_value { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "identity-json-conversion")] + pub mod json { + use crate as dash_sdk_bindings; + } + } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod create_basic_identity { use crate as dash_sdk_bindings; } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`IdentityV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_v0_IdentityV0 { + pub id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub public_keys: *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey, + pub balance: u64, + pub revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision, + } + + impl ferment::FFIConversionFrom for dpp_identity_v0_IdentityV0 { + unsafe fn ffi_from_const(ffi: *const dpp_identity_v0_IdentityV0) -> dpp::identity::v0::IdentityV0 { + let ffi_ref = &*ffi; + dpp::identity::v0::IdentityV0 { id: >::ffi_from(ffi_ref.id), public_keys: >>::ffi_from(ffi_ref.public_keys), balance: ffi_ref.balance, revision: >::ffi_from(ffi_ref.revision) } + } + } + + impl ferment::FFIConversionTo for dpp_identity_v0_IdentityV0 { unsafe fn ffi_to_const(obj: dpp::identity::v0::IdentityV0) -> *const dpp_identity_v0_IdentityV0 { ferment::boxed(dpp_identity_v0_IdentityV0 { id: >::ffi_to(obj.id), public_keys: >>::ffi_to(obj.public_keys), balance: obj.balance, revision: >::ffi_to(obj.revision) }) } } + + impl Drop for dpp_identity_v0_IdentityV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.public_keys); + ; + ferment::unbox_any(ffi_ref.revision); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_ctor<>(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, public_keys: *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey, balance: u64, revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision) -> *mut dpp_identity_v0_IdentityV0 { ferment::boxed(dpp_identity_v0_IdentityV0 { id, public_keys, balance, revision }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_destroy<>(ffi: *mut dpp_identity_v0_IdentityV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_id<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_public_keys<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { (*obj).public_keys } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_balance<>(obj: *const dpp_identity_v0_IdentityV0) -> u64 { (*obj).balance } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_revision<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_id<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_public_keys<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { (*obj).public_keys } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_balance<>(obj: *const dpp_identity_v0_IdentityV0) -> u64 { (*obj).balance } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_revision<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + pub mod conversion { use crate as dash_sdk_bindings; } + } + + pub mod state_transition { + use crate as dash_sdk_bindings; + + pub mod asset_lock_proof { + use crate as dash_sdk_bindings; + + pub mod validate_asset_lock_transaction_structure { use crate as dash_sdk_bindings; } + + pub mod chain { use crate as dash_sdk_bindings; } + + pub mod instant { + use crate as dash_sdk_bindings; + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + } + } + } + + pub mod errors { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "fixtures-and-mocks")] + pub mod tests { + use crate as dash_sdk_bindings; + + pub mod fixtures { use crate as dash_sdk_bindings; } + } + + pub mod util { + use crate as dash_sdk_bindings; + + #[cfg(feature = "cbor")] + pub mod cbor_value { + use crate as dash_sdk_bindings; + + pub mod convert { use crate as dash_sdk_bindings; } + + pub mod canonical { use crate as dash_sdk_bindings; } + } + + pub mod json_schema { use crate as dash_sdk_bindings; } + + pub mod strings { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod json_value { + use crate as dash_sdk_bindings; + + pub mod remove_path { use crate as dash_sdk_bindings; } + + pub mod insert_with_path { use crate as dash_sdk_bindings; } + } + + pub mod json_path { use crate as dash_sdk_bindings; } + + pub mod deserializer { use crate as dash_sdk_bindings; } + } + + pub mod core_subsidy { + use crate as dash_sdk_bindings; + + pub mod epoch_core_reward_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "system_contracts")] + pub mod system_data_contracts { + use crate as dash_sdk_bindings; + } + + pub mod data_contract { + use crate as dash_sdk_bindings; + + pub mod serialized_version { use crate as dash_sdk_bindings; } + + #[cfg(any(feature = "state-transitions", feature = "factories"))] + pub mod created_data_contract { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod group { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod v1 { + use crate as dash_sdk_bindings; + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod schema { use crate as dash_sdk_bindings; } + } + + pub mod conversion { use crate as dash_sdk_bindings; } + } + + pub mod document_type { + use crate as dash_sdk_bindings; + + pub mod token_costs { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod class_methods { + use crate as dash_sdk_bindings; + + pub mod try_from_schema { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod v1 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + pub mod create_document_types_from_document_schemas { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod schema { + use crate as dash_sdk_bindings; + + pub mod enrich_with_base_schema { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_schema_compatibility { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "validation")] + pub mod recursive_schema_validator { + use crate as dash_sdk_bindings; + + pub mod traversal_validator { use crate as dash_sdk_bindings; } + } + + pub mod find_identifier_and_binary_paths { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_max_depth { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod methods { + use crate as dash_sdk_bindings; + + #[cfg(feature = "validation")] + pub mod validate_update { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + pub mod property { use crate as dash_sdk_bindings; } + + pub mod index_level { use crate as dash_sdk_bindings; } + + pub mod v1 { use crate as dash_sdk_bindings; } + + pub mod index { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod change_control_rules { use crate as dash_sdk_bindings; } + + pub mod associated_token { + use crate as dash_sdk_bindings; + + pub mod token_marketplace_rules { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_distribution_rules { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_perpetual_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod reward_distribution_moment { use crate as dash_sdk_bindings; } + + pub mod reward_distribution_type { + use crate as dash_sdk_bindings; + + pub mod validation { use crate as dash_sdk_bindings; } + } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod distribution_function { + use crate as dash_sdk_bindings; + + pub mod evaluate_interval { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod validation { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod evaluate { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + pub mod token_pre_programmed_distribution { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod token_configuration_convention { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_localizations { use crate as dash_sdk_bindings; } + } + } + + pub mod token_keeps_history_rules { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod token_configuration { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_token_configuration_update { use crate as dash_sdk_bindings; } + + pub mod apply_token_configuration_item { use crate as dash_sdk_bindings; } + + pub mod can_apply_token_configuration_item { use crate as dash_sdk_bindings; } + + pub mod validate_token_configuration_groups_exist { use crate as dash_sdk_bindings; } + + pub mod authorized_action_takers_for_configuration_item { use crate as dash_sdk_bindings; } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod token_configuration_localization { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any( + feature = "data-contract-value-conversion", + feature = "data-contract-cbor-conversion", + feature = "data-contract-json-conversion" + ))] + pub mod conversion { + use crate as dash_sdk_bindings; + + #[cfg(feature = "data-contract-cbor-conversion")] + pub mod cbor { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "data-contract-value-conversion")] + pub mod value { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "data-contract-json-conversion")] + pub mod json { + use crate as dash_sdk_bindings; + } + } + + pub mod extra { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod drive_api_tests { + use crate as dash_sdk_bindings; + } + } + + pub mod storage_requirements { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod registration_cost { use crate as dash_sdk_bindings; } + + pub mod schema { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_document { + use crate as dash_sdk_bindings; + } + + pub mod equal_ignoring_time_based_fields { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_update { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(feature = "validation")] + pub mod validate_groups { + use crate as dash_sdk_bindings; + } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + pub mod data_contract { use crate as dash_sdk_bindings; } + + pub mod conversion { use crate as dash_sdk_bindings; } + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod schema { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "factories")] + pub mod factory { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod config { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_update { use crate as dash_sdk_bindings; } + } + } + + pub mod errors { use crate as dash_sdk_bindings; } + } + } + + pub mod drive_proof_verifier { + use crate as dash_sdk_bindings; + + pub mod types { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`VotePollsGroupedByTimestamp`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_VotePollsGroupedByTimestamp(*mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_VotePollsGroupedByTimestamp { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> drive_proof_verifier::types::VotePollsGroupedByTimestamp { + let ffi_ref = &*ffi; + drive_proof_verifier::types::VotePollsGroupedByTimestamp()>>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_VotePollsGroupedByTimestamp { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::VotePollsGroupedByTimestamp) -> *const drive_proof_verifier_types_VotePollsGroupedByTimestamp { ferment::boxed(drive_proof_verifier_types_VotePollsGroupedByTimestamp()>>>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_VotePollsGroupedByTimestamp { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_ctor<>(o_0: *mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> *mut drive_proof_verifier_types_VotePollsGroupedByTimestamp { ferment::boxed(drive_proof_verifier_types_VotePollsGroupedByTimestamp(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_destroy<>(ffi: *mut drive_proof_verifier_types_VotePollsGroupedByTimestamp) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_get_0<>(obj: *const drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> *mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_set_0<>(obj: *const drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> *mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { (*obj).0 } + + #[doc = "FFI-representation of the [`ContestedResources`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_ContestedResources(*mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_ContestedResources { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_ContestedResources) -> drive_proof_verifier::types::ContestedResources { + let ffi_ref = &*ffi; + drive_proof_verifier::types::ContestedResources(>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_ContestedResources { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::ContestedResources) -> *const drive_proof_verifier_types_ContestedResources { ferment::boxed(drive_proof_verifier_types_ContestedResources(>>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_ContestedResources { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_ctor<>(o_0: *mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource) -> *mut drive_proof_verifier_types_ContestedResources { ferment::boxed(drive_proof_verifier_types_ContestedResources(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_destroy<>(ffi: *mut drive_proof_verifier_types_ContestedResources) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_get_0<>(obj: *const drive_proof_verifier_types_ContestedResources) -> *mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_set_0<>(obj: *const drive_proof_verifier_types_ContestedResources) -> *mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource { (*obj).0 } + + #[doc = "FFI-representation of the [`Contenders`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_Contenders { + pub winner: *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo, + pub contenders: *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument, + pub abstain_vote_tally: *mut u32, + pub lock_vote_tally: *mut u32, + } + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_Contenders { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_Contenders) -> drive_proof_verifier::types::Contenders { + let ffi_ref = &*ffi; + drive_proof_verifier::types::Contenders { + winner: >::ffi_from_opt(ffi_ref.winner), + contenders: >>::ffi_from(ffi_ref.contenders), + abstain_vote_tally: ferment::from_opt_primitive(ffi_ref.abstain_vote_tally), + lock_vote_tally: ferment::from_opt_primitive(ffi_ref.lock_vote_tally), + } + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_Contenders { + unsafe fn ffi_to_const(obj: drive_proof_verifier::types::Contenders) -> *const drive_proof_verifier_types_Contenders { + ferment::boxed(drive_proof_verifier_types_Contenders { winner: >::ffi_to_opt(obj.winner), contenders: >>::ffi_to(obj.contenders), abstain_vote_tally: ferment::to_opt_primitive(obj.abstain_vote_tally), lock_vote_tally: ferment::to_opt_primitive(obj.lock_vote_tally) }) + } + } + + impl Drop for drive_proof_verifier_types_Contenders { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any_opt(ffi_ref.winner); + ferment::unbox_any(ffi_ref.contenders); + ferment::destroy_opt_primitive(ffi_ref.abstain_vote_tally); + ferment::destroy_opt_primitive(ffi_ref.lock_vote_tally); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_ctor<>(winner: *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo, contenders: *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument, abstain_vote_tally: *mut u32, lock_vote_tally: *mut u32) -> *mut drive_proof_verifier_types_Contenders { ferment::boxed(drive_proof_verifier_types_Contenders { winner, contenders, abstain_vote_tally, lock_vote_tally }) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_destroy<>(ffi: *mut drive_proof_verifier_types_Contenders) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_winner<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { (*obj).winner } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_contenders<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { (*obj).contenders } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_abstain_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).abstain_vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_lock_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).lock_vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_winner<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { (*obj).winner } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_contenders<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { (*obj).contenders } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_abstain_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).abstain_vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_lock_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).lock_vote_tally } + + #[doc = "FFI-representation of the [`Voters`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_Voters(*mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_Voters { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_Voters) -> drive_proof_verifier::types::Voters { + let ffi_ref = &*ffi; + drive_proof_verifier::types::Voters(>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_Voters { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::Voters) -> *const drive_proof_verifier_types_Voters { ferment::boxed(drive_proof_verifier_types_Voters(>>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_Voters { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_ctor<>(o_0: *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter) -> *mut drive_proof_verifier_types_Voters { ferment::boxed(drive_proof_verifier_types_Voters(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_destroy<>(ffi: *mut drive_proof_verifier_types_Voters) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_get_0<>(obj: *const drive_proof_verifier_types_Voters) -> *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_set_0<>(obj: *const drive_proof_verifier_types_Voters) -> *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter { (*obj).0 } + + #[doc = "FFI-representation of the [`ResourceVotesByIdentity`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_ResourceVotesByIdentity(*mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_ResourceVotesByIdentity { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_ResourceVotesByIdentity) -> drive_proof_verifier::types::ResourceVotesByIdentity { + let ffi_ref = &*ffi; + >>>::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_ResourceVotesByIdentity { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::ResourceVotesByIdentity) -> *const drive_proof_verifier_types_ResourceVotesByIdentity { ferment::boxed(drive_proof_verifier_types_ResourceVotesByIdentity(>>>::ffi_to(obj))) } } + + impl Drop for drive_proof_verifier_types_ResourceVotesByIdentity { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_ctor<>(o_0: *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote) -> *mut drive_proof_verifier_types_ResourceVotesByIdentity { ferment::boxed(drive_proof_verifier_types_ResourceVotesByIdentity(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_destroy<>(ffi: *mut drive_proof_verifier_types_ResourceVotesByIdentity) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_get_0<>(obj: *const drive_proof_verifier_types_ResourceVotesByIdentity) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_set_0<>(obj: *const drive_proof_verifier_types_ResourceVotesByIdentity) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { (*obj).0 } + + #[doc = "FFI-representation of the [`ContestedResource`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_ContestedResource(*mut crate::fermented::types::platform_value::platform_value_Value); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_ContestedResource { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_ContestedResource) -> drive_proof_verifier::types::ContestedResource { + let ffi_ref = &*ffi; + drive_proof_verifier::types::ContestedResource(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_ContestedResource { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::ContestedResource) -> *const drive_proof_verifier_types_ContestedResource { ferment::boxed(drive_proof_verifier_types_ContestedResource(>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_ContestedResource { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_ctor<>(o_0: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut drive_proof_verifier_types_ContestedResource { ferment::boxed(drive_proof_verifier_types_ContestedResource(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_destroy<>(ffi: *mut drive_proof_verifier_types_ContestedResource) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_get_0<>(obj: *const drive_proof_verifier_types_ContestedResource) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_set_0<>(obj: *const drive_proof_verifier_types_ContestedResource) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).0 } + + #[doc = "FFI-representation of the [`Voter`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_Voter(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_Voter { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_Voter) -> drive_proof_verifier::types::Voter { + let ffi_ref = &*ffi; + drive_proof_verifier::types::Voter(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_Voter { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::Voter) -> *const drive_proof_verifier_types_Voter { ferment::boxed(drive_proof_verifier_types_Voter(>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_Voter { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_ctor<>(o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut drive_proof_verifier_types_Voter { ferment::boxed(drive_proof_verifier_types_Voter(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_destroy<>(ffi: *mut drive_proof_verifier_types_Voter) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_get_0<>(obj: *const drive_proof_verifier_types_Voter) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_set_0<>(obj: *const drive_proof_verifier_types_Voter) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).0 } + } + + pub mod proof { use crate as dash_sdk_bindings; } + } + + pub mod dash_sdk { + use crate as dash_sdk_bindings; + + pub mod error { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod mock { + use crate as dash_sdk_bindings; + + #[cfg(feature = "mocks")] + pub mod sdk { + use crate as dash_sdk_bindings; + } + } + + pub mod sync { use crate as dash_sdk_bindings; } + + pub mod core { use crate as dash_sdk_bindings; } + + pub mod platform { + use crate as dash_sdk_bindings; + + pub mod transition { use crate as dash_sdk_bindings; } + + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod transitions { use crate as dash_sdk_bindings; } + + pub mod builders { use crate as dash_sdk_bindings; } + } + + pub mod documents { + use crate as dash_sdk_bindings; + + pub mod transitions { use crate as dash_sdk_bindings; } + } + + pub mod types { + use crate as dash_sdk_bindings; + + pub mod identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`PublicKeyHash`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dash_sdk_platform_types_identity_PublicKeyHash(*mut crate::fermented::generics::Arr_u8_20); + + impl ferment::FFIConversionFrom for dash_sdk_platform_types_identity_PublicKeyHash { + unsafe fn ffi_from_const(ffi: *const dash_sdk_platform_types_identity_PublicKeyHash) -> dash_sdk::platform::types::identity::PublicKeyHash { + let ffi_ref = &*ffi; + dash_sdk::platform::types::identity::PublicKeyHash(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for dash_sdk_platform_types_identity_PublicKeyHash { unsafe fn ffi_to_const(obj: dash_sdk::platform::types::identity::PublicKeyHash) -> *const dash_sdk_platform_types_identity_PublicKeyHash { ferment::boxed(dash_sdk_platform_types_identity_PublicKeyHash(>::ffi_to(obj.0))) } } + + impl Drop for dash_sdk_platform_types_identity_PublicKeyHash { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_ctor<>(o_0: *mut crate::fermented::generics::Arr_u8_20) -> *mut dash_sdk_platform_types_identity_PublicKeyHash { ferment::boxed(dash_sdk_platform_types_identity_PublicKeyHash(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_destroy<>(ffi: *mut dash_sdk_platform_types_identity_PublicKeyHash) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_get_0<>(obj: *const dash_sdk_platform_types_identity_PublicKeyHash) -> *mut crate::fermented::generics::Arr_u8_20 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_set_0<>(obj: *const dash_sdk_platform_types_identity_PublicKeyHash) -> *mut crate::fermented::generics::Arr_u8_20 { (*obj).0 } + } + } + } + + pub mod sdk { use crate as dash_sdk_bindings; } + } + + pub mod drive { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod state_transition_action { + use crate as dash_sdk_bindings; + + pub mod batch { + use crate as dash_sdk_bindings; + + pub mod batched_transition { + use crate as dash_sdk_bindings; + + pub mod token_transition { + use crate as dash_sdk_bindings; + + pub mod token_claim_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_unfreeze_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_freeze_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_mint_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_base_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_set_price_for_direct_purchase_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_direct_purchase_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_transfer_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_emergency_action_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_destroy_frozen_funds_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_burn_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_config_update_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod document_transition { + use crate as dash_sdk_bindings; + + pub mod document_purchase_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_replace_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_transfer_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_create_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_base_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_delete_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_update_price_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + } + } + + pub mod action_convert_to_operations { + use crate as dash_sdk_bindings; + + pub mod system { use crate as dash_sdk_bindings; } + + pub mod batch { + use crate as dash_sdk_bindings; + + pub mod document { use crate as dash_sdk_bindings; } + + pub mod token { use crate as dash_sdk_bindings; } + } + + pub mod contract { use crate as dash_sdk_bindings; } + + pub mod identity { use crate as dash_sdk_bindings; } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod identity_update { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_create { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_credit_transfer { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_topup { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod masternode_vote { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_credit_withdrawal { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod transformer { use crate as dash_sdk_bindings; } + } + } + + pub mod system { + use crate as dash_sdk_bindings; + + pub mod bump_identity_nonce_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod partially_use_asset_lock_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod bump_identity_data_contract_nonce_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod contract { + use crate as dash_sdk_bindings; + + pub mod data_contract_create { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod data_contract_update { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod drive { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod platform_state { + use crate as dash_sdk_bindings; + + pub mod fetch_platform_state_bytes { use crate as dash_sdk_bindings; } + + pub mod store_platform_state_bytes { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod initialization { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod genesis_core_height { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod votes { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod resolved { + use crate as dash_sdk_bindings; + + pub mod votes { + use crate as dash_sdk_bindings; + + pub mod resolved_resource_vote { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + } + + pub mod vote_polls { + use crate as dash_sdk_bindings; + + pub mod contested_document_resource_vote_poll { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod cleanup { + use crate as dash_sdk_bindings; + + pub mod remove_all_votes_given_by_identities { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_top_level_index_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_votes_operations { use crate as dash_sdk_bindings; } + + pub mod remove_specific_votes_given_by_identity { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_end_date_query_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_info_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_contenders_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_documents_operations { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod fetch_identities_voting_for_contenders { use crate as dash_sdk_bindings; } + + pub mod fetch_contested_document_vote_poll_stored_info { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_contested_resource_vote { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod register_identity_vote { use crate as dash_sdk_bindings; } + + pub mod vote_poll { + use crate as dash_sdk_bindings; + + pub mod add_vote_poll_end_date_query_operations { use crate as dash_sdk_bindings; } + } + + pub mod contested_resource { + use crate as dash_sdk_bindings; + + pub mod individual_vote { + use crate as dash_sdk_bindings; + + pub mod register_contested_resource_identity_vote { use crate as dash_sdk_bindings; } + } + + pub mod insert_stored_info_for_contested_resource_vote_poll { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod storage_form { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod setup { + use crate as dash_sdk_bindings; + + pub mod setup_initial_vote_tree_main_structure { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod identity { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod contract_info { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod identity_contract_nonce { + use crate as dash_sdk_bindings; + + pub mod merge_identity_contract_nonce { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_identity_contract_nonce { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_identity_contract_nonce { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod keys { + use crate as dash_sdk_bindings; + + pub mod add_potential_contract_info_for_contract_bounded_key { use crate as dash_sdk_bindings; } + + pub mod refresh_potential_contract_info_key_references { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod withdrawals { + use crate as dash_sdk_bindings; + + pub mod transaction { + use crate as dash_sdk_bindings; + + pub mod index { + use crate as dash_sdk_bindings; + + pub mod add_update_next_withdrawal_transaction_index_operation { use crate as dash_sdk_bindings; } + + pub mod fetch_next_withdrawal_transaction_index { use crate as dash_sdk_bindings; } + } + + pub mod queue { + use crate as dash_sdk_bindings; + + pub mod add_enqueue_untied_withdrawal_transaction_operations { use crate as dash_sdk_bindings; } + + pub mod dequeue_untied_withdrawal_transactions { use crate as dash_sdk_bindings; } + + pub mod remove_broadcasted_withdrawal_transactions_after_completion { use crate as dash_sdk_bindings; } + + pub mod move_broadcasted_withdrawal_transactions_back_to_queue_operations { use crate as dash_sdk_bindings; } + } + } + + pub mod document { + use crate as dash_sdk_bindings; + + pub mod fetch_oldest_withdrawal_documents_by_status { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod find_withdrawal_documents_by_status_and_transaction_indices { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod calculate_current_withdrawal_limit { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + pub mod operations { + use crate as dash_sdk_bindings; + + pub mod update_identity_balance_operation { use crate as dash_sdk_bindings; } + + pub mod insert_identity_balance_operation { use crate as dash_sdk_bindings; } + + pub mod initialize_negative_identity_balance_operation { use crate as dash_sdk_bindings; } + + pub mod merge_identity_nonce_operations { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod update_identity_revision_operation { use crate as dash_sdk_bindings; } + + pub mod initialize_identity_revision_operation { use crate as dash_sdk_bindings; } + + pub mod initialize_identity_nonce_operation { use crate as dash_sdk_bindings; } + + pub mod update_identity_negative_credit_operation { use crate as dash_sdk_bindings; } + } + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod add_to_identity_balance { use crate as dash_sdk_bindings; } + + pub mod add_to_previous_balance { use crate as dash_sdk_bindings; } + + pub mod apply_balance_change_from_fee_to_identity { use crate as dash_sdk_bindings; } + + pub mod re_enable_identity_keys { use crate as dash_sdk_bindings; } + + pub mod add_new_unique_keys_to_identity { use crate as dash_sdk_bindings; } + + pub mod add_new_non_unique_keys_to_identity { use crate as dash_sdk_bindings; } + + pub mod update_identity_revision { use crate as dash_sdk_bindings; } + + pub mod refresh_identity_key_reference_operations { use crate as dash_sdk_bindings; } + + pub mod remove_from_identity_balance { use crate as dash_sdk_bindings; } + + pub mod merge_identity_nonce { use crate as dash_sdk_bindings; } + + pub mod disable_identity_keys { use crate as dash_sdk_bindings; } + + pub mod add_new_keys_to_identity { use crate as dash_sdk_bindings; } + } + + pub mod structs { + use crate as dash_sdk_bindings; + + pub mod add_to_previous_balance_outcome { use crate as dash_sdk_bindings; } + + pub mod apply_balance_change_outcome { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod fetch { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod contract_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_by_public_key_hashes { + use crate as dash_sdk_bindings; + + pub mod fetch_full_identity_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod fetch_full_identities_by_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_id_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_ids_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod fetch_full_identity_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod has_any_of_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod has_non_unique_public_key_hash_already_for_identity { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_ids_by_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod has_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod has_unique_public_key_hash { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod revision { + use crate as dash_sdk_bindings; + + pub mod fetch_identity_revision { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod balance { + use crate as dash_sdk_bindings; + + pub mod fetch_identity_balance { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_balance_include_debt { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_negative_balance { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod nonce { + use crate as dash_sdk_bindings; + + pub mod prove_identity_nonce { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_nonce { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod full_identity { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + pub mod fetch_full_identities { use crate as dash_sdk_bindings; } + + pub mod fetch_full_identity { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod partial_identity { + use crate as dash_sdk_bindings; + + pub mod fetch_identity_keys { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_balance_with_keys { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_revision_with_keys { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_with_balance { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_balance_with_keys_and_revision { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_full_identity_by_non_unique_public_key_hash { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_full_identities { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_identity_ids_by_unique_public_key_hashes { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_full_identities_by_unique_public_key_hashes { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_identity_id_by_unique_public_key_hash { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_full_identity { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_identities_contract_keys { use crate as dash_sdk_bindings; } + + pub mod prove_full_identity_by_unique_public_key_hash { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod for_keys_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod for_balances { use crate as dash_sdk_bindings; } + + pub mod for_update_nonce { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info_group { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info_group_keys { use crate as dash_sdk_bindings; } + + pub mod for_purpose_in_key_reference_tree { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info_group_key_purpose { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info { use crate as dash_sdk_bindings; } + + pub mod for_root_key_reference_tree { use crate as dash_sdk_bindings; } + + pub mod for_update_revision { use crate as dash_sdk_bindings; } + + pub mod for_negative_credit { use crate as dash_sdk_bindings; } + + pub mod for_authentication_keys_security_level_in_key_reference_tree { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod key { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod insert_key_hash_identity_reference { + use crate as dash_sdk_bindings; + + pub mod insert_reference_to_non_unique_key { use crate as dash_sdk_bindings; } + + pub mod insert_reference_to_unique_key { use crate as dash_sdk_bindings; } + + pub mod insert_non_unique_public_key_hash_reference_to_identity { use crate as dash_sdk_bindings; } + + pub mod insert_unique_public_key_hash_reference_to_identity { use crate as dash_sdk_bindings; } + + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_insert_unique_public_key_hash_reference { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_insert_non_unique_public_key_hash_reference { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod create_key_tree_with_keys { use crate as dash_sdk_bindings; } + + pub mod insert_new_non_unique_key { use crate as dash_sdk_bindings; } + + pub mod create_new_identity_key_query_trees { use crate as dash_sdk_bindings; } + + pub mod replace_key_in_storage { use crate as dash_sdk_bindings; } + + pub mod insert_key_to_storage { use crate as dash_sdk_bindings; } + + pub mod insert_new_unique_key { use crate as dash_sdk_bindings; } + + pub mod insert_key_searchable_references { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod fetch { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod fetch_all_identity_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_all_current_identity_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identity_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identities_all_keys { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_identity_keys { use crate as dash_sdk_bindings; } + + pub mod prove_identities_all_keys { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_new_identity { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod balance { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod shared { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod shared_estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_levels_up_to_contract_document_type_excluded { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_levels_up_to_contract { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_contested_document_tree_levels_up_to_contract { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod credit_pools { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod epochs { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod get_finalized_epoch_info { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod get_epochs_protocol_versions { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod start_block { + use crate as dash_sdk_bindings; + + pub mod get_epoch_start_block_core_height { use crate as dash_sdk_bindings; } + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + pub mod get_first_epoch_start_block_info_between_epochs { use crate as dash_sdk_bindings; } + + pub mod get_epoch_start_block_height { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod get_epoch_protocol_version { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod credit_distribution_pools { + use crate as dash_sdk_bindings; + + pub mod add_epoch_processing_credits_for_distribution_operation { use crate as dash_sdk_bindings; } + + pub mod add_epoch_final_info_operation { use crate as dash_sdk_bindings; } + + pub mod get_epoch_fee_multiplier { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_epoch_total_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_epoch_processing_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_storage_credits_for_distribution_for_epochs_in_range { use crate as dash_sdk_bindings; } + + pub mod get_epoch_storage_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod get_epochs_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_epochs_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod proposers { + use crate as dash_sdk_bindings; + + pub mod prove_epoch_proposers { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_epochs_proposer_block_count { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod fetch_epoch_proposers { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod is_epochs_proposers_tree_empty { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove_finalized_epoch_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod operations_factory { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod start_time { + use crate as dash_sdk_bindings; + + pub mod get_epoch_start_time { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod has_epoch_tree_exists { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(feature = "server")] + pub mod storage_fee_distribution_pool { + use crate as dash_sdk_bindings; + + pub mod get_storage_fees_from_distribution_pool { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod operations { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod unpaid_epoch { + use crate as dash_sdk_bindings; + + pub mod get_unpaid_epoch_index { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod pending_epoch_refunds { + use crate as dash_sdk_bindings; + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod add_delete_pending_epoch_refunds_except_specified { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod fetch_and_add_pending_epoch_refunds_to_collection { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod fetch_pending_epoch_refunds { use crate as dash_sdk_bindings; } + } + + pub mod operations { + use crate as dash_sdk_bindings; + + pub mod add_update_pending_epoch_refunds_operations { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(feature = "server")] + pub mod asset_lock { + use crate as dash_sdk_bindings; + + pub mod fetch_asset_lock_outpoint_info { use crate as dash_sdk_bindings; } + + pub mod add_asset_lock_outpoint_operations { use crate as dash_sdk_bindings; } + + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_adding_asset_lock { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod balances { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod remove_from_system_credits { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_to_system_credits { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod calculate_total_credits_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_to_system_credits_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod remove_from_system_credits_operations { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod prefunded_specialized_balances { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod for_prefunded_specialized_balance_update { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod single_balance { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod deduct_from_prefunded_specialized_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod empty_prefunded_specialized_balance_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod deduct_from_prefunded_specialized_balance_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_prefunded_specialized_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod single_balance { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod add_prefunded_specialized_balance_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod empty_prefunded_specialized_balance { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod group { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_new_groups { use crate as dash_sdk_bindings; } + + pub mod add_group_action { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_group_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_group_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_action_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_action_signers { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod fetch_action_signers { use crate as dash_sdk_bindings; } + + pub mod fetch_active_action_info { use crate as dash_sdk_bindings; } + + pub mod fetch_group_info { use crate as dash_sdk_bindings; } + + pub mod fetch_group_infos { use crate as dash_sdk_bindings; } + + pub mod fetch_action_infos { use crate as dash_sdk_bindings; } + + pub mod fetch_action_id_signers_power { use crate as dash_sdk_bindings; } + + pub mod fetch_action_is_closed { use crate as dash_sdk_bindings; } + + pub mod fetch_action_id_info_keep_serialized { use crate as dash_sdk_bindings; } + + pub mod fetch_action_id_has_signer { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod estimated_costs { + use crate as dash_sdk_bindings; + + pub mod for_add_groups { use crate as dash_sdk_bindings; } + + pub mod for_add_group_action { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod protocol_upgrade { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod update_validator_proposed_app_version { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_proved_validator_version_votes { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod remove_validators_proposed_app_versions { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_versions_with_counter { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_proved_versions_with_counter { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_validator_version_votes { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod clear_version_information { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod status { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod fetch_token_statuses { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_token_status { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_token_statuses { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod apply_status { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod freeze { + use crate as dash_sdk_bindings; + } + + pub mod balance { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod remove_from_identity_token_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_identities_token_balances { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove_identity_token_balances { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_identities_token_balances { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_balances { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_to_previous_token_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_balance { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod calculate_total_tokens_balance { + use crate as dash_sdk_bindings; + } + + pub mod contract_info { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove_token_contract_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_token_contract_info { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod mint_many { + use crate as dash_sdk_bindings; + } + + pub mod distribution { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod mark_pre_programmed_release_as_distributed { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod mark_perpetual_release_as_distributed { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod pre_programmed_distribution_last_paid_time_ms { use crate as dash_sdk_bindings; } + + pub mod pre_programmed_distributions { use crate as dash_sdk_bindings; } + + pub mod perpetual_distribution_last_paid_moment { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod add_perpetual_distribution { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_pre_programmed_distribution { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod perpetual_distribution_last_paid_moment { use crate as dash_sdk_bindings; } + + pub mod pre_programmed_distributions { use crate as dash_sdk_bindings; } + } + } + + pub mod info { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod fetch_identities_token_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_identity_token_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove_identities_token_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_info { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod burn { + use crate as dash_sdk_bindings; + } + + pub mod direct_purchase { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod set_direct_purchase_price { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_tokens_direct_purchase_price { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_token_direct_purchase_price { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_tokens_direct_purchase_price { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod unfreeze { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod transfer { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod estimated_costs { + use crate as dash_sdk_bindings; + + pub mod for_token_status_infos { use crate as dash_sdk_bindings; } + + pub mod for_token_total_supply { use crate as dash_sdk_bindings; } + + pub mod for_token_balances { use crate as dash_sdk_bindings; } + + pub mod for_root_token_ms_interval_distribution { use crate as dash_sdk_bindings; } + + pub mod for_token_identity_infos { use crate as dash_sdk_bindings; } + + pub mod for_token_direct_selling_prices { use crate as dash_sdk_bindings; } + + pub mod for_token_contract_infos { use crate as dash_sdk_bindings; } + + pub mod for_token_perpetual_distribution { use crate as dash_sdk_bindings; } + + pub mod for_token_pre_programmed_distribution { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod mint { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_transaction_history_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod system { + use crate as dash_sdk_bindings; + + pub mod add_to_token_total_supply { use crate as dash_sdk_bindings; } + + pub mod fetch_token_total_aggregated_identity_balances { use crate as dash_sdk_bindings; } + + pub mod create_token_trees { use crate as dash_sdk_bindings; } + + pub mod fetch_token_total_supply { use crate as dash_sdk_bindings; } + + pub mod prove_token_total_supply_and_aggregated_identity_balances { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod remove_from_token_total_supply { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify", feature = "fixtures-and-mocks"))] + pub mod contract { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_contracts { use crate as dash_sdk_bindings; } + + pub mod prove_contract { use crate as dash_sdk_bindings; } + + pub mod prove_contract_history { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod get_fetch { + use crate as dash_sdk_bindings; + + pub mod fetch_contract { use crate as dash_sdk_bindings; } + + pub mod get_contract_with_fetch_info { use crate as dash_sdk_bindings; } + + pub mod get_cached_contract_with_fetch_info { use crate as dash_sdk_bindings; } + + pub mod get_contracts_with_fetch_info { use crate as dash_sdk_bindings; } + + pub mod fetch_contract_with_history { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_description { use crate as dash_sdk_bindings; } + + pub mod add_contract_to_storage { use crate as dash_sdk_bindings; } + + pub mod add_new_keywords { use crate as dash_sdk_bindings; } + + pub mod insert_contract { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + pub mod update_contract { use crate as dash_sdk_bindings; } + + pub mod update_keywords { use crate as dash_sdk_bindings; } + + pub mod update_description { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod apply { + use crate as dash_sdk_bindings; + + pub mod apply_contract_with_serialization { use crate as dash_sdk_bindings; } + + pub mod apply_contract { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_contract_insertion { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod system { + use crate as dash_sdk_bindings; + + pub mod fetch_elements { use crate as dash_sdk_bindings; } + + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod for_total_system_credits_update { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod genesis_time { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod protocol_version { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify", feature = "fixtures-and-mocks"))] + pub mod document { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod update { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod update_document_for_contract { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_update_multiple_documents_operations { + use crate as dash_sdk_bindings; + } + + pub mod update_document_with_serialization_for_contract { use crate as dash_sdk_bindings; } + + #[cfg(feature = "server")] + pub mod update_document_for_contract_id { + use crate as dash_sdk_bindings; + } + + pub mod internal { + use crate as dash_sdk_bindings; + + pub mod update_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod update_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_document { use crate as dash_sdk_bindings; } + + pub mod add_reference_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_indices_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_to_primary_storage { use crate as dash_sdk_bindings; } + + pub mod add_indices_for_top_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_for_contract { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod insert_contested { + use crate as dash_sdk_bindings; + + pub mod add_contested_document_to_primary_storage { use crate as dash_sdk_bindings; } + + pub mod add_contested_document { use crate as dash_sdk_bindings; } + + pub mod add_contested_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_vote_subtrees_for_non_identities_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_document_for_contract { use crate as dash_sdk_bindings; } + + pub mod add_contested_indices_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_reference_and_vote_subtree_to_document_operations { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod query { + use crate as dash_sdk_bindings; + + pub mod query_documents { use crate as dash_sdk_bindings; } + + pub mod query_contested_documents_storage { use crate as dash_sdk_bindings; } + + pub mod query_contested_documents_vote_state { use crate as dash_sdk_bindings; } + + pub mod query_documents_with_flags { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_add_document_to_primary_storage { use crate as dash_sdk_bindings; } + + pub mod stateless_delete_of_non_tree_for_costs { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_add_contested_document_to_primary_storage { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod index_uniqueness { + use crate as dash_sdk_bindings; + + pub mod validate_document_create_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_replace_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod internal { + use crate as dash_sdk_bindings; + + pub mod validate_uniqueness_of_data { use crate as dash_sdk_bindings; } + } + + pub mod validate_document_purchase_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_update_price_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_transfer_transition_action_uniqueness { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod delete { + use crate as dash_sdk_bindings; + + pub mod remove_indices_for_top_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod remove_document_from_primary_storage { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_with_named_type_operations { use crate as dash_sdk_bindings; } + + pub mod internal { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_remove_document_to_primary_storage { use crate as dash_sdk_bindings; } + } + + pub mod delete_document_for_contract_id_with_named_type_operations { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_id { use crate as dash_sdk_bindings; } + + pub mod remove_reference_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod remove_indices_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod verify { + use crate as dash_sdk_bindings; + + pub mod group { + use crate as dash_sdk_bindings; + + pub mod verify_action_signers_total_power { use crate as dash_sdk_bindings; } + + pub mod verify_active_action_infos { use crate as dash_sdk_bindings; } + + pub mod verify_group_info { use crate as dash_sdk_bindings; } + + pub mod verify_group_infos_in_contract { use crate as dash_sdk_bindings; } + + pub mod verify_action_signers { use crate as dash_sdk_bindings; } + } + + pub mod state_transition { + use crate as dash_sdk_bindings; + + pub mod verify_state_transition_was_executed_with_proof { use crate as dash_sdk_bindings; } + + pub mod state_transition_execution_path_queries { use crate as dash_sdk_bindings; } + } + + pub mod single_document { + use crate as dash_sdk_bindings; + + pub mod verify_proof_keep_serialized { use crate as dash_sdk_bindings; } + + pub mod verify_proof { use crate as dash_sdk_bindings; } + } + + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod verify_token_direct_selling_prices { use crate as dash_sdk_bindings; } + + pub mod verify_token_infos_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_perpetual_distribution_last_paid_time { use crate as dash_sdk_bindings; } + + pub mod verify_token_balances_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_direct_selling_price { use crate as dash_sdk_bindings; } + + pub mod verify_token_balance_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_status { use crate as dash_sdk_bindings; } + + pub mod verify_token_balances_for_identity_ids { use crate as dash_sdk_bindings; } + + pub mod verify_token_info_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_total_supply_and_aggregated_identity_balance { use crate as dash_sdk_bindings; } + + pub mod verify_token_pre_programmed_distributions { use crate as dash_sdk_bindings; } + + pub mod verify_token_statuses { use crate as dash_sdk_bindings; } + + pub mod verify_token_infos_for_identity_ids { use crate as dash_sdk_bindings; } + + pub mod verify_token_contract_info { use crate as dash_sdk_bindings; } + } + + pub mod contract { + use crate as dash_sdk_bindings; + + pub mod verify_contract { use crate as dash_sdk_bindings; } + + pub mod verify_contract_history { use crate as dash_sdk_bindings; } + } + + pub mod document { + use crate as dash_sdk_bindings; + + pub mod verify_proof_keep_serialized { use crate as dash_sdk_bindings; } + + pub mod verify_proof { use crate as dash_sdk_bindings; } + + pub mod verify_start_at_document_in_proof { use crate as dash_sdk_bindings; } + } + + pub mod system { + use crate as dash_sdk_bindings; + + pub mod verify_elements { use crate as dash_sdk_bindings; } + + pub mod verify_finalized_epoch_infos { use crate as dash_sdk_bindings; } + + pub mod verify_epoch_infos { use crate as dash_sdk_bindings; } + + pub mod verify_epoch_proposers { use crate as dash_sdk_bindings; } + + pub mod verify_upgrade_state { use crate as dash_sdk_bindings; } + + pub mod verify_upgrade_vote_status { use crate as dash_sdk_bindings; } + + pub mod verify_total_credits_in_system { use crate as dash_sdk_bindings; } + } + + pub mod voting { + use crate as dash_sdk_bindings; + + pub mod verify_vote_poll_vote_state_proof { use crate as dash_sdk_bindings; } + + pub mod verify_vote_polls_end_date_query { use crate as dash_sdk_bindings; } + + pub mod verify_vote_poll_votes_proof { use crate as dash_sdk_bindings; } + + pub mod verify_masternode_vote { use crate as dash_sdk_bindings; } + + pub mod verify_contests_proof { use crate as dash_sdk_bindings; } + + pub mod verify_identity_votes_given_proof { use crate as dash_sdk_bindings; } + + pub mod verify_specialized_balance { use crate as dash_sdk_bindings; } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod verify_identity_balance_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_identity_revision_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_full_identity_by_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_identity_id_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_identity_ids_by_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod verify_identity_nonce { use crate as dash_sdk_bindings; } + + pub mod verify_identity_balance_and_revision_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_full_identities_by_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod verify_identity_keys_by_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_full_identity_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_full_identity_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_identity_id_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_identity_balances_for_identity_ids { use crate as dash_sdk_bindings; } + + pub mod verify_identities_contract_keys { use crate as dash_sdk_bindings; } + + pub mod verify_identity_contract_nonce { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod query { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod test_index { + use crate as dash_sdk_bindings; + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod ordering { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`OrderClause`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_query_ordering_OrderClause { + pub field: *mut std::os::raw::c_char, + pub ascending: bool, + } + + impl ferment::FFIConversionFrom for drive_query_ordering_OrderClause { + unsafe fn ffi_from_const(ffi: *const drive_query_ordering_OrderClause) -> drive::query::ordering::OrderClause { + let ffi_ref = &*ffi; + drive::query::ordering::OrderClause { field: >::ffi_from(ffi_ref.field), ascending: ffi_ref.ascending } + } + } + + impl ferment::FFIConversionTo for drive_query_ordering_OrderClause { unsafe fn ffi_to_const(obj: drive::query::ordering::OrderClause) -> *const drive_query_ordering_OrderClause { ferment::boxed(drive_query_ordering_OrderClause { field: >::ffi_to(obj.field), ascending: obj.ascending }) } } + + impl Drop for drive_query_ordering_OrderClause { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_string(ffi_ref.field); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_ctor<>(field: *mut std::os::raw::c_char, ascending: bool) -> *mut drive_query_ordering_OrderClause { ferment::boxed(drive_query_ordering_OrderClause { field, ascending }) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_destroy<>(ffi: *mut drive_query_ordering_OrderClause) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_get_field<>(obj: *const drive_query_ordering_OrderClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_get_ascending<>(obj: *const drive_query_ordering_OrderClause) -> bool { (*obj).ascending } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_set_field<>(obj: *const drive_query_ordering_OrderClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_set_ascending<>(obj: *const drive_query_ordering_OrderClause) -> bool { (*obj).ascending } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod conditions { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`WhereOperator`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum drive_query_conditions_WhereOperator { Equal, GreaterThan, GreaterThanOrEquals, LessThan, LessThanOrEquals, Between, BetweenExcludeBounds, BetweenExcludeLeft, BetweenExcludeRight, In, StartsWith } + + impl ferment::FFIConversionFrom for drive_query_conditions_WhereOperator { + unsafe fn ffi_from_const(ffi: *const drive_query_conditions_WhereOperator) -> drive::query::conditions::WhereOperator { + let ffi_ref = &*ffi; + match ffi_ref { + drive_query_conditions_WhereOperator::Equal => drive::query::conditions::WhereOperator::Equal, + drive_query_conditions_WhereOperator::GreaterThan => drive::query::conditions::WhereOperator::GreaterThan, + drive_query_conditions_WhereOperator::GreaterThanOrEquals => drive::query::conditions::WhereOperator::GreaterThanOrEquals, + drive_query_conditions_WhereOperator::LessThan => drive::query::conditions::WhereOperator::LessThan, + drive_query_conditions_WhereOperator::LessThanOrEquals => drive::query::conditions::WhereOperator::LessThanOrEquals, + drive_query_conditions_WhereOperator::Between => drive::query::conditions::WhereOperator::Between, + drive_query_conditions_WhereOperator::BetweenExcludeBounds => drive::query::conditions::WhereOperator::BetweenExcludeBounds, + drive_query_conditions_WhereOperator::BetweenExcludeLeft => drive::query::conditions::WhereOperator::BetweenExcludeLeft, + drive_query_conditions_WhereOperator::BetweenExcludeRight => drive::query::conditions::WhereOperator::BetweenExcludeRight, + drive_query_conditions_WhereOperator::In => drive::query::conditions::WhereOperator::In, + drive_query_conditions_WhereOperator::StartsWith => drive::query::conditions::WhereOperator::StartsWith + } + } + } + + impl ferment::FFIConversionTo for drive_query_conditions_WhereOperator { + unsafe fn ffi_to_const(obj: drive::query::conditions::WhereOperator) -> *const drive_query_conditions_WhereOperator { + ferment::boxed(match obj { + drive::query::conditions::WhereOperator::Equal => drive_query_conditions_WhereOperator::Equal, + drive::query::conditions::WhereOperator::GreaterThan => drive_query_conditions_WhereOperator::GreaterThan, + drive::query::conditions::WhereOperator::GreaterThanOrEquals => drive_query_conditions_WhereOperator::GreaterThanOrEquals, + drive::query::conditions::WhereOperator::LessThan => drive_query_conditions_WhereOperator::LessThan, + drive::query::conditions::WhereOperator::LessThanOrEquals => drive_query_conditions_WhereOperator::LessThanOrEquals, + drive::query::conditions::WhereOperator::Between => drive_query_conditions_WhereOperator::Between, + drive::query::conditions::WhereOperator::BetweenExcludeBounds => drive_query_conditions_WhereOperator::BetweenExcludeBounds, + drive::query::conditions::WhereOperator::BetweenExcludeLeft => drive_query_conditions_WhereOperator::BetweenExcludeLeft, + drive::query::conditions::WhereOperator::BetweenExcludeRight => drive_query_conditions_WhereOperator::BetweenExcludeRight, + drive::query::conditions::WhereOperator::In => drive_query_conditions_WhereOperator::In, + drive::query::conditions::WhereOperator::StartsWith => drive_query_conditions_WhereOperator::StartsWith, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for drive_query_conditions_WhereOperator { + fn drop(&mut self) { + unsafe { + match self { + drive_query_conditions_WhereOperator::Equal => {} + drive_query_conditions_WhereOperator::GreaterThan => {} + drive_query_conditions_WhereOperator::GreaterThanOrEquals => {} + drive_query_conditions_WhereOperator::LessThan => {} + drive_query_conditions_WhereOperator::LessThanOrEquals => {} + drive_query_conditions_WhereOperator::Between => {} + drive_query_conditions_WhereOperator::BetweenExcludeBounds => {} + drive_query_conditions_WhereOperator::BetweenExcludeLeft => {} + drive_query_conditions_WhereOperator::BetweenExcludeRight => {} + drive_query_conditions_WhereOperator::In => {} + drive_query_conditions_WhereOperator::StartsWith => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_Equal_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::Equal {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_GreaterThan_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::GreaterThan {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_GreaterThanOrEquals_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::GreaterThanOrEquals {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_LessThan_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::LessThan {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_LessThanOrEquals_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::LessThanOrEquals {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_Between_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::Between {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_BetweenExcludeBounds_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::BetweenExcludeBounds {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_BetweenExcludeLeft_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::BetweenExcludeLeft {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_BetweenExcludeRight_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::BetweenExcludeRight {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_In_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::In {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_StartsWith_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::StartsWith {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_destroy<>(ffi: *mut drive_query_conditions_WhereOperator) { ferment::unbox_any(ffi); } + + #[doc = "FFI-representation of the [`WhereClause`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_query_conditions_WhereClause { + pub field: *mut std::os::raw::c_char, + pub operator: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator, + pub value: *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom for drive_query_conditions_WhereClause { + unsafe fn ffi_from_const(ffi: *const drive_query_conditions_WhereClause) -> drive::query::conditions::WhereClause { + let ffi_ref = &*ffi; + drive::query::conditions::WhereClause { field: >::ffi_from(ffi_ref.field), operator: >::ffi_from(ffi_ref.operator), value: >::ffi_from(ffi_ref.value) } + } + } + + impl ferment::FFIConversionTo for drive_query_conditions_WhereClause { unsafe fn ffi_to_const(obj: drive::query::conditions::WhereClause) -> *const drive_query_conditions_WhereClause { ferment::boxed(drive_query_conditions_WhereClause { field: >::ffi_to(obj.field), operator: >::ffi_to(obj.operator), value: >::ffi_to(obj.value) }) } } + + impl Drop for drive_query_conditions_WhereClause { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_string(ffi_ref.field); + ferment::unbox_any(ffi_ref.operator); + ferment::unbox_any(ffi_ref.value); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_ctor<>(field: *mut std::os::raw::c_char, operator: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator, value: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut drive_query_conditions_WhereClause { ferment::boxed(drive_query_conditions_WhereClause { field, operator, value }) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_destroy<>(ffi: *mut drive_query_conditions_WhereClause) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_get_field<>(obj: *const drive_query_conditions_WhereClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_get_operator<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator { (*obj).operator } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_get_value<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).value } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_set_field<>(obj: *const drive_query_conditions_WhereClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_set_operator<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator { (*obj).operator } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_set_value<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).value } + } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove_state_transition { + use crate as dash_sdk_bindings; + } + + pub mod prove_elements { use crate as dash_sdk_bindings; } + + pub mod prove_multiple_state_transition_results { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fees { + use crate as dash_sdk_bindings; + + pub mod calculate_fee { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod error { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod cache { + use crate as dash_sdk_bindings; + + pub mod data_contract { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(any(feature = "server", feature = "verify", feature = "fixtures-and-mocks"))] + pub mod util { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod batch { + use crate as dash_sdk_bindings; + + pub mod drive_op_batch { + use crate as dash_sdk_bindings; + + pub mod drive_methods { + use crate as dash_sdk_bindings; + + pub mod convert_drive_operations_to_grove_operations { use crate as dash_sdk_bindings; } + + pub mod apply_drive_operations { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod object_size_info { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod grove_operations { + use crate as dash_sdk_bindings; + + pub mod batch_remove_raw { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query_serialized_results { use crate as dash_sdk_bindings; } + + pub mod batch_insert_sum_item_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod batch_insert_if_changed_value { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_tree_if_not_exists_check_existing_operations { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_sum_tree { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query_with_optional { use crate as dash_sdk_bindings; } + + pub mod batch_insert { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_value_u64_from_encoded_var_vec { use crate as dash_sdk_bindings; } + + pub mod grove_get_proved_path_query { use crate as dash_sdk_bindings; } + + pub mod grove_get_big_sum_tree_total_value { use crate as dash_sdk_bindings; } + + pub mod grove_insert_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod batch_insert_sum_item_or_add_to_if_already_exists { use crate as dash_sdk_bindings; } + + pub mod grove_get_sum_tree_total_value { use crate as dash_sdk_bindings; } + + pub mod grove_batch_operations_costs { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_optional_item { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_tree { use crate as dash_sdk_bindings; } + + pub mod batch_insert_if_not_exists_return_existing_element { use crate as dash_sdk_bindings; } + + pub mod batch_delete_up_tree_while_empty { use crate as dash_sdk_bindings; } + + pub mod grove_delete { use crate as dash_sdk_bindings; } + + pub mod grove_clear { use crate as dash_sdk_bindings; } + + pub mod batch_delete { use crate as dash_sdk_bindings; } + + pub mod batch_move_items_in_path_query { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod grove_insert_if_not_exists_return_existing_element { use crate as dash_sdk_bindings; } + + pub mod grove_insert { use crate as dash_sdk_bindings; } + + pub mod batch_refresh_reference { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query_serialized_or_sum_results { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query { use crate as dash_sdk_bindings; } + + pub mod batch_replace { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_item { use crate as dash_sdk_bindings; } + + pub mod grove_get_optional_sum_tree_total_value { use crate as dash_sdk_bindings; } + + pub mod grove_has_raw { use crate as dash_sdk_bindings; } + + pub mod batch_move { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod grove_apply_batch_with_add_costs { use crate as dash_sdk_bindings; } + + pub mod grove_insert_empty_tree { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_optional { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_tree_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_path_query { use crate as dash_sdk_bindings; } + + pub mod grove_apply_partial_batch_with_add_costs { use crate as dash_sdk_bindings; } + + pub mod grove_get { use crate as dash_sdk_bindings; } + + pub mod grove_get_proved_path_query_with_conditional { use crate as dash_sdk_bindings; } + + pub mod batch_insert_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod grove_apply_operation { use crate as dash_sdk_bindings; } + + pub mod batch_delete_items_in_path_query { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod grove_get_raw_path_query_with_optional { use crate as dash_sdk_bindings; } + + pub mod grove_insert_empty_sum_tree { use crate as dash_sdk_bindings; } + } + + #[cfg(any(test, feature = "server", feature = "fixtures-and-mocks"))] + pub mod test_helpers { + use crate as dash_sdk_bindings; + + #[cfg(any(test, feature = "fixtures-and-mocks"))] + pub mod test_utils { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod common { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod operations { + use crate as dash_sdk_bindings; + + pub mod apply_batch_grovedb_operations { use crate as dash_sdk_bindings; } + + pub mod rollback_transaction { use crate as dash_sdk_bindings; } + + pub mod apply_partial_batch_grovedb_operations { use crate as dash_sdk_bindings; } + + pub mod drop_cache { use crate as dash_sdk_bindings; } + + pub mod apply_batch_low_level_drive_operations { use crate as dash_sdk_bindings; } + + pub mod apply_partial_batch_low_level_drive_operations { use crate as dash_sdk_bindings; } + + pub mod commit_transaction { use crate as dash_sdk_bindings; } + } + } + } + + pub mod platform_value { + use crate as dash_sdk_bindings; + + pub mod value_map { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ValueMap`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_value_map_ValueMap(*mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value); + + impl ferment::FFIConversionFrom for platform_value_value_map_ValueMap { + unsafe fn ffi_from_const(ffi: *const platform_value_value_map_ValueMap) -> platform_value::value_map::ValueMap { + let ffi_ref = &*ffi; + >>::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for platform_value_value_map_ValueMap { unsafe fn ffi_to_const(obj: platform_value::value_map::ValueMap) -> *const platform_value_value_map_ValueMap { ferment::boxed(platform_value_value_map_ValueMap(>>::ffi_to(obj))) } } + + impl Drop for platform_value_value_map_ValueMap { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_ctor<>(o_0: *mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value) -> *mut platform_value_value_map_ValueMap { ferment::boxed(platform_value_value_map_ValueMap(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_destroy<>(ffi: *mut platform_value_value_map_ValueMap) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_get_0<>(obj: *const platform_value_value_map_ValueMap) -> *mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_set_0<>(obj: *const platform_value_value_map_ValueMap) -> *mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value { (*obj).0 } + } + + #[doc = "FFI-representation of the [`Hash256`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_Hash256(*mut crate::fermented::generics::Arr_u8_32); + + impl ferment::FFIConversionFrom for platform_value_Hash256 { + unsafe fn ffi_from_const(ffi: *const platform_value_Hash256) -> platform_value::Hash256 { + let ffi_ref = &*ffi; + >::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for platform_value_Hash256 { unsafe fn ffi_to_const(obj: platform_value::Hash256) -> *const platform_value_Hash256 { ferment::boxed(platform_value_Hash256(>::ffi_to(obj))) } } + + impl Drop for platform_value_Hash256 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_ctor<>(o_0: *mut crate::fermented::generics::Arr_u8_32) -> *mut platform_value_Hash256 { ferment::boxed(platform_value_Hash256(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_destroy<>(ffi: *mut platform_value_Hash256) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_get_0<>(obj: *const platform_value_Hash256) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_set_0<>(obj: *const platform_value_Hash256) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Value`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_value_Value { U128(*mut [u8; 16]), I128(*mut [u8; 16]), U64(u64), I64(i64), U32(u32), I32(i32), U16(u16), I16(i16), U8(u8), I8(i8), Bytes(*mut crate::fermented::generics::Vec_u8), Bytes20(*mut crate::fermented::generics::Arr_u8_20), Bytes32(*mut crate::fermented::generics::Arr_u8_32), Bytes36(*mut crate::fermented::generics::Arr_u8_36), EnumU8(*mut crate::fermented::generics::Vec_u8), EnumString(*mut crate::fermented::generics::Vec_String), Identifier(*mut crate::fermented::types::platform_value::platform_value_Hash256), Float(f64), Text(*mut std::os::raw::c_char), Bool(bool), Null, Array(*mut crate::fermented::generics::Vec_platform_value_Value), Map(*mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap) } + + impl ferment::FFIConversionFrom for platform_value_Value { + unsafe fn ffi_from_const(ffi: *const platform_value_Value) -> platform_value::Value { + let ffi_ref = &*ffi; + match ffi_ref { + platform_value_Value::U128(o_0) => platform_value::Value::U128(<[u8; 16] as ferment::FFIConversionFrom>::ffi_from(*o_0)), + platform_value_Value::I128(o_0) => platform_value::Value::I128(<[u8; 16] as ferment::FFIConversionFrom>::ffi_from(*o_0)), + platform_value_Value::U64(o_0) => platform_value::Value::U64(*o_0), + platform_value_Value::I64(o_0) => platform_value::Value::I64(*o_0), + platform_value_Value::U32(o_0) => platform_value::Value::U32(*o_0), + platform_value_Value::I32(o_0) => platform_value::Value::I32(*o_0), + platform_value_Value::U16(o_0) => platform_value::Value::U16(*o_0), + platform_value_Value::I16(o_0) => platform_value::Value::I16(*o_0), + platform_value_Value::U8(o_0) => platform_value::Value::U8(*o_0), + platform_value_Value::I8(o_0) => platform_value::Value::I8(*o_0), + platform_value_Value::Bytes(o_0) => platform_value::Value::Bytes(>>::ffi_from(*o_0)), + platform_value_Value::Bytes20(o_0) => platform_value::Value::Bytes20(>::ffi_from(*o_0)), + platform_value_Value::Bytes32(o_0) => platform_value::Value::Bytes32(>::ffi_from(*o_0)), + platform_value_Value::Bytes36(o_0) => platform_value::Value::Bytes36(>::ffi_from(*o_0)), + platform_value_Value::EnumU8(o_0) => platform_value::Value::EnumU8(>>::ffi_from(*o_0)), + platform_value_Value::EnumString(o_0) => platform_value::Value::EnumString(>>::ffi_from(*o_0)), + platform_value_Value::Identifier(o_0) => platform_value::Value::Identifier(>::ffi_from(*o_0)), + platform_value_Value::Float(o_0) => platform_value::Value::Float(*o_0), + platform_value_Value::Text(o_0) => platform_value::Value::Text(>::ffi_from(*o_0)), + platform_value_Value::Bool(o_0) => platform_value::Value::Bool(*o_0), + platform_value_Value::Null => platform_value::Value::Null, + platform_value_Value::Array(o_0) => platform_value::Value::Array(>>::ffi_from(*o_0)), + platform_value_Value::Map(o_0) => platform_value::Value::Map(>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_value_Value { + unsafe fn ffi_to_const(obj: platform_value::Value) -> *const platform_value_Value { + ferment::boxed(match obj { + platform_value::Value::U128(o_0) => platform_value_Value::U128(<[u8; 16] as ferment::FFIConversionTo>::ffi_to(o_0)), + platform_value::Value::I128(o_0) => platform_value_Value::I128(<[u8; 16] as ferment::FFIConversionTo>::ffi_to(o_0)), + platform_value::Value::U64(o_0) => platform_value_Value::U64(o_0), + platform_value::Value::I64(o_0) => platform_value_Value::I64(o_0), + platform_value::Value::U32(o_0) => platform_value_Value::U32(o_0), + platform_value::Value::I32(o_0) => platform_value_Value::I32(o_0), + platform_value::Value::U16(o_0) => platform_value_Value::U16(o_0), + platform_value::Value::I16(o_0) => platform_value_Value::I16(o_0), + platform_value::Value::U8(o_0) => platform_value_Value::U8(o_0), + platform_value::Value::I8(o_0) => platform_value_Value::I8(o_0), + platform_value::Value::Bytes(o_0) => platform_value_Value::Bytes(>>::ffi_to(o_0)), + platform_value::Value::Bytes20(o_0) => platform_value_Value::Bytes20(>::ffi_to(o_0)), + platform_value::Value::Bytes32(o_0) => platform_value_Value::Bytes32(>::ffi_to(o_0)), + platform_value::Value::Bytes36(o_0) => platform_value_Value::Bytes36(>::ffi_to(o_0)), + platform_value::Value::EnumU8(o_0) => platform_value_Value::EnumU8(>>::ffi_to(o_0)), + platform_value::Value::EnumString(o_0) => platform_value_Value::EnumString(>>::ffi_to(o_0)), + platform_value::Value::Identifier(o_0) => platform_value_Value::Identifier(>::ffi_to(o_0)), + platform_value::Value::Float(o_0) => platform_value_Value::Float(o_0), + platform_value::Value::Text(o_0) => platform_value_Value::Text(>::ffi_to(o_0)), + platform_value::Value::Bool(o_0) => platform_value_Value::Bool(o_0), + platform_value::Value::Null => platform_value_Value::Null, + platform_value::Value::Array(o_0) => platform_value_Value::Array(>>::ffi_to(o_0)), + platform_value::Value::Map(o_0) => platform_value_Value::Map(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_value_Value { + fn drop(&mut self) { + unsafe { + match self { + platform_value_Value::U128(o_0) => { ferment::unbox_any_opt(*o_0); } + platform_value_Value::I128(o_0) => { ferment::unbox_any_opt(*o_0); } + platform_value_Value::U64(o_0) => { ; } + platform_value_Value::I64(o_0) => { ; } + platform_value_Value::U32(o_0) => { ; } + platform_value_Value::I32(o_0) => { ; } + platform_value_Value::U16(o_0) => { ; } + platform_value_Value::I16(o_0) => { ; } + platform_value_Value::U8(o_0) => { ; } + platform_value_Value::I8(o_0) => { ; } + platform_value_Value::Bytes(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Bytes20(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Bytes32(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Bytes36(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::EnumU8(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::EnumString(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Identifier(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Float(o_0) => { ; } + platform_value_Value::Text(o_0) => { ferment::unbox_string(*o_0); } + platform_value_Value::Bool(o_0) => { ; } + platform_value_Value::Null => {} + platform_value_Value::Array(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Map(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U128_ctor(o_o_0: *mut [u8; 16]) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U128(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I128_ctor(o_o_0: *mut [u8; 16]) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I128(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U64_ctor(o_o_0: u64) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U64(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I64_ctor(o_o_0: i64) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I64(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U32_ctor(o_o_0: u32) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U32(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I32_ctor(o_o_0: i32) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I32(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U16_ctor(o_o_0: u16) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U16(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I16_ctor(o_o_0: i16) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I16(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U8_ctor(o_o_0: u8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U8(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I8_ctor(o_o_0: i8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I8(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes20_ctor(o_o_0: *mut crate::fermented::generics::Arr_u8_20) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes20(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes32_ctor(o_o_0: *mut crate::fermented::generics::Arr_u8_32) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes32(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes36_ctor(o_o_0: *mut crate::fermented::generics::Arr_u8_36) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes36(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_EnumU8_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::EnumU8(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_EnumString_ctor(o_o_0: *mut crate::fermented::generics::Vec_String) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::EnumString(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Identifier_ctor(o_o_0: *mut crate::fermented::types::platform_value::platform_value_Hash256) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Identifier(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Float_ctor(o_o_0: f64) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Float(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Text_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Text(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bool_ctor(o_o_0: bool) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bool(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Null_ctor() -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Null {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Array_ctor(o_o_0: *mut crate::fermented::generics::Vec_platform_value_Value) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Array(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Map_ctor(o_o_0: *mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Map(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_destroy<>(ffi: *mut platform_value_Value) { ferment::unbox_any(ffi); } + + pub mod index { use crate as dash_sdk_bindings; } + + pub mod value_serialization { use crate as dash_sdk_bindings; } + + pub mod converter { + use crate as dash_sdk_bindings; + + #[cfg(feature = "json")] + pub mod serde_json { + use crate as dash_sdk_bindings; + } + } + + pub mod btreemap_extensions { use crate as dash_sdk_bindings; } + + pub mod macros { use crate as dash_sdk_bindings; } + + pub mod patch { + use crate as dash_sdk_bindings; + + pub mod diff { use crate as dash_sdk_bindings; } + } + + pub mod inner_value_at_path { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod error { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Error`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_value_error_Error { Unsupported(*mut std::os::raw::c_char), StructureError(*mut std::os::raw::c_char), PathError(*mut std::os::raw::c_char), IntegerSizeError, IntegerParsingError, StringDecodingError(*mut std::os::raw::c_char), KeyMustBeAString, ByteLengthNot20BytesError(*mut std::os::raw::c_char), ByteLengthNot32BytesError(*mut std::os::raw::c_char), ByteLengthNot36BytesError(*mut std::os::raw::c_char), SerdeSerializationError(*mut std::os::raw::c_char), SerdeDeserializationError(*mut std::os::raw::c_char), CborSerializationError(*mut std::os::raw::c_char) } + + impl ferment::FFIConversionFrom for platform_value_error_Error { + unsafe fn ffi_from_const(ffi: *const platform_value_error_Error) -> platform_value::error::Error { + let ffi_ref = &*ffi; + match ffi_ref { + platform_value_error_Error::Unsupported(o_0) => platform_value::error::Error::Unsupported(>::ffi_from(*o_0)), + platform_value_error_Error::StructureError(o_0) => platform_value::error::Error::StructureError(>::ffi_from(*o_0)), + platform_value_error_Error::PathError(o_0) => platform_value::error::Error::PathError(>::ffi_from(*o_0)), + platform_value_error_Error::IntegerSizeError => platform_value::error::Error::IntegerSizeError, + platform_value_error_Error::IntegerParsingError => platform_value::error::Error::IntegerParsingError, + platform_value_error_Error::StringDecodingError(o_0) => platform_value::error::Error::StringDecodingError(>::ffi_from(*o_0)), + platform_value_error_Error::KeyMustBeAString => platform_value::error::Error::KeyMustBeAString, + platform_value_error_Error::ByteLengthNot20BytesError(o_0) => platform_value::error::Error::ByteLengthNot20BytesError(>::ffi_from(*o_0)), + platform_value_error_Error::ByteLengthNot32BytesError(o_0) => platform_value::error::Error::ByteLengthNot32BytesError(>::ffi_from(*o_0)), + platform_value_error_Error::ByteLengthNot36BytesError(o_0) => platform_value::error::Error::ByteLengthNot36BytesError(>::ffi_from(*o_0)), + platform_value_error_Error::SerdeSerializationError(o_0) => platform_value::error::Error::SerdeSerializationError(>::ffi_from(*o_0)), + platform_value_error_Error::SerdeDeserializationError(o_0) => platform_value::error::Error::SerdeDeserializationError(>::ffi_from(*o_0)), + platform_value_error_Error::CborSerializationError(o_0) => platform_value::error::Error::CborSerializationError(>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_value_error_Error { + unsafe fn ffi_to_const(obj: platform_value::error::Error) -> *const platform_value_error_Error { + ferment::boxed(match obj { + platform_value::error::Error::Unsupported(o_0) => platform_value_error_Error::Unsupported(>::ffi_to(o_0)), + platform_value::error::Error::StructureError(o_0) => platform_value_error_Error::StructureError(>::ffi_to(o_0)), + platform_value::error::Error::PathError(o_0) => platform_value_error_Error::PathError(>::ffi_to(o_0)), + platform_value::error::Error::IntegerSizeError => platform_value_error_Error::IntegerSizeError, + platform_value::error::Error::IntegerParsingError => platform_value_error_Error::IntegerParsingError, + platform_value::error::Error::StringDecodingError(o_0) => platform_value_error_Error::StringDecodingError(>::ffi_to(o_0)), + platform_value::error::Error::KeyMustBeAString => platform_value_error_Error::KeyMustBeAString, + platform_value::error::Error::ByteLengthNot20BytesError(o_0) => platform_value_error_Error::ByteLengthNot20BytesError(>::ffi_to(o_0)), + platform_value::error::Error::ByteLengthNot32BytesError(o_0) => platform_value_error_Error::ByteLengthNot32BytesError(>::ffi_to(o_0)), + platform_value::error::Error::ByteLengthNot36BytesError(o_0) => platform_value_error_Error::ByteLengthNot36BytesError(>::ffi_to(o_0)), + platform_value::error::Error::SerdeSerializationError(o_0) => platform_value_error_Error::SerdeSerializationError(>::ffi_to(o_0)), + platform_value::error::Error::SerdeDeserializationError(o_0) => platform_value_error_Error::SerdeDeserializationError(>::ffi_to(o_0)), + platform_value::error::Error::CborSerializationError(o_0) => platform_value_error_Error::CborSerializationError(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_value_error_Error { + fn drop(&mut self) { + unsafe { + match self { + platform_value_error_Error::Unsupported(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::StructureError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::PathError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::IntegerSizeError => {} + platform_value_error_Error::IntegerParsingError => {} + platform_value_error_Error::StringDecodingError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::KeyMustBeAString => {} + platform_value_error_Error::ByteLengthNot20BytesError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::ByteLengthNot32BytesError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::ByteLengthNot36BytesError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::SerdeSerializationError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::SerdeDeserializationError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::CborSerializationError(o_0) => { ferment::unbox_string(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_Unsupported_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::Unsupported(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_StructureError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::StructureError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_PathError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::PathError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_IntegerSizeError_ctor() -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::IntegerSizeError {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_IntegerParsingError_ctor() -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::IntegerParsingError {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_StringDecodingError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::StringDecodingError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_KeyMustBeAString_ctor() -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::KeyMustBeAString {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_ByteLengthNot20BytesError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::ByteLengthNot20BytesError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_ByteLengthNot32BytesError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::ByteLengthNot32BytesError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_ByteLengthNot36BytesError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::ByteLengthNot36BytesError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_SerdeSerializationError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::SerdeSerializationError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_SerdeDeserializationError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::SerdeDeserializationError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_CborSerializationError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::CborSerializationError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_destroy<>(ffi: *mut platform_value_error_Error) { ferment::unbox_any(ffi); } + } + + pub mod types { + use crate as dash_sdk_bindings; + + pub mod identifier { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`IdentifierBytes32`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_types_identifier_IdentifierBytes32(*mut crate::fermented::generics::Arr_u8_32); + + impl ferment::FFIConversionFrom for platform_value_types_identifier_IdentifierBytes32 { + unsafe fn ffi_from_const(ffi: *const platform_value_types_identifier_IdentifierBytes32) -> platform_value::types::identifier::IdentifierBytes32 { + let ffi_ref = &*ffi; + platform_value::types::identifier::IdentifierBytes32(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for platform_value_types_identifier_IdentifierBytes32 { unsafe fn ffi_to_const(obj: platform_value::types::identifier::IdentifierBytes32) -> *const platform_value_types_identifier_IdentifierBytes32 { ferment::boxed(platform_value_types_identifier_IdentifierBytes32(>::ffi_to(obj.0))) } } + + impl Drop for platform_value_types_identifier_IdentifierBytes32 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_ctor<>(o_0: *mut crate::fermented::generics::Arr_u8_32) -> *mut platform_value_types_identifier_IdentifierBytes32 { ferment::boxed(platform_value_types_identifier_IdentifierBytes32(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_destroy<>(ffi: *mut platform_value_types_identifier_IdentifierBytes32) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_get_0<>(obj: *const platform_value_types_identifier_IdentifierBytes32) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_set_0<>(obj: *const platform_value_types_identifier_IdentifierBytes32) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[doc = "FFI-representation of the [`Identifier`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_types_identifier_Identifier(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32); + + impl ferment::FFIConversionFrom for platform_value_types_identifier_Identifier { + unsafe fn ffi_from_const(ffi: *const platform_value_types_identifier_Identifier) -> platform_value::types::identifier::Identifier { + let ffi_ref = &*ffi; + platform_value::types::identifier::Identifier(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for platform_value_types_identifier_Identifier { unsafe fn ffi_to_const(obj: platform_value::types::identifier::Identifier) -> *const platform_value_types_identifier_Identifier { ferment::boxed(platform_value_types_identifier_Identifier(>::ffi_to(obj.0))) } } + + impl Drop for platform_value_types_identifier_Identifier { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_ctor<>(o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32) -> *mut platform_value_types_identifier_Identifier { ferment::boxed(platform_value_types_identifier_Identifier(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_destroy<>(ffi: *mut platform_value_types_identifier_Identifier) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_get_0<>(obj: *const platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_set_0<>(obj: *const platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32 { (*obj).0 } + } + + pub mod binary_data { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`BinaryData`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_types_binary_data_BinaryData(*mut crate::fermented::generics::Vec_u8); + + impl ferment::FFIConversionFrom for platform_value_types_binary_data_BinaryData { + unsafe fn ffi_from_const(ffi: *const platform_value_types_binary_data_BinaryData) -> platform_value::types::binary_data::BinaryData { + let ffi_ref = &*ffi; + platform_value::types::binary_data::BinaryData(>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for platform_value_types_binary_data_BinaryData { unsafe fn ffi_to_const(obj: platform_value::types::binary_data::BinaryData) -> *const platform_value_types_binary_data_BinaryData { ferment::boxed(platform_value_types_binary_data_BinaryData(>>::ffi_to(obj.0))) } } + + impl Drop for platform_value_types_binary_data_BinaryData { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_ctor<>(o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_value_types_binary_data_BinaryData { ferment::boxed(platform_value_types_binary_data_BinaryData(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_destroy<>(ffi: *mut platform_value_types_binary_data_BinaryData) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_get_0<>(obj: *const platform_value_types_binary_data_BinaryData) -> *mut crate::fermented::generics::Vec_u8 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_set_0<>(obj: *const platform_value_types_binary_data_BinaryData) -> *mut crate::fermented::generics::Vec_u8 { (*obj).0 } + } + } + } + + pub mod platform_mobile { + use crate as dash_sdk_bindings; + + pub mod core { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::core::get_transaction_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_core_get_transaction_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, txid: *mut crate::fermented::generics::Arr_u8_32) -> *mut crate::fermented::generics::Result_ok_Vec_u8_err_String { + let obj = platform_mobile::core::get_transaction_sdk(rust_sdk, >::ffi_from(txid)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::core::get_transaction`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_core_get_transaction(txid: *mut crate::fermented::generics::Arr_u8_32, quorum_public_key_callback: u64, data_contract_callback: u64) -> *mut crate::fermented::generics::Result_ok_Vec_u8_err_String { + let obj = platform_mobile::core::get_transaction(>::ffi_from(txid), quorum_public_key_callback, data_contract_callback); + , String>>>::ffi_to(obj) + } + } + + pub mod data_contracts { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::data_contracts::DataContractFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_clone(value: *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI { + let obj = platform_mobile::data_contracts::DataContractFFI_clone(>::ffi_from(value)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`DataContractFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_data_contracts_DataContractFFI { + pub id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub doc_types: *mut crate::fermented::generics::Vec_String, + pub version: u32, + } + + impl ferment::FFIConversionFrom for platform_mobile_data_contracts_DataContractFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_data_contracts_DataContractFFI) -> platform_mobile::data_contracts::DataContractFFI { + let ffi_ref = &*ffi; + platform_mobile::data_contracts::DataContractFFI { id: >::ffi_from(ffi_ref.id), owner_id: >::ffi_from(ffi_ref.owner_id), doc_types: >>::ffi_from(ffi_ref.doc_types), version: ffi_ref.version } + } + } + + impl ferment::FFIConversionTo for platform_mobile_data_contracts_DataContractFFI { unsafe fn ffi_to_const(obj: platform_mobile::data_contracts::DataContractFFI) -> *const platform_mobile_data_contracts_DataContractFFI { ferment::boxed(platform_mobile_data_contracts_DataContractFFI { id: >::ffi_to(obj.id), owner_id: >::ffi_to(obj.owner_id), doc_types: >>::ffi_to(obj.doc_types), version: obj.version }) } } + + impl Drop for platform_mobile_data_contracts_DataContractFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.owner_id); + ferment::unbox_any(ffi_ref.doc_types); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_ctor<>(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, doc_types: *mut crate::fermented::generics::Vec_String, version: u32) -> *mut platform_mobile_data_contracts_DataContractFFI { ferment::boxed(platform_mobile_data_contracts_DataContractFFI { id, owner_id, doc_types, version }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_destroy<>(ffi: *mut platform_mobile_data_contracts_DataContractFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_owner_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_doc_types<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::generics::Vec_String { (*obj).doc_types } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_version<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> u32 { (*obj).version } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_owner_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_doc_types<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::generics::Vec_String { (*obj).doc_types } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_version<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> u32 { (*obj).version } + + #[doc = "FFI-representation of the [`platform_mobile::data_contracts::fetch_data_contract`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_fetch_data_contract(rust_sdk: *mut platform_mobile::sdk::DashSdk, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + let obj = platform_mobile::data_contracts::fetch_data_contract(rust_sdk, >::ffi_from(data_contract_id)); + , String>>>::ffi_to(obj) + } + } + + pub mod clone { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContestedResources_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContestedResources_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources { + let obj = platform_mobile::clone::ContestedResources_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Vote_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Vote_clone(o: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote) -> *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote { + let obj = platform_mobile::clone::Vote_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone(o: *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + let obj = platform_mobile::clone::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone()>>::ffi_from(o)); + )>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Revision_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Revision_clone(revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { + let obj = platform_mobile::clone::Revision_clone(>::ffi_from(revision)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVotesByIdentity_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVotesByIdentity_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity { + let obj = platform_mobile::clone::ResourceVotesByIdentity_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::TimestampMillis_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_TimestampMillis_clone(time: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { + let obj = platform_mobile::clone::TimestampMillis_clone(>::ffi_from(time)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVoteChoice_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVoteChoice_clone(o: *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) -> *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + let obj = platform_mobile::clone::ResourceVoteChoice_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Arr_u8_32_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Arr_u8_32_clone(slice: *mut crate::fermented::generics::Arr_u8_32) -> *mut crate::fermented::generics::Arr_u8_32 { + let obj = platform_mobile::clone::Arr_u8_32_clone(>::ffi_from(slice)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Voters_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Voters_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voters) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voters { + let obj = platform_mobile::clone::Voters_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContestedDocumentResourceVotePoll_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContestedDocumentResourceVotePoll_clone(o: *mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + let obj = platform_mobile::clone::ContestedDocumentResourceVotePoll_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::std_collections_Map_keys_String_values_platform_value_Value_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_std_collections_Map_keys_String_values_platform_value_Value_clone(map: *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value) -> *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value { + let obj = platform_mobile::clone::std_collections_Map_keys_String_values_platform_value_Value_clone(>>::ffi_from(map)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Value_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Value_clone(value: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut crate::fermented::types::platform_value::platform_value_Value { + let obj = platform_mobile::clone::Value_clone(>::ffi_from(value)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContenderWithSerializedDocument_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContenderWithSerializedDocument_clone(o: *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + let obj = platform_mobile::clone::ContenderWithSerializedDocument_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVote_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVote_clone(o: *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) -> *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote { + let obj = platform_mobile::clone::ResourceVote_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::prelude_TimestampMillis_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_prelude_TimestampMillis_clone(time: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis { + let obj = platform_mobile::clone::prelude_TimestampMillis_clone(>::ffi_from(time)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::WhereOperator_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_WhereOperator_clone(o: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator { + let obj = platform_mobile::clone::WhereOperator_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(o: *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter) -> *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter { + let obj = platform_mobile::clone::std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(>>::ffi_from(o)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::VotePollsGroupedByTimestamp_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_VotePollsGroupedByTimestamp_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp { + let obj = platform_mobile::clone::VotePollsGroupedByTimestamp_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::CoreBlockHeight_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_CoreBlockHeight_clone(height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { + let obj = platform_mobile::clone::CoreBlockHeight_clone(>::ffi_from(height)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Document_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Document_clone(document: *mut crate::fermented::types::dpp::document::dpp_document_Document) -> *mut crate::fermented::types::dpp::document::dpp_document_Document { + let obj = platform_mobile::clone::Document_clone(>::ffi_from(document)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ValueMap_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ValueMap_clone(value_map: *mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap) -> *mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap { + let obj = platform_mobile::clone::ValueMap_clone(>::ffi_from(value_map)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::DocumentV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_DocumentV0_clone(document: *mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0 { + let obj = platform_mobile::clone::DocumentV0_clone(>::ffi_from(document)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::KeyID_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_KeyID_clone(id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { + let obj = platform_mobile::clone::KeyID_clone(>::ffi_from(id)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Arr_u8_36_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Arr_u8_36_clone(slice: *mut crate::fermented::generics::Arr_u8_36) -> *mut crate::fermented::generics::Arr_u8_36 { + let obj = platform_mobile::clone::Arr_u8_36_clone(>::ffi_from(slice)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Arr_u8_20_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Arr_u8_20_clone(slice: *mut crate::fermented::generics::Arr_u8_20) -> *mut crate::fermented::generics::Arr_u8_20 { + let obj = platform_mobile::clone::Arr_u8_20_clone(>::ffi_from(slice)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Contenders_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Contenders_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders { + let obj = platform_mobile::clone::Contenders_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Vec_u8_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Vec_u8_clone(vec: *mut crate::fermented::generics::Vec_u8) -> *mut crate::fermented::generics::Vec_u8 { + let obj = platform_mobile::clone::Vec_u8_clone(>>::ffi_from(vec)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::BlockHeight_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_BlockHeight_clone(height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { + let obj = platform_mobile::clone::BlockHeight_clone(>::ffi_from(height)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContenderWithSerializedDocumentV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContenderWithSerializedDocumentV0_clone(o: *mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + let obj = platform_mobile::clone::ContenderWithSerializedDocumentV0_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVoteV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVoteV0_clone(o: *mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + let obj = platform_mobile::clone::ResourceVoteV0_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Vec_Value_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Vec_Value_clone(value_vec: *mut crate::fermented::generics::Vec_platform_value_Value) -> *mut crate::fermented::generics::Vec_platform_value_Value { + let obj = platform_mobile::clone::Vec_Value_clone(>>::ffi_from(value_vec)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::VotePoll_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_VotePoll_clone(o: *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll) -> *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll { + let obj = platform_mobile::clone::VotePoll_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Voter_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Voter_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter { + let obj = platform_mobile::clone::Voter_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::OrderClause_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_OrderClause_clone(o: *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause) -> *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause { + let obj = platform_mobile::clone::OrderClause_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContestedResource_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContestedResource_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource { + let obj = platform_mobile::clone::ContestedResource_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::WhereClause_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_WhereClause_clone(o: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause { + let obj = platform_mobile::clone::WhereClause_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Hash256_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Hash256_clone(o: *mut crate::fermented::types::platform_value::platform_value_Hash256) -> *mut crate::fermented::types::platform_value::platform_value_Hash256 { + let obj = platform_mobile::clone::Hash256_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + } + + pub mod operators { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::operators::Value_hash`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_operators_Value_hash(a: *mut crate::fermented::types::platform_value::platform_value_Value) -> i32 { + let obj = platform_mobile::operators::Value_hash(>::ffi_from(a)); + obj + } + + #[doc = "FFI-representation of the [`platform_mobile::operators::Value_eq`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_operators_Value_eq(a: *mut crate::fermented::types::platform_value::platform_value_Value, b: *mut crate::fermented::types::platform_value::platform_value_Value) -> bool { + let obj = platform_mobile::operators::Value_eq(>::ffi_from(a), >::ffi_from(b)); + obj + } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::identity::IdentityPublicKey_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_IdentityPublicKey_clone(identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey { + let obj = platform_mobile::identity::IdentityPublicKey_clone(>::ffi_from(identity_public_key)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(public_keys: *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey) -> *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + let obj = platform_mobile::identity::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(>>::ffi_from(public_keys)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::Identity_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_Identity_clone(identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::Identity_clone(>::ffi_from(identity)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::create_basic_identity`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_create_basic_identity(id: *mut crate::fermented::generics::Arr_u8_32) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::create_basic_identity(>::ffi_from(id)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::Identifier_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_Identifier_clone(identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { + let obj = platform_mobile::identity::Identifier_clone(>::ffi_from(identifier)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::IdentityV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_IdentityV0_clone(identity: *mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0 { + let obj = platform_mobile::identity::IdentityV0_clone(>::ffi_from(identity)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::IdentityPublicKeyV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_IdentityPublicKeyV0_clone(identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + let obj = platform_mobile::identity::IdentityPublicKeyV0_clone(>::ffi_from(identity_public_key)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::get_identity_contract_bounds`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_get_identity_contract_bounds(identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, contract_identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::get_identity_contract_bounds(>::ffi_from(identifier), >::ffi_from_opt(contract_identifier)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::get_identity2`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_get_identity2(identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::get_identity2(>::ffi_from(identifier)); + >::ffi_to(obj) + } + } + + pub mod sdk { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::sdk::destroy_dash_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_destroy_dash_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk) { + let obj = platform_mobile::sdk::destroy_dash_sdk(rust_sdk); + ; + } + + #[doc = "FFI-representation of the [`platform_mobile::sdk::create_dash_sdk_with_context`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_create_dash_sdk_with_context(context_provider_context: usize, quorum_public_key_callback: u64, data_contract_callback: u64, is_testnet: bool, connect_timeout: usize, timeout: usize, retries: usize) -> *mut platform_mobile::sdk::DashSdk { + let obj = platform_mobile::sdk::create_dash_sdk_with_context(context_provider_context, quorum_public_key_callback, data_contract_callback, is_testnet, connect_timeout, timeout, retries); + ferment::boxed(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::sdk::create_dash_sdk_using_single_evonode`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_create_dash_sdk_using_single_evonode(evonode: *mut std::os::raw::c_char, quorum_public_key_callback: u64, data_contract_callback: u64, is_testnet: bool) -> *mut platform_mobile::sdk::DashSdk { + let obj = platform_mobile::sdk::create_dash_sdk_using_single_evonode(>::ffi_from(evonode), quorum_public_key_callback, data_contract_callback, is_testnet); + ferment::boxed(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::sdk::create_dash_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_create_dash_sdk(quorum_public_key_callback: u64, data_contract_callback: u64, is_testnet: bool) -> *mut platform_mobile::sdk::DashSdk { + let obj = platform_mobile::sdk::create_dash_sdk(quorum_public_key_callback, data_contract_callback, is_testnet); + ferment::boxed(obj) + } + } + + pub mod voting { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_vote_contenders`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_vote_contenders(rust_sdk: *mut platform_mobile::sdk::DashSdk, index_name: *mut std::os::raw::c_char, index_values: *mut crate::fermented::generics::Vec_platform_value_Value, document_type_name: *mut std::os::raw::c_char, contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_Contenders_err_String { + let obj = platform_mobile::voting::get_vote_contenders(rust_sdk, >::ffi_from(index_name), >>::ffi_from(index_values), >::ffi_from(document_type_name), >::ffi_from(contract_id)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::put_vote_to_platform`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_put_vote_to_platform(rust_sdk: *mut platform_mobile::sdk::DashSdk, vote: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, voter_pro_tx_hash: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, voting_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_voting_votes_Vote_err_String { + let obj = platform_mobile::voting::put_vote_to_platform(rust_sdk, >::ffi_from(vote), >::ffi_from(voter_pro_tx_hash), >::ffi_from(voting_public_key), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_votes`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_votes(rust_sdk: *mut platform_mobile::sdk::DashSdk, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_Option_dpp_voting_votes_Vote_err_String { + let obj = platform_mobile::voting::get_votes(rust_sdk, >::ffi_from(data_contract_id)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_vote_polls`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_vote_polls(rust_sdk: *mut platform_mobile::sdk::DashSdk, start_time: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, start_time_included: bool, end_time: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, end_time_included: bool, limit: u16, offset: u16, order_ascending: bool) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + let obj = platform_mobile::voting::get_vote_polls(rust_sdk, >::ffi_from(start_time), start_time_included, >::ffi_from(end_time), end_time_included, limit, offset, order_ascending); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_last_vote_from_masternode`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_last_vote_from_masternode(rust_sdk: *mut platform_mobile::sdk::DashSdk, masternode_protxhash: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, index_name: *mut std::os::raw::c_char, index_values: *mut crate::fermented::generics::Vec_platform_value_Value, document_type_name: *mut std::os::raw::c_char, contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + let obj = platform_mobile::voting::get_last_vote_from_masternode(rust_sdk, >::ffi_from(masternode_protxhash), >::ffi_from(index_name), >>::ffi_from(index_values), >::ffi_from(document_type_name), >::ffi_from(contract_id)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_contested_resources`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_contested_resources(rust_sdk: *mut platform_mobile::sdk::DashSdk, document_type_name: *mut std::os::raw::c_char, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, limit: u16, start_at: *mut crate::fermented::types::platform_value::platform_value_Value, start_at_include: bool) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + let obj = platform_mobile::voting::get_contested_resources(rust_sdk, >::ffi_from(document_type_name), >::ffi_from(data_contract_id), limit, >::ffi_from_opt(start_at), start_at_include); + >>::ffi_to(obj) + } + } + + pub mod put { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`AssetLockProofFFI`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_mobile_put_AssetLockProofFFI { Instant(*mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI), Chain(*mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI) } + + impl ferment::FFIConversionFrom for platform_mobile_put_AssetLockProofFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_AssetLockProofFFI) -> platform_mobile::put::AssetLockProofFFI { + let ffi_ref = &*ffi; + match ffi_ref { + platform_mobile_put_AssetLockProofFFI::Instant(o_0) => platform_mobile::put::AssetLockProofFFI::Instant(>::ffi_from(*o_0)), + platform_mobile_put_AssetLockProofFFI::Chain(o_0) => platform_mobile::put::AssetLockProofFFI::Chain(>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_AssetLockProofFFI { + unsafe fn ffi_to_const(obj: platform_mobile::put::AssetLockProofFFI) -> *const platform_mobile_put_AssetLockProofFFI { + ferment::boxed(match obj { + platform_mobile::put::AssetLockProofFFI::Instant(o_0) => platform_mobile_put_AssetLockProofFFI::Instant(>::ffi_to(o_0)), + platform_mobile::put::AssetLockProofFFI::Chain(o_0) => platform_mobile_put_AssetLockProofFFI::Chain(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_mobile_put_AssetLockProofFFI { + fn drop(&mut self) { + unsafe { + match self { + platform_mobile_put_AssetLockProofFFI::Instant(o_0) => { ferment::unbox_any(*o_0); } + platform_mobile_put_AssetLockProofFFI::Chain(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_AssetLockProofFFI_Instant_ctor(o_o_0: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI) -> *mut platform_mobile_put_AssetLockProofFFI { ferment::boxed(platform_mobile_put_AssetLockProofFFI::Instant(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_AssetLockProofFFI_Chain_ctor(o_o_0: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI) -> *mut platform_mobile_put_AssetLockProofFFI { ferment::boxed(platform_mobile_put_AssetLockProofFFI::Chain(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_AssetLockProofFFI_destroy<>(ffi: *mut platform_mobile_put_AssetLockProofFFI) { ferment::unbox_any(ffi); } + + #[doc = "FFI-representation of the [`platform_mobile::put::put_document_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_put_document_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, document: *mut crate::fermented::types::dpp::document::dpp_document_Document, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_str: *mut std::os::raw::c_char, identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_document_Document_err_String { + let obj = platform_mobile::put::put_document_sdk(rust_sdk, >::ffi_from(document), >::ffi_from(data_contract_id), >::ffi_from(document_type_str), >::ffi_from(identity_public_key), >::ffi_from(block_height), >::ffi_from(core_block_height), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::replace_document_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_replace_document_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, document: *mut crate::fermented::types::dpp::document::dpp_document_Document, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_str: *mut std::os::raw::c_char, identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_document_Document_err_String { + let obj = platform_mobile::put::replace_document_sdk(rust_sdk, >::ffi_from(document), >::ffi_from(data_contract_id), >::ffi_from(document_type_str), >::ffi_from(identity_public_key), >::ffi_from(block_height), >::ffi_from(core_block_height), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::InstantAssetLockProofFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_clone(a: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI { + let obj = platform_mobile::put::InstantAssetLockProofFFI_clone(>::ffi_from(a)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::topup_identity_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_topup_identity_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, asset_lock_proof: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_AssetLockProofFFI, asset_lock_proof_private_key: *mut crate::fermented::generics::Vec_u8, is_testnet: bool) -> *mut crate::fermented::generics::Result_ok_u64_err_String { + let obj = platform_mobile::put::topup_identity_sdk(rust_sdk, >::ffi_from(identity), >::ffi_from(asset_lock_proof), >>::ffi_from(asset_lock_proof_private_key), is_testnet); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::put_identity_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_put_identity_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, asset_lock_proof: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_AssetLockProofFFI, asset_lock_proof_private_key: *mut crate::fermented::generics::Vec_u8, signer_context: usize, signer_callback: u64, is_testnet: bool) -> *mut crate::fermented::generics::Result_ok_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::put::put_identity_sdk(rust_sdk, >::ffi_from(identity), >::ffi_from(asset_lock_proof), >>::ffi_from(asset_lock_proof_private_key), signer_context, signer_callback, is_testnet); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`ChainAssetLockProofFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_put_ChainAssetLockProofFFI { + pub core_chain_locked_height: u32, + pub out_point: *mut platform_mobile::custom::OutPoint, + } + + impl ferment::FFIConversionFrom for platform_mobile_put_ChainAssetLockProofFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_ChainAssetLockProofFFI) -> platform_mobile::put::ChainAssetLockProofFFI { + let ffi_ref = &*ffi; + platform_mobile::put::ChainAssetLockProofFFI { core_chain_locked_height: ffi_ref.core_chain_locked_height, out_point: >::ffi_from(ffi_ref.out_point) } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_ChainAssetLockProofFFI { unsafe fn ffi_to_const(obj: platform_mobile::put::ChainAssetLockProofFFI) -> *const platform_mobile_put_ChainAssetLockProofFFI { ferment::boxed(platform_mobile_put_ChainAssetLockProofFFI { core_chain_locked_height: obj.core_chain_locked_height, out_point: >::ffi_to(obj.out_point) }) } } + + impl Drop for platform_mobile_put_ChainAssetLockProofFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + ferment::unbox_any(ffi_ref.out_point); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_ctor<>(core_chain_locked_height: u32, out_point: *mut platform_mobile::custom::OutPoint) -> *mut platform_mobile_put_ChainAssetLockProofFFI { ferment::boxed(platform_mobile_put_ChainAssetLockProofFFI { core_chain_locked_height, out_point }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_destroy<>(ffi: *mut platform_mobile_put_ChainAssetLockProofFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_get_core_chain_locked_height<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> u32 { (*obj).core_chain_locked_height } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_get_out_point<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> *mut platform_mobile::custom::OutPoint { (*obj).out_point } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_set_core_chain_locked_height<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> u32 { (*obj).core_chain_locked_height } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_set_out_point<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> *mut platform_mobile::custom::OutPoint { (*obj).out_point } + + #[doc = "FFI-representation of the [`platform_mobile::put::put_identity_update_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_put_identity_update_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, master_public_key_id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, add_public_keys: *mut crate::fermented::generics::Vec_dpp_identity_identity_public_key_IdentityPublicKey, disable_public_keys: *mut crate::fermented::generics::Vec_dpp_identity_identity_public_key_KeyID, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::put::put_identity_update_sdk(rust_sdk, >::ffi_from(identity), >::ffi_from(master_public_key_id), >>::ffi_from(add_public_keys), >>::ffi_from(disable_public_keys), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::ChainAssetLockProofFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_clone(a: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI) -> *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI { + let obj = platform_mobile::put::ChainAssetLockProofFFI_clone(>::ffi_from(a)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::OutPointFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_clone(a: *mut platform_mobile::custom::OutPoint) -> *mut platform_mobile::custom::OutPoint { + let obj = platform_mobile::put::OutPointFFI_clone(>::ffi_from(a)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`OutPointFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_put_OutPointFFI { + pub txid: *mut crate::fermented::generics::Arr_u8_32, + pub vout: u32, + } + + impl ferment::FFIConversionFrom for platform_mobile_put_OutPointFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_OutPointFFI) -> platform_mobile::put::OutPointFFI { + let ffi_ref = &*ffi; + platform_mobile::put::OutPointFFI { txid: >::ffi_from(ffi_ref.txid), vout: ffi_ref.vout } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_OutPointFFI { unsafe fn ffi_to_const(obj: platform_mobile::put::OutPointFFI) -> *const platform_mobile_put_OutPointFFI { ferment::boxed(platform_mobile_put_OutPointFFI { txid: >::ffi_to(obj.txid), vout: obj.vout }) } } + + impl Drop for platform_mobile_put_OutPointFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.txid); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_ctor<>(txid: *mut crate::fermented::generics::Arr_u8_32, vout: u32) -> *mut platform_mobile_put_OutPointFFI { ferment::boxed(platform_mobile_put_OutPointFFI { txid, vout }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_destroy<>(ffi: *mut platform_mobile_put_OutPointFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_get_txid<>(obj: *const platform_mobile_put_OutPointFFI) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).txid } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_get_vout<>(obj: *const platform_mobile_put_OutPointFFI) -> u32 { (*obj).vout } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_set_txid<>(obj: *const platform_mobile_put_OutPointFFI) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).txid } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_set_vout<>(obj: *const platform_mobile_put_OutPointFFI) -> u32 { (*obj).vout } + + #[doc = "FFI-representation of the [`InstantAssetLockProofFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_put_InstantAssetLockProofFFI { + pub instant_lock: *mut crate::fermented::generics::Vec_u8, + pub transaction: *mut crate::fermented::generics::Vec_u8, + pub output_index: u32, + } + + impl ferment::FFIConversionFrom for platform_mobile_put_InstantAssetLockProofFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_InstantAssetLockProofFFI) -> platform_mobile::put::InstantAssetLockProofFFI { + let ffi_ref = &*ffi; + platform_mobile::put::InstantAssetLockProofFFI { instant_lock: >>::ffi_from(ffi_ref.instant_lock), transaction: >>::ffi_from(ffi_ref.transaction), output_index: ffi_ref.output_index } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_InstantAssetLockProofFFI { unsafe fn ffi_to_const(obj: platform_mobile::put::InstantAssetLockProofFFI) -> *const platform_mobile_put_InstantAssetLockProofFFI { ferment::boxed(platform_mobile_put_InstantAssetLockProofFFI { instant_lock: >>::ffi_to(obj.instant_lock), transaction: >>::ffi_to(obj.transaction), output_index: obj.output_index }) } } + + impl Drop for platform_mobile_put_InstantAssetLockProofFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.instant_lock); + ferment::unbox_any(ffi_ref.transaction); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_ctor<>(instant_lock: *mut crate::fermented::generics::Vec_u8, transaction: *mut crate::fermented::generics::Vec_u8, output_index: u32) -> *mut platform_mobile_put_InstantAssetLockProofFFI { ferment::boxed(platform_mobile_put_InstantAssetLockProofFFI { instant_lock, transaction, output_index }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_destroy<>(ffi: *mut platform_mobile_put_InstantAssetLockProofFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_get_instant_lock<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).instant_lock } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_get_transaction<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).transaction } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_get_output_index<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> u32 { (*obj).output_index } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_set_instant_lock<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).instant_lock } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_set_transaction<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).transaction } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_set_output_index<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> u32 { (*obj).output_index } + } + + pub mod fetch_document { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`StartPoint`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_mobile_fetch_document_StartPoint { StartAfter(*mut crate::fermented::generics::Vec_u8), StartAt(*mut crate::fermented::generics::Vec_u8) } + + impl ferment::FFIConversionFrom for platform_mobile_fetch_document_StartPoint { + unsafe fn ffi_from_const(ffi: *const platform_mobile_fetch_document_StartPoint) -> platform_mobile::fetch_document::StartPoint { + let ffi_ref = &*ffi; + match ffi_ref { + platform_mobile_fetch_document_StartPoint::StartAfter(o_0) => platform_mobile::fetch_document::StartPoint::StartAfter(>>::ffi_from(*o_0)), + platform_mobile_fetch_document_StartPoint::StartAt(o_0) => platform_mobile::fetch_document::StartPoint::StartAt(>>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_mobile_fetch_document_StartPoint { + unsafe fn ffi_to_const(obj: platform_mobile::fetch_document::StartPoint) -> *const platform_mobile_fetch_document_StartPoint { + ferment::boxed(match obj { + platform_mobile::fetch_document::StartPoint::StartAfter(o_0) => platform_mobile_fetch_document_StartPoint::StartAfter(>>::ffi_to(o_0)), + platform_mobile::fetch_document::StartPoint::StartAt(o_0) => platform_mobile_fetch_document_StartPoint::StartAt(>>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_mobile_fetch_document_StartPoint { + fn drop(&mut self) { + unsafe { + match self { + platform_mobile_fetch_document_StartPoint::StartAfter(o_0) => { ferment::unbox_any(*o_0); } + platform_mobile_fetch_document_StartPoint::StartAt(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_StartPoint_StartAfter_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_mobile_fetch_document_StartPoint { ferment::boxed(platform_mobile_fetch_document_StartPoint::StartAfter(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_StartPoint_StartAt_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_mobile_fetch_document_StartPoint { ferment::boxed(platform_mobile_fetch_document_StartPoint::StartAt(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_StartPoint_destroy<>(ffi: *mut platform_mobile_fetch_document_StartPoint) { ferment::unbox_any(ffi); } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_document::document_to_string`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_document_to_string(document: *mut crate::fermented::types::dpp::document::dpp_document_Document) -> *mut std::os::raw::c_char { + let obj = platform_mobile::fetch_document::document_to_string(>::ffi_from(document)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_document::fetch_documents_with_query_and_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_fetch_documents_with_query_and_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type: *mut std::os::raw::c_char, where_clauses: *mut crate::fermented::generics::Vec_drive_query_conditions_WhereClause, order_clauses: *mut crate::fermented::generics::Vec_drive_query_ordering_OrderClause, limit: u32, start: *mut crate::fermented::types::platform_mobile::fetch_document::platform_mobile_fetch_document_StartPoint) -> *mut crate::fermented::generics::Result_ok_Vec_dpp_document_Document_err_String { + let obj = platform_mobile::fetch_document::fetch_documents_with_query_and_sdk(rust_sdk, >::ffi_from(data_contract_id), >::ffi_from(document_type), >>::ffi_from(where_clauses), >>::ffi_from(order_clauses), limit, >::ffi_from_opt(start)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_document::deserialize_document_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_deserialize_document_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, bytes: *mut crate::fermented::generics::Vec_u8, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type: *mut std::os::raw::c_char) -> *mut crate::fermented::generics::Result_ok_dpp_document_Document_err_String { + let obj = platform_mobile::fetch_document::deserialize_document_sdk(rust_sdk, >>::ffi_from(bytes), >::ffi_from(data_contract_id), >::ffi_from(document_type)); + >>::ffi_to(obj) + } + } + + pub mod config { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::config::testnet_address_list`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_config_testnet_address_list() -> *mut crate::fermented::generics::Vec_String { + let obj = platform_mobile::config::testnet_address_list(); + >>::ffi_to(obj) + } + } + + pub mod fetch_identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::fetch_identity::fetch_identity_with_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_identity_fetch_identity_with_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_Option_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::fetch_identity::fetch_identity_with_sdk(rust_sdk, >::ffi_from(identifier)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_identity::fetch_identity_with_keyhash_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_identity_fetch_identity_with_keyhash_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, key_hash: *mut crate::fermented::generics::Arr_u8_20) -> *mut crate::fermented::generics::Result_ok_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::fetch_identity::fetch_identity_with_keyhash_sdk(rust_sdk, >::ffi_from(key_hash)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_identity::fetch_identity_balance_with_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_identity_fetch_identity_balance_with_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_u64_err_String { + let obj = platform_mobile::fetch_identity::fetch_identity_balance_with_sdk(rust_sdk, >::ffi_from(identifier)); + >>::ffi_to(obj) + } + } + } + + pub mod dapi_grpc { + use crate as dash_sdk_bindings; + + #[cfg(feature = "core")] + pub mod core { + use crate as dash_sdk_bindings; + } + + pub mod mock { use crate as dash_sdk_bindings; } + + #[cfg(feature = "serde")] + pub mod deserialization { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "drive")] + pub mod drive { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "platform")] + pub mod platform { + use crate as dash_sdk_bindings; + } + } +} + +#[allow( + clippy::let_and_return, + clippy::suspicious_else_formatting, + clippy::redundant_field_names, + dead_code, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + redundant_semicolons, + unreachable_patterns, + unused_braces, + unused_imports, + unused_parens, + unused_qualifications, + unused_unsafe, + unused_variables +)] +pub mod generics { + use crate as dash_sdk_bindings; + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_dpp_voting_votes_Vote_err_String { + pub ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_dpp_voting_votes_Vote_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_dpp_voting_votes_Vote_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_dpp_voting_votes_Vote_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_voting_votes_Vote_err_String_ctor(ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, error: *mut std::os::raw::c_char) -> *mut Result_ok_dpp_voting_votes_Vote_err_String { ferment::boxed(Result_ok_dpp_voting_votes_Vote_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_voting_votes_Vote_err_String_destroy(ffi: *mut Result_ok_dpp_voting_votes_Vote_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_Tuple_platform_value_Value_platform_value_Value { + pub count: usize, + pub values: *mut *mut crate::fermented::generics::Tuple_platform_value_Value_platform_value_Value, + } + + impl ferment::FFIConversionFrom> for Vec_Tuple_platform_value_Value_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const Vec_Tuple_platform_value_Value_platform_value_Value) -> Vec<(platform_value::Value, platform_value::Value)> { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_Tuple_platform_value_Value_platform_value_Value { unsafe fn ffi_to_const(obj: Vec<(platform_value::Value, platform_value::Value)>) -> *const Vec_Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_Tuple_platform_value_Value_platform_value_Value { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_platform_value_Value_platform_value_Value_ctor(count: usize, values: *mut *mut crate::fermented::generics::Tuple_platform_value_Value_platform_value_Value) -> *mut Vec_Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Vec_Tuple_platform_value_Value_platform_value_Value { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_platform_value_Value_platform_value_Value_destroy(ffi: *mut Vec_Tuple_platform_value_Value_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_dpp_document_Document_err_String { + pub ok: *mut crate::fermented::types::dpp::document::dpp_document_Document, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_dpp_document_Document_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_dpp_document_Document_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_dpp_document_Document_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_dpp_document_Document_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_dpp_document_Document_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_document_Document_err_String_ctor(ok: *mut crate::fermented::types::dpp::document::dpp_document_Document, error: *mut std::os::raw::c_char) -> *mut Result_ok_dpp_document_Document_err_String { ferment::boxed(Result_ok_dpp_document_Document_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_document_Document_err_String_destroy(ffi: *mut Result_ok_dpp_document_Document_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { + pub o_0: *mut crate::fermented::types::dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo, + pub o_1: *mut crate::fermented::types::dpp::block::block_info::dpp_block_block_info_BlockInfo, + } + + impl ferment::FFIConversionFrom<(dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo)> for Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { + unsafe fn ffi_from_const(ffi: *const Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo) -> (dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo) { + let ffi_ref = &*ffi; + (ferment::FFIConversionFrom::ffi_from(ffi_ref.o_0), ferment::FFIConversionFrom::ffi_from(ffi_ref.o_1)) + } + } + + impl ferment::FFIConversionTo<(dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo)> for Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { unsafe fn ffi_to_const(obj: (dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo)) -> *const Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { ferment::boxed(Self { o_0: ferment::FFIConversionTo::ffi_to(obj.0), o_1: ferment::FFIConversionTo::ffi_to(obj.1) }) } } + + impl Drop for Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { + fn drop(&mut self) { + unsafe { + ferment::unbox_any(self.o_0); + ferment::unbox_any(self.o_1); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_ctor(o_0: *mut crate::fermented::types::dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo, o_1: *mut crate::fermented::types::dpp::block::block_info::dpp_block_block_info_BlockInfo) -> *mut Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { ferment::boxed(Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { o_0, o_1 }) } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_destroy(ffi: *mut Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_document_Document { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::document::dpp_document_Document, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_document_Document { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_document_Document) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_document_Document { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_document_Document { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_document_Document { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_document_Document_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::document::dpp_document_Document) -> *mut Vec_dpp_document_Document { ferment::boxed(Vec_dpp_document_Document { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_document_Document_destroy(ffi: *mut Vec_dpp_document_Document) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Option_dpp_identity_identity_Identity_err_String { + pub ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Option_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Option_dpp_identity_identity_Identity_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from_opt(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Option_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Option_dpp_identity_identity_Identity_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to_opt(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Option_dpp_identity_identity_Identity_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_identity_identity_Identity_err_String_ctor(ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, error: *mut std::os::raw::c_char) -> *mut Result_ok_Option_dpp_identity_identity_Identity_err_String { ferment::boxed(Result_ok_Option_dpp_identity_identity_Identity_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_identity_identity_Identity_err_String_destroy(ffi: *mut Result_ok_Option_dpp_identity_identity_Identity_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_String_values_platform_value_Value { + pub count: usize, + pub keys: *mut *mut std::os::raw::c_char, + pub values: *mut *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom> for std_collections_Map_keys_String_values_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_String_values_platform_value_Value) -> std::collections::BTreeMap { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for std_collections_Map_keys_String_values_platform_value_Value { unsafe fn ffi_to_const(obj: std::collections::BTreeMap) -> *const std_collections_Map_keys_String_values_platform_value_Value { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_String_values_platform_value_Value { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr_composer(self.keys, self.count, ferment::unbox_string); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_String_values_platform_value_Value_ctor(count: usize, keys: *mut *mut std::os::raw::c_char, values: *mut *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut std_collections_Map_keys_String_values_platform_value_Value { ferment::boxed(std_collections_Map_keys_String_values_platform_value_Value { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_String_values_platform_value_Value_destroy(ffi: *mut std_collections_Map_keys_String_values_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + pub count: usize, + pub values: *mut *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll, + } + + impl ferment::FFIConversionFrom)>> for Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> Vec<(dpp::prelude::TimestampMillis, Vec)> { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo)>> for Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { unsafe fn ffi_to_const(obj: Vec<(dpp::prelude::TimestampMillis, Vec)>) -> *const Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(count: usize, values: *mut *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> *mut Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(ffi: *mut Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + pub o_0: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, + pub o_1: *mut crate::fermented::generics::Vec_dpp_voting_vote_polls_VotePoll, + } + + impl ferment::FFIConversionFrom<(dpp::prelude::TimestampMillis, Vec)> for Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> (dpp::prelude::TimestampMillis, Vec) { + let ffi_ref = &*ffi; + (ferment::FFIConversionFrom::ffi_from(ffi_ref.o_0), ferment::FFIConversionFrom::ffi_from(ffi_ref.o_1)) + } + } + + impl ferment::FFIConversionTo<(dpp::prelude::TimestampMillis, Vec)> for Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { unsafe fn ffi_to_const(obj: (dpp::prelude::TimestampMillis, Vec)) -> *const Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Self { o_0: ferment::FFIConversionTo::ffi_to(obj.0), o_1: ferment::FFIConversionTo::ffi_to(obj.1) }) } } + + impl Drop for Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + fn drop(&mut self) { + unsafe { + ferment::unbox_any(self.o_0); + ferment::unbox_any(self.o_1); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(o_0: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, o_1: *mut crate::fermented::generics::Vec_dpp_voting_vote_polls_VotePoll) -> *mut Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { o_0, o_1 }) } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(ffi: *mut Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Vec_u8_err_String { + pub ok: *mut crate::fermented::generics::Vec_u8, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Vec_u8_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Vec_u8_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >>::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Vec_u8_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Vec_u8_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Vec_u8_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_u8_err_String_ctor(ok: *mut crate::fermented::generics::Vec_u8, error: *mut std::os::raw::c_char) -> *mut Result_ok_Vec_u8_err_String { ferment::boxed(Result_ok_Vec_u8_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_u8_err_String_destroy(ffi: *mut Result_ok_Vec_u8_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Option_dpp_voting_votes_Vote_err_String { + pub ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Option_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Option_dpp_voting_votes_Vote_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from_opt(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Option_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Option_dpp_voting_votes_Vote_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to_opt(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Option_dpp_voting_votes_Vote_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_voting_votes_Vote_err_String_ctor(ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, error: *mut std::os::raw::c_char) -> *mut Result_ok_Option_dpp_voting_votes_Vote_err_String { ferment::boxed(Result_ok_Option_dpp_voting_votes_Vote_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_voting_votes_Vote_err_String_destroy(ffi: *mut Result_ok_Option_dpp_voting_votes_Vote_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Vec_dpp_document_Document_err_String { + pub ok: *mut crate::fermented::generics::Vec_dpp_document_Document, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Vec_dpp_document_Document_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Vec_dpp_document_Document_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >>::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Vec_dpp_document_Document_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Vec_dpp_document_Document_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Vec_dpp_document_Document_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_dpp_document_Document_err_String_ctor(ok: *mut crate::fermented::generics::Vec_dpp_document_Document, error: *mut std::os::raw::c_char) -> *mut Result_ok_Vec_dpp_document_Document_err_String { ferment::boxed(Result_ok_Vec_dpp_document_Document_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_dpp_document_Document_err_String_destroy(ffi: *mut Result_ok_Vec_dpp_document_Document_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_u8 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom> for Vec_u8 { + unsafe fn ffi_from_const(ffi: *const Vec_u8) -> Vec { + let ffi_ref = &*ffi; + ferment::from_primitive_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_u8 { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_u8 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Vec_u8 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_u8_ctor(count: usize, values: *mut u8) -> *mut Vec_u8 { ferment::boxed(Vec_u8 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_u8_destroy(ffi: *mut Vec_u8) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_platform_value_Value { + pub count: usize, + pub values: *mut *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom> for Vec_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const Vec_platform_value_Value) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_platform_value_Value { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_platform_value_Value { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_platform_value_Value { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_platform_value_Value_ctor(count: usize, values: *mut *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut Vec_platform_value_Value { ferment::boxed(Vec_platform_value_Value { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_platform_value_Value_destroy(ffi: *mut Vec_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_dpp_identity_identity_Identity_err_String { + pub ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_dpp_identity_identity_Identity_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_dpp_identity_identity_Identity_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_dpp_identity_identity_Identity_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_identity_identity_Identity_err_String_ctor(ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, error: *mut std::os::raw::c_char) -> *mut Result_ok_dpp_identity_identity_Identity_err_String { ferment::boxed(Result_ok_dpp_identity_identity_Identity_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_identity_identity_Identity_err_String_destroy(ffi: *mut Result_ok_dpp_identity_identity_Identity_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_identity_identity_public_key_IdentityPublicKey { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_identity_identity_public_key_IdentityPublicKey) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_identity_identity_public_key_IdentityPublicKey { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_identity_identity_public_key_IdentityPublicKey { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_IdentityPublicKey_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey) -> *mut Vec_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(Vec_dpp_identity_identity_public_key_IdentityPublicKey { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_IdentityPublicKey_destroy(ffi: *mut Vec_dpp_identity_identity_public_key_IdentityPublicKey) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_drive_query_ordering_OrderClause { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause, + } + + impl ferment::FFIConversionFrom> for Vec_drive_query_ordering_OrderClause { + unsafe fn ffi_from_const(ffi: *const Vec_drive_query_ordering_OrderClause) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_drive_query_ordering_OrderClause { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_drive_query_ordering_OrderClause { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_drive_query_ordering_OrderClause { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_ordering_OrderClause_ctor(count: usize, values: *mut *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause) -> *mut Vec_drive_query_ordering_OrderClause { ferment::boxed(Vec_drive_query_ordering_OrderClause { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_ordering_OrderClause_destroy(ffi: *mut Vec_drive_query_ordering_OrderClause) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + pub ok: *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from_opt(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to_opt(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_ctor(ok: *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI, error: *mut std::os::raw::c_char) -> *mut Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { ferment::boxed(Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_destroy(ffi: *mut Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + pub count: usize, + pub keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub values: *mut *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument, + } + + impl ferment::FFIConversionFrom> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> std::collections::BTreeMap { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { unsafe fn ffi_to_const(obj: std::collections::BTreeMap) -> *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr(self.keys, self.count); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_ctor(count: usize, keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, values: *mut *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { ferment::boxed(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy(ffi: *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_String { + pub count: usize, + pub values: *mut *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Vec_String { + unsafe fn ffi_from_const(ffi: *const Vec_String) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_String { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_String { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_String { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr_composer(self.values, self.count, ferment::unbox_string); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_String_ctor(count: usize, values: *mut *mut std::os::raw::c_char) -> *mut Vec_String { ferment::boxed(Vec_String { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_String_destroy(ffi: *mut Vec_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_2 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 2]> for Arr_u8_2 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_2) -> [u8; 2] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 2]> for Arr_u8_2 { unsafe fn ffi_to_const(obj: [u8; 2]) -> *const Arr_u8_2 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_2 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_2_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_2 { ferment::boxed(Arr_u8_2 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_2_destroy(ffi: *mut Arr_u8_2) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_ContestedResources_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ContestedResources_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_ContestedResources_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_ContestedResources_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ContestedResources_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_ContestedResources_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_20 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 20]> for Arr_u8_20 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_20) -> [u8; 20] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 20]> for Arr_u8_20 { unsafe fn ffi_to_const(obj: [u8; 20]) -> *const Arr_u8_20 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_20 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_20_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_20 { ferment::boxed(Arr_u8_20 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_20_destroy(ffi: *mut Arr_u8_20) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_voting_vote_polls_VotePoll { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_voting_vote_polls_VotePoll) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_voting_vote_polls_VotePoll { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_voting_vote_polls_VotePoll { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_voting_vote_polls_VotePoll_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll) -> *mut Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Vec_dpp_voting_vote_polls_VotePoll { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_voting_vote_polls_VotePoll_destroy(ffi: *mut Vec_dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Tuple_platform_value_Value_platform_value_Value { + pub o_0: *mut crate::fermented::types::platform_value::platform_value_Value, + pub o_1: *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom<(platform_value::Value, platform_value::Value)> for Tuple_platform_value_Value_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const Tuple_platform_value_Value_platform_value_Value) -> (platform_value::Value, platform_value::Value) { + let ffi_ref = &*ffi; + (ferment::FFIConversionFrom::ffi_from(ffi_ref.o_0), ferment::FFIConversionFrom::ffi_from(ffi_ref.o_1)) + } + } + + impl ferment::FFIConversionTo<(platform_value::Value, platform_value::Value)> for Tuple_platform_value_Value_platform_value_Value { unsafe fn ffi_to_const(obj: (platform_value::Value, platform_value::Value)) -> *const Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Self { o_0: ferment::FFIConversionTo::ffi_to(obj.0), o_1: ferment::FFIConversionTo::ffi_to(obj.1) }) } } + + impl Drop for Tuple_platform_value_Value_platform_value_Value { + fn drop(&mut self) { + unsafe { + ferment::unbox_any(self.o_0); + ferment::unbox_any(self.o_1); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_platform_value_Value_platform_value_Value_ctor(o_0: *mut crate::fermented::types::platform_value::platform_value_Value, o_1: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Tuple_platform_value_Value_platform_value_Value { o_0, o_1 }) } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_platform_value_Value_platform_value_Value_destroy(ffi: *mut Tuple_platform_value_Value_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { + pub count: usize, + pub keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub values: *mut *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote, + } + + impl ferment::FFIConversionFrom>> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote) -> std::collections::BTreeMap> { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from_opt(o)) + } + } + + impl ferment::FFIConversionTo>> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { unsafe fn ffi_to_const(obj: std::collections::BTreeMap>) -> *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_opt_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr(self.keys, self.count); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_ctor(count: usize, keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, values: *mut *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) -> *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { ferment::boxed(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_destroy(ffi: *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_drive_query_conditions_WhereClause { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause, + } + + impl ferment::FFIConversionFrom> for Vec_drive_query_conditions_WhereClause { + unsafe fn ffi_from_const(ffi: *const Vec_drive_query_conditions_WhereClause) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_drive_query_conditions_WhereClause { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_drive_query_conditions_WhereClause { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_drive_query_conditions_WhereClause { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_conditions_WhereClause_ctor(count: usize, values: *mut *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause) -> *mut Vec_drive_query_conditions_WhereClause { ferment::boxed(Vec_drive_query_conditions_WhereClause { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_conditions_WhereClause_destroy(ffi: *mut Vec_drive_query_conditions_WhereClause) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_32 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 32]> for Arr_u8_32 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_32) -> [u8; 32] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 32]> for Arr_u8_32 { unsafe fn ffi_to_const(obj: [u8; 32]) -> *const Arr_u8_32 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_32 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_32_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_32 { ferment::boxed(Arr_u8_32 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_32_destroy(ffi: *mut Arr_u8_32) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_drive_proof_verifier_types_ContestedResource { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource, + } + + impl ferment::FFIConversionFrom> for Vec_drive_proof_verifier_types_ContestedResource { + unsafe fn ffi_from_const(ffi: *const Vec_drive_proof_verifier_types_ContestedResource) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_drive_proof_verifier_types_ContestedResource { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_drive_proof_verifier_types_ContestedResource { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_drive_proof_verifier_types_ContestedResource { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_proof_verifier_types_ContestedResource_ctor(count: usize, values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource) -> *mut Vec_drive_proof_verifier_types_ContestedResource { ferment::boxed(Vec_drive_proof_verifier_types_ContestedResource { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_proof_verifier_types_ContestedResource_destroy(ffi: *mut Vec_drive_proof_verifier_types_ContestedResource) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { + pub obj: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + } + + impl Drop for platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { fn drop(&mut self) { unsafe { ferment::unbox_any(self.obj); } } } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract_ctor(obj: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { ferment::boxed(platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { obj }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract_destroy(ffi: *mut platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_BTreeSet_drive_proof_verifier_types_Voter { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter, + } + + impl ferment::FFIConversionFrom> for std_collections_BTreeSet_drive_proof_verifier_types_Voter { + unsafe fn ffi_from_const(ffi: *const std_collections_BTreeSet_drive_proof_verifier_types_Voter) -> std::collections::BTreeSet { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for std_collections_BTreeSet_drive_proof_verifier_types_Voter { unsafe fn ffi_to_const(obj: std::collections::BTreeSet) -> *const std_collections_BTreeSet_drive_proof_verifier_types_Voter { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for std_collections_BTreeSet_drive_proof_verifier_types_Voter { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_BTreeSet_drive_proof_verifier_types_Voter_ctor(count: usize, values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter) -> *mut std_collections_BTreeSet_drive_proof_verifier_types_Voter { ferment::boxed(std_collections_BTreeSet_drive_proof_verifier_types_Voter { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_BTreeSet_drive_proof_verifier_types_Voter_destroy(ffi: *mut std_collections_BTreeSet_drive_proof_verifier_types_Voter) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_Contenders_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_Contenders_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_Contenders_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_Contenders_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_Contenders_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_Contenders_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_Contenders_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_Contenders_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_Contenders_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_Contenders_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_Contenders_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + pub count: usize, + pub keys: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, + pub values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, + } + + impl ferment::FFIConversionFrom> for std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey) -> std::collections::BTreeMap { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { unsafe fn ffi_to_const(obj: std::collections::BTreeMap) -> *const std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr(self.keys, self.count); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_ctor(count: usize, keys: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey) -> *mut std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_destroy(ffi: *mut std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_36 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 36]> for Arr_u8_36 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_36) -> [u8; 36] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 36]> for Arr_u8_36 { unsafe fn ffi_to_const(obj: [u8; 36]) -> *const Arr_u8_36 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_36 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_36_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_36 { ferment::boxed(Arr_u8_36 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_36_destroy(ffi: *mut Arr_u8_36) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_u64_err_String { + pub ok: *mut u64, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_u64_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_u64_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| *o, ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_u64_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_u64_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::boxed(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_u64_err_String { + fn drop(&mut self) { + unsafe { + ferment::destroy_opt_primitive(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_u64_err_String_ctor(ok: *mut u64, error: *mut std::os::raw::c_char) -> *mut Result_ok_u64_err_String { ferment::boxed(Result_ok_u64_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_u64_err_String_destroy(ffi: *mut Result_ok_u64_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_identity_identity_public_key_KeyID { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_identity_identity_public_key_KeyID { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_identity_identity_public_key_KeyID) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_identity_identity_public_key_KeyID { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_identity_identity_public_key_KeyID { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_identity_identity_public_key_KeyID { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_KeyID_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID) -> *mut Vec_dpp_identity_identity_public_key_KeyID { ferment::boxed(Vec_dpp_identity_identity_public_key_KeyID { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_KeyID_destroy(ffi: *mut Vec_dpp_identity_identity_public_key_KeyID) { ferment::unbox_any(ffi); } +} \ No newline at end of file diff --git a/dash-sdk-bindings/.gitignore b/dash-sdk-bindings/.gitignore index f8fef9d..9f97022 100644 --- a/dash-sdk-bindings/.gitignore +++ b/dash-sdk-bindings/.gitignore @@ -1,2 +1 @@ -target/ -fermented.rs \ No newline at end of file +target/ \ No newline at end of file diff --git a/dash-sdk-bindings/Cargo.lock b/dash-sdk-bindings/Cargo.lock index dc571c1..c124f72 100644 --- a/dash-sdk-bindings/Cargo.lock +++ b/dash-sdk-bindings/Cargo.lock @@ -862,7 +862,7 @@ dependencies = [ [[package]] name = "dash-sdk-bindings" -version = "2.0.4" +version = "2.0.5" dependencies = [ "cbindgen 0.26.0", "dash-sdk", @@ -3023,7 +3023,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "platform-mobile" -version = "2.0.4" +version = "2.0.5" dependencies = [ "async-trait", "base64 0.13.1", diff --git a/dash-sdk-bindings/Cargo.toml b/dash-sdk-bindings/Cargo.toml index 648968f..60eb222 100644 --- a/dash-sdk-bindings/Cargo.toml +++ b/dash-sdk-bindings/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "dash-sdk-bindings" -version = "2.0.4" +version = "2.0.5" edition = "2021" [dependencies] diff --git a/dash-sdk-bindings/README.md b/dash-sdk-bindings/README.md index 6e81854..e787ac7 100644 --- a/dash-sdk-bindings/README.md +++ b/dash-sdk-bindings/README.md @@ -4,13 +4,12 @@ ### Clone Repos ```bash -# create a containing directory +# create a containing directory such as `dashpay` mkdir dashpay cd dashpay git clone https://github.com/dashpay/kotlin-platform.git -git clone --branch feat/add-android-support https://github.com/hashengineering/rs-x11-hash.git # the android PR is not yet merged -git clone --branch ferment-1.7.1 https://github.com/hashengineering/platform.git +git clone --branch ferment-2.0 https://github.com/hashengineering/platform.git ``` ### Build diff --git a/dash-sdk-bindings/src/fermented.rs b/dash-sdk-bindings/src/fermented.rs new file mode 100644 index 0000000..4e6ed43 --- /dev/null +++ b/dash-sdk-bindings/src/fermented.rs @@ -0,0 +1,8145 @@ +#[allow( + clippy::let_and_return, + clippy::suspicious_else_formatting, + clippy::redundant_field_names, + dead_code, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + redundant_semicolons, + unreachable_patterns, + unused_braces, + unused_imports, + unused_parens, + unused_qualifications, + unused_unsafe, + unused_variables +)] +pub mod types { + pub mod rs_dapi_client { + use crate as dash_sdk_bindings; + + pub mod transport { use crate as dash_sdk_bindings; } + } + + pub mod dpp { + use crate as dash_sdk_bindings; + + pub mod fee { + use crate as dash_sdk_bindings; + + pub mod epoch { + use crate as dash_sdk_bindings; + + #[cfg(feature = "fee-distribution")] + pub mod distribution { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(feature = "fee-distribution")] + pub mod fee_result { + use crate as dash_sdk_bindings; + + pub mod refunds { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + pub mod default_costs { use crate as dash_sdk_bindings; } + } + + pub mod group { + use crate as dash_sdk_bindings; + + pub mod group_action { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "core-types")] + pub mod core_types { + use crate as dash_sdk_bindings; + + pub mod validator_set { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod validator { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod bls { use crate as dash_sdk_bindings; } + + pub mod asset_lock { + use crate as dash_sdk_bindings; + + pub mod reduced_asset_lock_value { use crate as dash_sdk_bindings; } + } + + pub mod validation { + use crate as dash_sdk_bindings; + + #[cfg(feature = "validation")] + pub mod byte_array_keyword { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "validation")] + pub mod json_schema_validator { + use crate as dash_sdk_bindings; + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod new { use crate as dash_sdk_bindings; } + + pub mod compile { use crate as dash_sdk_bindings; } + + pub mod validate { use crate as dash_sdk_bindings; } + } + } + } + + pub mod block { + use crate as dash_sdk_bindings; + + pub mod block_info { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`BlockInfo`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_block_block_info_BlockInfo { + pub time_ms: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, + pub height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub core_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + pub epoch: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch, + } + + impl ferment::FFIConversionFrom for dpp_block_block_info_BlockInfo { + unsafe fn ffi_from_const(ffi: *const dpp_block_block_info_BlockInfo) -> dpp::block::block_info::BlockInfo { + let ffi_ref = &*ffi; + dpp::block::block_info::BlockInfo { time_ms: >::ffi_from(ffi_ref.time_ms), height: >::ffi_from(ffi_ref.height), core_height: >::ffi_from(ffi_ref.core_height), epoch: >::ffi_from(ffi_ref.epoch) } + } + } + + impl ferment::FFIConversionTo for dpp_block_block_info_BlockInfo { unsafe fn ffi_to_const(obj: dpp::block::block_info::BlockInfo) -> *const dpp_block_block_info_BlockInfo { ferment::boxed(dpp_block_block_info_BlockInfo { time_ms: >::ffi_to(obj.time_ms), height: >::ffi_to(obj.height), core_height: >::ffi_to(obj.core_height), epoch: >::ffi_to(obj.epoch) }) } } + + impl Drop for dpp_block_block_info_BlockInfo { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.time_ms); + ferment::unbox_any(ffi_ref.height); + ferment::unbox_any(ffi_ref.core_height); + ferment::unbox_any(ffi_ref.epoch); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_ctor<>(time_ms: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, core_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, epoch: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch) -> *mut dpp_block_block_info_BlockInfo { ferment::boxed(dpp_block_block_info_BlockInfo { time_ms, height, core_height, epoch }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_destroy<>(ffi: *mut dpp_block_block_info_BlockInfo) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_time_ms<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis { (*obj).time_ms } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_core_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).core_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_get_epoch<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch { (*obj).epoch } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_time_ms<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis { (*obj).time_ms } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_core_height<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).core_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_block_info_BlockInfo_set_epoch<>(obj: *const dpp_block_block_info_BlockInfo) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_Epoch { (*obj).epoch } + } + + pub mod extended_block_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod epoch { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`EpochIndex`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_block_epoch_EpochIndex(u16); + + impl ferment::FFIConversionFrom for dpp_block_epoch_EpochIndex { + unsafe fn ffi_from_const(ffi: *const dpp_block_epoch_EpochIndex) -> dpp::block::epoch::EpochIndex { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_block_epoch_EpochIndex { unsafe fn ffi_to_const(obj: dpp::block::epoch::EpochIndex) -> *const dpp_block_epoch_EpochIndex { ferment::boxed(dpp_block_epoch_EpochIndex(obj)) } } + + impl Drop for dpp_block_epoch_EpochIndex { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_ctor<>(o_0: u16) -> *mut dpp_block_epoch_EpochIndex { ferment::boxed(dpp_block_epoch_EpochIndex(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_destroy<>(ffi: *mut dpp_block_epoch_EpochIndex) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_get_0<>(obj: *const dpp_block_epoch_EpochIndex) -> u16 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_EpochIndex_set_0<>(obj: *const dpp_block_epoch_EpochIndex) -> u16 { (*obj).0 } + + #[doc = "FFI-representation of the [`Epoch`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_block_epoch_Epoch { + pub index: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex, + pub key: *mut crate::fermented::generics::Arr_u8_2, + } + + impl ferment::FFIConversionFrom for dpp_block_epoch_Epoch { + unsafe fn ffi_from_const(ffi: *const dpp_block_epoch_Epoch) -> dpp::block::epoch::Epoch { + let ffi_ref = &*ffi; + dpp::block::epoch::Epoch { index: >::ffi_from(ffi_ref.index), key: >::ffi_from(ffi_ref.key) } + } + } + + impl ferment::FFIConversionTo for dpp_block_epoch_Epoch { unsafe fn ffi_to_const(obj: dpp::block::epoch::Epoch) -> *const dpp_block_epoch_Epoch { ferment::boxed(dpp_block_epoch_Epoch { index: >::ffi_to(obj.index), key: >::ffi_to(obj.key) }) } } + + impl Drop for dpp_block_epoch_Epoch { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.index); + ferment::unbox_any(ffi_ref.key); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_ctor<>(index: *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex, key: *mut crate::fermented::generics::Arr_u8_2) -> *mut dpp_block_epoch_Epoch { ferment::boxed(dpp_block_epoch_Epoch { index, key }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_destroy<>(ffi: *mut dpp_block_epoch_Epoch) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_get_index<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex { (*obj).index } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_get_key<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::generics::Arr_u8_2 { (*obj).key } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_set_index<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::types::dpp::block::epoch::dpp_block_epoch_EpochIndex { (*obj).index } + + #[no_mangle] + pub unsafe extern "C" fn dpp_block_epoch_Epoch_set_key<>(obj: *const dpp_block_epoch_Epoch) -> *mut crate::fermented::generics::Arr_u8_2 { (*obj).key } + } + + pub mod extended_epoch_info { use crate as dash_sdk_bindings; } + + pub mod finalized_epoch_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod withdrawal { + use crate as dash_sdk_bindings; + + #[cfg(feature = "system_contracts")] + pub mod document_try_into_asset_unlock_base_transaction_info { + use crate as dash_sdk_bindings; + } + + pub mod daily_withdrawal_limit { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod errors { + use crate as dash_sdk_bindings; + + pub mod non_consensus_error { use crate as dash_sdk_bindings; } + + pub mod consensus { + use crate as dash_sdk_bindings; + + pub mod state { + use crate as dash_sdk_bindings; + + pub mod voting { use crate as dash_sdk_bindings; } + + pub mod data_contract { use crate as dash_sdk_bindings; } + + pub mod document { use crate as dash_sdk_bindings; } + + pub mod token { use crate as dash_sdk_bindings; } + + pub mod data_trigger { use crate as dash_sdk_bindings; } + + pub mod group { use crate as dash_sdk_bindings; } + + pub mod prefunded_specialized_balances { use crate as dash_sdk_bindings; } + + pub mod identity { use crate as dash_sdk_bindings; } + } + + pub mod signature { use crate as dash_sdk_bindings; } + + pub mod fee { use crate as dash_sdk_bindings; } + + pub mod basic { + use crate as dash_sdk_bindings; + + pub mod token { use crate as dash_sdk_bindings; } + + pub mod state_transition { use crate as dash_sdk_bindings; } + + pub mod json_schema_error { use crate as dash_sdk_bindings; } + + pub mod group { use crate as dash_sdk_bindings; } + + pub mod unsupported_version_error { use crate as dash_sdk_bindings; } + + pub mod identity { use crate as dash_sdk_bindings; } + + pub mod unsupported_protocol_version_error { use crate as dash_sdk_bindings; } + + pub mod document { use crate as dash_sdk_bindings; } + + pub mod decode { use crate as dash_sdk_bindings; } + + pub mod data_contract { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(feature = "state-transitions")] + pub mod state_transition { + use crate as dash_sdk_bindings; + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod traits { use crate as dash_sdk_bindings; } + + pub mod abstract_state_transition { use crate as dash_sdk_bindings; } + + pub mod errors { use crate as dash_sdk_bindings; } + + pub mod state_transitions { + use crate as dash_sdk_bindings; + + pub mod document { + use crate as dash_sdk_bindings; + + pub mod batch_transition { + use crate as dash_sdk_bindings; + + pub mod batched_transition { + use crate as dash_sdk_bindings; + + pub mod token_config_update_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod document_transfer_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_destroy_frozen_funds_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod token_mint_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_purchase_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_claim_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_unfreeze_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_burn_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_create_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_set_price_for_direct_purchase_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod document_delete_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_freeze_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod token_transfer_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod document_update_price_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_replace_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_direct_purchase_transition { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_emergency_action_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + + pub mod token_base_transition { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_base_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod v1 { use crate as dash_sdk_bindings; } + } + } + + pub mod v1 { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod resolvers { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validation { + use crate as dash_sdk_bindings; + + pub mod find_duplicates_by_id { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod validate_basic_structure { use crate as dash_sdk_bindings; } + } + } + } + + pub mod contract { + use crate as dash_sdk_bindings; + + pub mod data_contract_update_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod data_contract_create_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + #[cfg(feature = "state-transition-json-conversion")] + pub mod json_conversion { + use crate as dash_sdk_bindings; + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod common_fields { use crate as dash_sdk_bindings; } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod identity_create_transition { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod public_key_in_creation { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod hash { use crate as dash_sdk_bindings; } + + pub mod duplicated_key_ids_witness { use crate as dash_sdk_bindings; } + + pub mod duplicated_keys_witness { use crate as dash_sdk_bindings; } + + pub mod validate_identity_public_keys_structure { use crate as dash_sdk_bindings; } + + #[cfg(feature = "state-transition-signing")] + pub mod from_public_key_signed_with_private_key { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "state-transition-signing")] + pub mod from_public_key_signed_external { + use crate as dash_sdk_bindings; + } + } + } + + pub mod identity_credit_withdrawal_transition { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod v1 { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod common_fields { use crate as dash_sdk_bindings; } + + pub mod identity_update_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "state-transition-json-conversion")] + pub mod json_conversion { + use crate as dash_sdk_bindings; + } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod masternode_vote_transition { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod identity_credit_transfer_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod identity_topup_transition { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { use crate as dash_sdk_bindings; } + } + } + + pub mod common_fields { use crate as dash_sdk_bindings; } + } + } + + pub mod voting { + use crate as dash_sdk_bindings; + + pub mod vote_polls { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`VotePoll`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_vote_polls_VotePoll { ContestedDocumentResourceVotePoll(*mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) } + + impl ferment::FFIConversionFrom for dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_polls_VotePoll) -> dpp::voting::vote_polls::VotePoll { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(o_0) => dpp::voting::vote_polls::VotePoll::ContestedDocumentResourceVotePoll(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_to_const(obj: dpp::voting::vote_polls::VotePoll) -> *const dpp_voting_vote_polls_VotePoll { + ferment::boxed(match obj { + dpp::voting::vote_polls::VotePoll::ContestedDocumentResourceVotePoll(o_0) => dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_vote_polls_VotePoll { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_VotePoll_ContestedDocumentResourceVotePoll_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut dpp_voting_vote_polls_VotePoll { ferment::boxed(dpp_voting_vote_polls_VotePoll::ContestedDocumentResourceVotePoll(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_VotePoll_destroy<>(ffi: *mut dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + pub mod contested_document_resource_vote_poll { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ContestedDocumentResourceVotePoll`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + pub contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub document_type_name: *mut std::os::raw::c_char, + pub index_name: *mut std::os::raw::c_char, + pub index_values: *mut crate::fermented::generics::Vec_platform_value_Value, + } + + impl ferment::FFIConversionFrom for dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll { + let ffi_ref = &*ffi; + dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll { contract_id: >::ffi_from(ffi_ref.contract_id), document_type_name: >::ffi_from(ffi_ref.document_type_name), index_name: >::ffi_from(ffi_ref.index_name), index_values: >>::ffi_from(ffi_ref.index_values) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + unsafe fn ffi_to_const(obj: dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll) -> *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { ferment::boxed(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { contract_id: >::ffi_to(obj.contract_id), document_type_name: >::ffi_to(obj.document_type_name), index_name: >::ffi_to(obj.index_name), index_values: >>::ffi_to(obj.index_values) }) } + } + + impl Drop for dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.contract_id); + ferment::unbox_string(ffi_ref.document_type_name); + ferment::unbox_string(ffi_ref.index_name); + ferment::unbox_any(ffi_ref.index_values); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_ctor<>(contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_name: *mut std::os::raw::c_char, index_name: *mut std::os::raw::c_char, index_values: *mut crate::fermented::generics::Vec_platform_value_Value) -> *mut dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { ferment::boxed(dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { contract_id, document_type_name, index_name, index_values }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_destroy<>(ffi: *mut dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_contract_id<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).contract_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_document_type_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).document_type_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_index_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).index_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_get_index_values<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::generics::Vec_platform_value_Value { (*obj).index_values } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_contract_id<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).contract_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_document_type_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).document_type_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_index_name<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut std::os::raw::c_char { (*obj).index_name } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll_set_index_values<>(obj: *const dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::generics::Vec_platform_value_Value { (*obj).index_values } + } + } + + pub mod votes { + use crate as dash_sdk_bindings; + + pub mod resource_vote { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ResourceVoteV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + pub vote_poll: *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll, + pub resource_vote_choice: *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice, + } + + impl ferment::FFIConversionFrom for dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + unsafe fn ffi_from_const(ffi: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> dpp::voting::votes::resource_vote::v0::ResourceVoteV0 { + let ffi_ref = &*ffi; + dpp::voting::votes::resource_vote::v0::ResourceVoteV0 { vote_poll: >::ffi_from(ffi_ref.vote_poll), resource_vote_choice: >::ffi_from(ffi_ref.resource_vote_choice) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { unsafe fn ffi_to_const(obj: dpp::voting::votes::resource_vote::v0::ResourceVoteV0) -> *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { ferment::boxed(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { vote_poll: >::ffi_to(obj.vote_poll), resource_vote_choice: >::ffi_to(obj.resource_vote_choice) }) } } + + impl Drop for dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.vote_poll); + ferment::unbox_any(ffi_ref.resource_vote_choice); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_ctor<>(vote_poll: *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll, resource_vote_choice: *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) -> *mut dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { ferment::boxed(dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { vote_poll, resource_vote_choice }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_destroy<>(ffi: *mut dpp_voting_votes_resource_vote_v0_ResourceVoteV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_get_vote_poll<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll { (*obj).vote_poll } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_get_resource_vote_choice<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { (*obj).resource_vote_choice } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_set_vote_poll<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll { (*obj).vote_poll } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_v0_ResourceVoteV0_set_resource_vote_choice<>(obj: *const dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { (*obj).resource_vote_choice } + } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ResourceVote`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_votes_resource_vote_ResourceVote { V0(*mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0) } + + impl ferment::FFIConversionFrom for dpp_voting_votes_resource_vote_ResourceVote { + unsafe fn ffi_from_const(ffi: *const dpp_voting_votes_resource_vote_ResourceVote) -> dpp::voting::votes::resource_vote::ResourceVote { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_votes_resource_vote_ResourceVote::V0(o_0) => dpp::voting::votes::resource_vote::ResourceVote::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_votes_resource_vote_ResourceVote { + unsafe fn ffi_to_const(obj: dpp::voting::votes::resource_vote::ResourceVote) -> *const dpp_voting_votes_resource_vote_ResourceVote { + ferment::boxed(match obj { + dpp::voting::votes::resource_vote::ResourceVote::V0(o_0) => dpp_voting_votes_resource_vote_ResourceVote::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_votes_resource_vote_ResourceVote { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_votes_resource_vote_ResourceVote::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_ResourceVote_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut dpp_voting_votes_resource_vote_ResourceVote { ferment::boxed(dpp_voting_votes_resource_vote_ResourceVote::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_resource_vote_ResourceVote_destroy<>(ffi: *mut dpp_voting_votes_resource_vote_ResourceVote) { ferment::unbox_any(ffi); } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Vote`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_votes_Vote { ResourceVote(*mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) } + + impl ferment::FFIConversionFrom for dpp_voting_votes_Vote { + unsafe fn ffi_from_const(ffi: *const dpp_voting_votes_Vote) -> dpp::voting::votes::Vote { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_votes_Vote::ResourceVote(o_0) => dpp::voting::votes::Vote::ResourceVote(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_votes_Vote { + unsafe fn ffi_to_const(obj: dpp::voting::votes::Vote) -> *const dpp_voting_votes_Vote { + ferment::boxed(match obj { + dpp::voting::votes::Vote::ResourceVote(o_0) => dpp_voting_votes_Vote::ResourceVote(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_votes_Vote { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_votes_Vote::ResourceVote(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_Vote_ResourceVote_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) -> *mut dpp_voting_votes_Vote { ferment::boxed(dpp_voting_votes_Vote::ResourceVote(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_votes_Vote_destroy<>(ffi: *mut dpp_voting_votes_Vote) { ferment::unbox_any(ffi); } + } + + pub mod contender_structs { + use crate as dash_sdk_bindings; + + pub mod contender { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ContenderWithSerializedDocument`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { V0(*mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) } + + impl ferment::FFIConversionFrom for dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + unsafe fn ffi_from_const(ffi: *const dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> dpp::voting::contender_structs::contender::ContenderWithSerializedDocument { + let ffi_ref = &*ffi; + match ffi_ref { dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(o_0) => dpp::voting::contender_structs::contender::ContenderWithSerializedDocument::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + unsafe fn ffi_to_const(obj: dpp::voting::contender_structs::contender::ContenderWithSerializedDocument) -> *const dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + ferment::boxed(match obj { + dpp::voting::contender_structs::contender::ContenderWithSerializedDocument::V0(o_0) => dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { ferment::boxed(dpp_voting_contender_structs_contender_ContenderWithSerializedDocument::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy<>(ffi: *mut dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) { ferment::unbox_any(ffi); } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ContenderWithSerializedDocumentV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + pub identity_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub serialized_document: *mut crate::fermented::generics::Vec_u8, + pub vote_tally: *mut u32, + } + + impl ferment::FFIConversionFrom for dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + unsafe fn ffi_from_const(ffi: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> dpp::voting::contender_structs::contender::v0::ContenderWithSerializedDocumentV0 { + let ffi_ref = &*ffi; + dpp::voting::contender_structs::contender::v0::ContenderWithSerializedDocumentV0 { identity_id: >::ffi_from(ffi_ref.identity_id), serialized_document: >>::ffi_from_opt(ffi_ref.serialized_document), vote_tally: ferment::from_opt_primitive(ffi_ref.vote_tally) } + } + } + + impl ferment::FFIConversionTo for dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { unsafe fn ffi_to_const(obj: dpp::voting::contender_structs::contender::v0::ContenderWithSerializedDocumentV0) -> *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { ferment::boxed(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { identity_id: >::ffi_to(obj.identity_id), serialized_document: >>::ffi_to_opt(obj.serialized_document), vote_tally: ferment::to_opt_primitive(obj.vote_tally) }) } } + + impl Drop for dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.identity_id); + ferment::unbox_any_opt(ffi_ref.serialized_document); + ferment::destroy_opt_primitive(ffi_ref.vote_tally); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_ctor<>(identity_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, serialized_document: *mut crate::fermented::generics::Vec_u8, vote_tally: *mut u32) -> *mut dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { ferment::boxed(dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { identity_id, serialized_document, vote_tally }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_destroy<>(ffi: *mut dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_get_identity_id<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).identity_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_get_serialized_document<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::generics::Vec_u8 { (*obj).serialized_document } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_get_vote_tally<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut u32 { (*obj).vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_set_identity_id<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).identity_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_set_serialized_document<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::generics::Vec_u8 { (*obj).serialized_document } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0_set_vote_tally<>(obj: *const dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut u32 { (*obj).vote_tally } + } + } + } + + pub mod vote_info_storage { + use crate as dash_sdk_bindings; + + pub mod contested_document_vote_poll_stored_info { use crate as dash_sdk_bindings; } + + pub mod contested_document_vote_poll_winner_info { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ContestedDocumentVotePollWinnerInfo`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { NoWinner, WonByIdentity(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier), Locked } + + impl ferment::FFIConversionFrom for dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo) -> dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner => dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::NoWinner, + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_0) => dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::WonByIdentity(>::ffi_from(*o_0)), + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked => dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::Locked + } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + unsafe fn ffi_to_const(obj: dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo) -> *const dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + ferment::boxed(match obj { + dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::NoWinner => dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner, + dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_0) => dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(>::ffi_to(o_0)), + dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo::Locked => dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner => {} + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_0) => { ferment::unbox_any(*o_0); } + dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_NoWinner_ctor() -> *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { ferment::boxed(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::NoWinner {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_WonByIdentity_ctor(o_o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { ferment::boxed(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::WonByIdentity(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_Locked_ctor() -> *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo { ferment::boxed(dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo::Locked {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_destroy<>(ffi: *mut dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo) { ferment::unbox_any(ffi); } + } + } + + pub mod vote_choices { + use crate as dash_sdk_bindings; + + pub mod resource_vote_choice { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ResourceVoteChoice`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { TowardsIdentity(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier), Abstain, Lock } + + impl ferment::FFIConversionFrom for dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + unsafe fn ffi_from_const(ffi: *const dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) -> dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(o_0) => dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::TowardsIdentity(>::ffi_from(*o_0)), + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain => dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Abstain, + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock => dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Lock + } + } + } + + impl ferment::FFIConversionTo for dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + unsafe fn ffi_to_const(obj: dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice) -> *const dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + ferment::boxed(match obj { + dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::TowardsIdentity(o_0) => dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(>::ffi_to(o_0)), + dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Abstain => dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain, + dpp::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::Lock => dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + fn drop(&mut self) { + unsafe { + match self { + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(o_0) => { ferment::unbox_any(*o_0); } + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain => {} + dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_TowardsIdentity_ctor(o_o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { ferment::boxed(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::TowardsIdentity(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_Abstain_ctor() -> *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { ferment::boxed(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Abstain {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_Lock_ctor() -> *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { ferment::boxed(dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice::Lock {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice_destroy<>(ffi: *mut dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) { ferment::unbox_any(ffi); } + } + } + } + + pub mod balances { use crate as dash_sdk_bindings; } + + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod token_payment_info { + use crate as dash_sdk_bindings; + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod info { use crate as dash_sdk_bindings; } + + pub mod contract_info { use crate as dash_sdk_bindings; } + + pub mod status { use crate as dash_sdk_bindings; } + } + + pub mod document { + use crate as dash_sdk_bindings; + + #[cfg(feature = "factories")] + pub mod specialized_document_factory { + use crate as dash_sdk_bindings; + } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Document`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_document_Document { V0(*mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0) } + + impl ferment::FFIConversionFrom for dpp_document_Document { + unsafe fn ffi_from_const(ffi: *const dpp_document_Document) -> dpp::document::Document { + let ffi_ref = &*ffi; + match ffi_ref { dpp_document_Document::V0(o_0) => dpp::document::Document::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_document_Document { + unsafe fn ffi_to_const(obj: dpp::document::Document) -> *const dpp_document_Document { + ferment::boxed(match obj { + dpp::document::Document::V0(o_0) => dpp_document_Document::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_document_Document { + fn drop(&mut self) { + unsafe { + match self { + dpp_document_Document::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_Document_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0) -> *mut dpp_document_Document { ferment::boxed(dpp_document_Document::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_Document_destroy<>(ffi: *mut dpp_document_Document) { ferment::unbox_any(ffi); } + + #[cfg(feature = "extended-document")] + pub mod extended_document { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod document_methods { + use crate as dash_sdk_bindings; + + pub mod get_raw_for_contract { use crate as dash_sdk_bindings; } + + pub mod hash { use crate as dash_sdk_bindings; } + + pub mod get_raw_for_document_type { use crate as dash_sdk_bindings; } + + pub mod is_equal_ignoring_timestamps { use crate as dash_sdk_bindings; } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + #[cfg(feature = "factories")] + pub mod document_factory { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod serialization_traits { + use crate as dash_sdk_bindings; + + pub mod platform_serialization_conversion { + use crate as dash_sdk_bindings; + + pub mod deserialize { use crate as dash_sdk_bindings; } + + pub mod serialize { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "document-json-conversion")] + pub mod json_conversion { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "document-cbor-conversion")] + pub mod cbor_conversion { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "document-value-conversion")] + pub mod platform_value_conversion { + use crate as dash_sdk_bindings; + } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`DocumentV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_document_v0_DocumentV0 { + pub id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub properties: *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value, + pub revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision, + pub created_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + pub updated_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + pub transferred_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + pub created_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub updated_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub transferred_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, + pub created_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + pub updated_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + pub transferred_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, + } + + impl ferment::FFIConversionFrom for dpp_document_v0_DocumentV0 { + unsafe fn ffi_from_const(ffi: *const dpp_document_v0_DocumentV0) -> dpp::document::v0::DocumentV0 { + let ffi_ref = &*ffi; + dpp::document::v0::DocumentV0 { + id: >::ffi_from(ffi_ref.id), + owner_id: >::ffi_from(ffi_ref.owner_id), + properties: >>::ffi_from(ffi_ref.properties), + revision: >::ffi_from_opt(ffi_ref.revision), + created_at: >::ffi_from_opt(ffi_ref.created_at), + updated_at: >::ffi_from_opt(ffi_ref.updated_at), + transferred_at: >::ffi_from_opt(ffi_ref.transferred_at), + created_at_block_height: >::ffi_from_opt(ffi_ref.created_at_block_height), + updated_at_block_height: >::ffi_from_opt(ffi_ref.updated_at_block_height), + transferred_at_block_height: >::ffi_from_opt(ffi_ref.transferred_at_block_height), + created_at_core_block_height: >::ffi_from_opt(ffi_ref.created_at_core_block_height), + updated_at_core_block_height: >::ffi_from_opt(ffi_ref.updated_at_core_block_height), + transferred_at_core_block_height: >::ffi_from_opt(ffi_ref.transferred_at_core_block_height), + } + } + } + + impl ferment::FFIConversionTo for dpp_document_v0_DocumentV0 { + unsafe fn ffi_to_const(obj: dpp::document::v0::DocumentV0) -> *const dpp_document_v0_DocumentV0 { + ferment::boxed(dpp_document_v0_DocumentV0 { + id: >::ffi_to(obj.id), + owner_id: >::ffi_to(obj.owner_id), + properties: >>::ffi_to(obj.properties), + revision: >::ffi_to_opt(obj.revision), + created_at: >::ffi_to_opt(obj.created_at), + updated_at: >::ffi_to_opt(obj.updated_at), + transferred_at: >::ffi_to_opt(obj.transferred_at), + created_at_block_height: >::ffi_to_opt(obj.created_at_block_height), + updated_at_block_height: >::ffi_to_opt(obj.updated_at_block_height), + transferred_at_block_height: >::ffi_to_opt(obj.transferred_at_block_height), + created_at_core_block_height: >::ffi_to_opt(obj.created_at_core_block_height), + updated_at_core_block_height: >::ffi_to_opt(obj.updated_at_core_block_height), + transferred_at_core_block_height: >::ffi_to_opt(obj.transferred_at_core_block_height), + }) + } + } + + impl Drop for dpp_document_v0_DocumentV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.owner_id); + ferment::unbox_any(ffi_ref.properties); + ferment::unbox_any_opt(ffi_ref.revision); + ferment::unbox_any_opt(ffi_ref.created_at); + ferment::unbox_any_opt(ffi_ref.updated_at); + ferment::unbox_any_opt(ffi_ref.transferred_at); + ferment::unbox_any_opt(ffi_ref.created_at_block_height); + ferment::unbox_any_opt(ffi_ref.updated_at_block_height); + ferment::unbox_any_opt(ffi_ref.transferred_at_block_height); + ferment::unbox_any_opt(ffi_ref.created_at_core_block_height); + ferment::unbox_any_opt(ffi_ref.updated_at_core_block_height); + ferment::unbox_any_opt(ffi_ref.transferred_at_core_block_height); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_ctor<>(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, properties: *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value, revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision, created_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, updated_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, transferred_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, created_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, updated_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, transferred_at_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, created_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, updated_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, transferred_at_core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight) -> *mut dpp_document_v0_DocumentV0 { ferment::boxed(dpp_document_v0_DocumentV0 { id, owner_id, properties, revision, created_at, updated_at, transferred_at, created_at_block_height, updated_at_block_height, transferred_at_block_height, created_at_core_block_height, updated_at_core_block_height, transferred_at_core_block_height }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_destroy<>(ffi: *mut dpp_document_v0_DocumentV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_owner_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_properties<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value { (*obj).properties } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_revision<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_created_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).created_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_updated_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).updated_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_transferred_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).transferred_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_created_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).created_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_updated_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).updated_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_transferred_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).transferred_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_created_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).created_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_updated_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).updated_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_get_transferred_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).transferred_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_owner_id<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_properties<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value { (*obj).properties } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_revision<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_created_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).created_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_updated_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).updated_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_transferred_at<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).transferred_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_created_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).created_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_updated_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).updated_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_transferred_at_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { (*obj).transferred_at_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_created_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).created_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_updated_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).updated_at_core_block_height } + + #[no_mangle] + pub unsafe extern "C" fn dpp_document_v0_DocumentV0_set_transferred_at_core_block_height<>(obj: *const dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { (*obj).transferred_at_core_block_height } + } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod prelude { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`TimestampMillis`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_TimestampMillis(u64); + + impl ferment::FFIConversionFrom for dpp_prelude_TimestampMillis { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_TimestampMillis) -> dpp::prelude::TimestampMillis { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_TimestampMillis { unsafe fn ffi_to_const(obj: dpp::prelude::TimestampMillis) -> *const dpp_prelude_TimestampMillis { ferment::boxed(dpp_prelude_TimestampMillis(obj)) } } + + impl Drop for dpp_prelude_TimestampMillis { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_ctor<>(o_0: u64) -> *mut dpp_prelude_TimestampMillis { ferment::boxed(dpp_prelude_TimestampMillis(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_destroy<>(ffi: *mut dpp_prelude_TimestampMillis) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_get_0<>(obj: *const dpp_prelude_TimestampMillis) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_TimestampMillis_set_0<>(obj: *const dpp_prelude_TimestampMillis) -> u64 { (*obj).0 } + + #[doc = "FFI-representation of the [`Revision`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_Revision(u64); + + impl ferment::FFIConversionFrom for dpp_prelude_Revision { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_Revision) -> dpp::prelude::Revision { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_Revision { unsafe fn ffi_to_const(obj: dpp::prelude::Revision) -> *const dpp_prelude_Revision { ferment::boxed(dpp_prelude_Revision(obj)) } } + + impl Drop for dpp_prelude_Revision { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_ctor<>(o_0: u64) -> *mut dpp_prelude_Revision { ferment::boxed(dpp_prelude_Revision(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_destroy<>(ffi: *mut dpp_prelude_Revision) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_get_0<>(obj: *const dpp_prelude_Revision) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_Revision_set_0<>(obj: *const dpp_prelude_Revision) -> u64 { (*obj).0 } + + #[doc = "FFI-representation of the [`BlockHeight`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_BlockHeight(u64); + + impl ferment::FFIConversionFrom for dpp_prelude_BlockHeight { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_BlockHeight) -> dpp::prelude::BlockHeight { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_BlockHeight { unsafe fn ffi_to_const(obj: dpp::prelude::BlockHeight) -> *const dpp_prelude_BlockHeight { ferment::boxed(dpp_prelude_BlockHeight(obj)) } } + + impl Drop for dpp_prelude_BlockHeight { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_ctor<>(o_0: u64) -> *mut dpp_prelude_BlockHeight { ferment::boxed(dpp_prelude_BlockHeight(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_destroy<>(ffi: *mut dpp_prelude_BlockHeight) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_get_0<>(obj: *const dpp_prelude_BlockHeight) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_BlockHeight_set_0<>(obj: *const dpp_prelude_BlockHeight) -> u64 { (*obj).0 } + + #[doc = "FFI-representation of the [`CoreBlockHeight`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_prelude_CoreBlockHeight(u32); + + impl ferment::FFIConversionFrom for dpp_prelude_CoreBlockHeight { + unsafe fn ffi_from_const(ffi: *const dpp_prelude_CoreBlockHeight) -> dpp::prelude::CoreBlockHeight { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_prelude_CoreBlockHeight { unsafe fn ffi_to_const(obj: dpp::prelude::CoreBlockHeight) -> *const dpp_prelude_CoreBlockHeight { ferment::boxed(dpp_prelude_CoreBlockHeight(obj)) } } + + impl Drop for dpp_prelude_CoreBlockHeight { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_ctor<>(o_0: u32) -> *mut dpp_prelude_CoreBlockHeight { ferment::boxed(dpp_prelude_CoreBlockHeight(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_destroy<>(ffi: *mut dpp_prelude_CoreBlockHeight) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_get_0<>(obj: *const dpp_prelude_CoreBlockHeight) -> u32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_prelude_CoreBlockHeight_set_0<>(obj: *const dpp_prelude_CoreBlockHeight) -> u32 { (*obj).0 } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod identity_nonce { use crate as dash_sdk_bindings; } + + pub mod identity_public_key { + use crate as dash_sdk_bindings; + + pub mod key_type { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`KeyType`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_key_type_KeyType { ECDSA_SECP256K1 = 0, BLS12_381 = 1, ECDSA_HASH160 = 2, BIP13_SCRIPT_HASH = 3, EDDSA_25519_HASH160 = 4 } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_key_type_KeyType { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_key_type_KeyType) -> dpp::identity::identity_public_key::key_type::KeyType { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1 => dpp::identity::identity_public_key::key_type::KeyType::ECDSA_SECP256K1, + dpp_identity_identity_public_key_key_type_KeyType::BLS12_381 => dpp::identity::identity_public_key::key_type::KeyType::BLS12_381, + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160 => dpp::identity::identity_public_key::key_type::KeyType::ECDSA_HASH160, + dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH => dpp::identity::identity_public_key::key_type::KeyType::BIP13_SCRIPT_HASH, + dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160 => dpp::identity::identity_public_key::key_type::KeyType::EDDSA_25519_HASH160 + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_key_type_KeyType { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::key_type::KeyType) -> *const dpp_identity_identity_public_key_key_type_KeyType { + ferment::boxed(match obj { + dpp::identity::identity_public_key::key_type::KeyType::ECDSA_SECP256K1 => dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1, + dpp::identity::identity_public_key::key_type::KeyType::BLS12_381 => dpp_identity_identity_public_key_key_type_KeyType::BLS12_381, + dpp::identity::identity_public_key::key_type::KeyType::ECDSA_HASH160 => dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160, + dpp::identity::identity_public_key::key_type::KeyType::BIP13_SCRIPT_HASH => dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH, + dpp::identity::identity_public_key::key_type::KeyType::EDDSA_25519_HASH160 => dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_key_type_KeyType { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1 => {} + dpp_identity_identity_public_key_key_type_KeyType::BLS12_381 => {} + dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160 => {} + dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH => {} + dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160 => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_ECDSA_SECP256K1_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::ECDSA_SECP256K1 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_BLS12_381_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::BLS12_381 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_ECDSA_HASH160_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::ECDSA_HASH160 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_BIP13_SCRIPT_HASH_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::BIP13_SCRIPT_HASH {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_EDDSA_25519_HASH160_ctor() -> *mut dpp_identity_identity_public_key_key_type_KeyType { ferment::boxed(dpp_identity_identity_public_key_key_type_KeyType::EDDSA_25519_HASH160 {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_key_type_KeyType_destroy<>(ffi: *mut dpp_identity_identity_public_key_key_type_KeyType) { ferment::unbox_any(ffi); } + } + + pub mod conversion { + use crate as dash_sdk_bindings; + + #[cfg(feature = "platform-value")] + pub mod platform_value { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "json-object")] + pub mod json { + use crate as dash_sdk_bindings; + } + } + + #[doc = "FFI-representation of the [`KeyID`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_KeyID(u32); + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_KeyID { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_KeyID) -> dpp::identity::identity_public_key::KeyID { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_KeyID { unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::KeyID) -> *const dpp_identity_identity_public_key_KeyID { ferment::boxed(dpp_identity_identity_public_key_KeyID(obj)) } } + + impl Drop for dpp_identity_identity_public_key_KeyID { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_ctor<>(o_0: u32) -> *mut dpp_identity_identity_public_key_KeyID { ferment::boxed(dpp_identity_identity_public_key_KeyID(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_destroy<>(ffi: *mut dpp_identity_identity_public_key_KeyID) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_get_0<>(obj: *const dpp_identity_identity_public_key_KeyID) -> u32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyID_set_0<>(obj: *const dpp_identity_identity_public_key_KeyID) -> u32 { (*obj).0 } + + #[doc = "FFI-representation of the [`TimestampMillis`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_TimestampMillis(u64); + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_TimestampMillis { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_TimestampMillis) -> dpp::identity::identity_public_key::TimestampMillis { + let ffi_ref = &*ffi; + ffi_ref.0 + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_TimestampMillis { unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::TimestampMillis) -> *const dpp_identity_identity_public_key_TimestampMillis { ferment::boxed(dpp_identity_identity_public_key_TimestampMillis(obj)) } } + + impl Drop for dpp_identity_identity_public_key_TimestampMillis { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_ctor<>(o_0: u64) -> *mut dpp_identity_identity_public_key_TimestampMillis { ferment::boxed(dpp_identity_identity_public_key_TimestampMillis(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_destroy<>(ffi: *mut dpp_identity_identity_public_key_TimestampMillis) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_get_0<>(obj: *const dpp_identity_identity_public_key_TimestampMillis) -> u64 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_TimestampMillis_set_0<>(obj: *const dpp_identity_identity_public_key_TimestampMillis) -> u64 { (*obj).0 } + + pub mod purpose { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Purpose`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_purpose_Purpose { AUTHENTICATION = 0, ENCRYPTION = 1, DECRYPTION = 2, TRANSFER = 3, SYSTEM = 4, VOTING = 5, OWNER = 6 } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_purpose_Purpose { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_purpose_Purpose) -> dpp::identity::identity_public_key::purpose::Purpose { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION => dpp::identity::identity_public_key::purpose::Purpose::AUTHENTICATION, + dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION => dpp::identity::identity_public_key::purpose::Purpose::ENCRYPTION, + dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION => dpp::identity::identity_public_key::purpose::Purpose::DECRYPTION, + dpp_identity_identity_public_key_purpose_Purpose::TRANSFER => dpp::identity::identity_public_key::purpose::Purpose::TRANSFER, + dpp_identity_identity_public_key_purpose_Purpose::SYSTEM => dpp::identity::identity_public_key::purpose::Purpose::SYSTEM, + dpp_identity_identity_public_key_purpose_Purpose::VOTING => dpp::identity::identity_public_key::purpose::Purpose::VOTING, + dpp_identity_identity_public_key_purpose_Purpose::OWNER => dpp::identity::identity_public_key::purpose::Purpose::OWNER + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_purpose_Purpose { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::purpose::Purpose) -> *const dpp_identity_identity_public_key_purpose_Purpose { + ferment::boxed(match obj { + dpp::identity::identity_public_key::purpose::Purpose::AUTHENTICATION => dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION, + dpp::identity::identity_public_key::purpose::Purpose::ENCRYPTION => dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION, + dpp::identity::identity_public_key::purpose::Purpose::DECRYPTION => dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION, + dpp::identity::identity_public_key::purpose::Purpose::TRANSFER => dpp_identity_identity_public_key_purpose_Purpose::TRANSFER, + dpp::identity::identity_public_key::purpose::Purpose::SYSTEM => dpp_identity_identity_public_key_purpose_Purpose::SYSTEM, + dpp::identity::identity_public_key::purpose::Purpose::VOTING => dpp_identity_identity_public_key_purpose_Purpose::VOTING, + dpp::identity::identity_public_key::purpose::Purpose::OWNER => dpp_identity_identity_public_key_purpose_Purpose::OWNER, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_purpose_Purpose { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION => {} + dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION => {} + dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION => {} + dpp_identity_identity_public_key_purpose_Purpose::TRANSFER => {} + dpp_identity_identity_public_key_purpose_Purpose::SYSTEM => {} + dpp_identity_identity_public_key_purpose_Purpose::VOTING => {} + dpp_identity_identity_public_key_purpose_Purpose::OWNER => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_AUTHENTICATION_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::AUTHENTICATION {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_ENCRYPTION_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::ENCRYPTION {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_DECRYPTION_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::DECRYPTION {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_TRANSFER_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::TRANSFER {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_SYSTEM_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::SYSTEM {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_VOTING_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::VOTING {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_OWNER_ctor() -> *mut dpp_identity_identity_public_key_purpose_Purpose { ferment::boxed(dpp_identity_identity_public_key_purpose_Purpose::OWNER {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_purpose_Purpose_destroy<>(ffi: *mut dpp_identity_identity_public_key_purpose_Purpose) { ferment::unbox_any(ffi); } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + pub mod methods { use crate as dash_sdk_bindings; } + + #[doc = "FFI-representation of the [`IdentityPublicKeyV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + pub id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, + pub purpose: *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose, + pub security_level: *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel, + pub contract_bounds: *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds, + pub key_type: *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType, + pub read_only: bool, + pub data: *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData, + pub disabled_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, + } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> dpp::identity::identity_public_key::v0::IdentityPublicKeyV0 { + let ffi_ref = &*ffi; + dpp::identity::identity_public_key::v0::IdentityPublicKeyV0 { + id: >::ffi_from(ffi_ref.id), + purpose: >::ffi_from(ffi_ref.purpose), + security_level: >::ffi_from(ffi_ref.security_level), + contract_bounds: >::ffi_from_opt(ffi_ref.contract_bounds), + key_type: >::ffi_from(ffi_ref.key_type), + read_only: ffi_ref.read_only, + data: >::ffi_from(ffi_ref.data), + disabled_at: >::ffi_from_opt(ffi_ref.disabled_at), + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::v0::IdentityPublicKeyV0) -> *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + ferment::boxed(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + id: >::ffi_to(obj.id), + purpose: >::ffi_to(obj.purpose), + security_level: >::ffi_to(obj.security_level), + contract_bounds: >::ffi_to_opt(obj.contract_bounds), + key_type: >::ffi_to(obj.key_type), + read_only: obj.read_only, + data: >::ffi_to(obj.data), + disabled_at: >::ffi_to_opt(obj.disabled_at), + }) + } + } + + impl Drop for dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.purpose); + ferment::unbox_any(ffi_ref.security_level); + ferment::unbox_any_opt(ffi_ref.contract_bounds); + ferment::unbox_any(ffi_ref.key_type); + ; + ferment::unbox_any(ffi_ref.data); + ferment::unbox_any_opt(ffi_ref.disabled_at); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_ctor<>(id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, purpose: *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose, security_level: *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel, contract_bounds: *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds, key_type: *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType, read_only: bool, data: *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData, disabled_at: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis) -> *mut dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { ferment::boxed(dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { id, purpose, security_level, contract_bounds, key_type, read_only, data, disabled_at }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_destroy<>(ffi: *mut dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_id<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_purpose<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose { (*obj).purpose } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_security_level<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel { (*obj).security_level } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_contract_bounds<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds { (*obj).contract_bounds } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_key_type<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType { (*obj).key_type } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_read_only<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> bool { (*obj).read_only } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_data<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData { (*obj).data } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_get_disabled_at<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).disabled_at } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_id<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_purpose<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::purpose::dpp_identity_identity_public_key_purpose_Purpose { (*obj).purpose } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_security_level<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::security_level::dpp_identity_identity_public_key_security_level_SecurityLevel { (*obj).security_level } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_contract_bounds<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::contract_bounds::dpp_identity_identity_public_key_contract_bounds_ContractBounds { (*obj).contract_bounds } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_key_type<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::key_type::dpp_identity_identity_public_key_key_type_KeyType { (*obj).key_type } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_read_only<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> bool { (*obj).read_only } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_data<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::platform_value::types::binary_data::platform_value_types_binary_data_BinaryData { (*obj).data } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_v0_IdentityPublicKeyV0_set_disabled_at<>(obj: *const dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { (*obj).disabled_at } + + pub mod conversion { use crate as dash_sdk_bindings; } + } + + pub mod security_level { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`SecurityLevel`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_security_level_SecurityLevel { MASTER = 0, CRITICAL = 1, HIGH = 2, MEDIUM = 3 } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_security_level_SecurityLevel { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_security_level_SecurityLevel) -> dpp::identity::identity_public_key::security_level::SecurityLevel { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER => dpp::identity::identity_public_key::security_level::SecurityLevel::MASTER, + dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL => dpp::identity::identity_public_key::security_level::SecurityLevel::CRITICAL, + dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH => dpp::identity::identity_public_key::security_level::SecurityLevel::HIGH, + dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM => dpp::identity::identity_public_key::security_level::SecurityLevel::MEDIUM + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_security_level_SecurityLevel { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::security_level::SecurityLevel) -> *const dpp_identity_identity_public_key_security_level_SecurityLevel { + ferment::boxed(match obj { + dpp::identity::identity_public_key::security_level::SecurityLevel::MASTER => dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER, + dpp::identity::identity_public_key::security_level::SecurityLevel::CRITICAL => dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL, + dpp::identity::identity_public_key::security_level::SecurityLevel::HIGH => dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH, + dpp::identity::identity_public_key::security_level::SecurityLevel::MEDIUM => dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_security_level_SecurityLevel { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER => {} + dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL => {} + dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH => {} + dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_MASTER_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::MASTER {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_CRITICAL_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::CRITICAL {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_HIGH_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::HIGH {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_MEDIUM_ctor() -> *mut dpp_identity_identity_public_key_security_level_SecurityLevel { ferment::boxed(dpp_identity_identity_public_key_security_level_SecurityLevel::MEDIUM {}) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_security_level_SecurityLevel_destroy<>(ffi: *mut dpp_identity_identity_public_key_security_level_SecurityLevel) { ferment::unbox_any(ffi); } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod contract_bounds { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`ContractBounds`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_contract_bounds_ContractBounds { SingleContract { id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier }, SingleContractDocumentType { id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_name: *mut std::os::raw::c_char } } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_contract_bounds_ContractBounds { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_contract_bounds_ContractBounds) -> dpp::identity::identity_public_key::contract_bounds::ContractBounds { + let ffi_ref = &*ffi; + match ffi_ref { + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id } => dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContract { id: >::ffi_from(*id) }, + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id, document_type_name } => dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContractDocumentType { id: >::ffi_from(*id), document_type_name: >::ffi_from(*document_type_name) } + } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_contract_bounds_ContractBounds { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::contract_bounds::ContractBounds) -> *const dpp_identity_identity_public_key_contract_bounds_ContractBounds { + ferment::boxed(match obj { + dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContract { id } => dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id: >::ffi_to(id) }, + dpp::identity::identity_public_key::contract_bounds::ContractBounds::SingleContractDocumentType { id, document_type_name } => dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id: >::ffi_to(id), document_type_name: >::ffi_to(document_type_name) }, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_contract_bounds_ContractBounds { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id } => { ferment::unbox_any(*id); } + dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id, document_type_name } => { + ferment::unbox_any(*id); + ; + ferment::unbox_string(*document_type_name); + } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_contract_bounds_ContractBounds_SingleContract_ctor(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut dpp_identity_identity_public_key_contract_bounds_ContractBounds { ferment::boxed(dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContract { id }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_contract_bounds_ContractBounds_SingleContractDocumentType_ctor(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_name: *mut std::os::raw::c_char) -> *mut dpp_identity_identity_public_key_contract_bounds_ContractBounds { ferment::boxed(dpp_identity_identity_public_key_contract_bounds_ContractBounds::SingleContractDocumentType { id, document_type_name }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_contract_bounds_ContractBounds_destroy<>(ffi: *mut dpp_identity_identity_public_key_contract_bounds_ContractBounds) { ferment::unbox_any(ffi); } + } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod hash { use crate as dash_sdk_bindings; } + } + + #[doc = "FFI-representation of the [`KeyCount`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_identity_public_key_KeyCount(*mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID); + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_KeyCount { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_KeyCount) -> dpp::identity::identity_public_key::KeyCount { + let ffi_ref = &*ffi; + >::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_KeyCount { unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::KeyCount) -> *const dpp_identity_identity_public_key_KeyCount { ferment::boxed(dpp_identity_identity_public_key_KeyCount(>::ffi_to(obj))) } } + + impl Drop for dpp_identity_identity_public_key_KeyCount { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_ctor<>(o_0: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID) -> *mut dpp_identity_identity_public_key_KeyCount { ferment::boxed(dpp_identity_identity_public_key_KeyCount(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_destroy<>(ffi: *mut dpp_identity_identity_public_key_KeyCount) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_get_0<>(obj: *const dpp_identity_identity_public_key_KeyCount) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_KeyCount_set_0<>(obj: *const dpp_identity_identity_public_key_KeyCount) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { (*obj).0 } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`IdentityPublicKey`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_public_key_IdentityPublicKey { V0(*mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) } + + impl ferment::FFIConversionFrom for dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_public_key_IdentityPublicKey) -> dpp::identity::identity_public_key::IdentityPublicKey { + let ffi_ref = &*ffi; + match ffi_ref { dpp_identity_identity_public_key_IdentityPublicKey::V0(o_0) => dpp::identity::identity_public_key::IdentityPublicKey::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_to_const(obj: dpp::identity::identity_public_key::IdentityPublicKey) -> *const dpp_identity_identity_public_key_IdentityPublicKey { + ferment::boxed(match obj { + dpp::identity::identity_public_key::IdentityPublicKey::V0(o_0) => dpp_identity_identity_public_key_IdentityPublicKey::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_public_key_IdentityPublicKey { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_public_key_IdentityPublicKey::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_IdentityPublicKey_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(dpp_identity_identity_public_key_IdentityPublicKey::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_public_key_IdentityPublicKey_destroy<>(ffi: *mut dpp_identity_identity_public_key_IdentityPublicKey) { ferment::unbox_any(ffi); } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Identity`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum dpp_identity_identity_Identity { V0(*mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0) } + + impl ferment::FFIConversionFrom for dpp_identity_identity_Identity { + unsafe fn ffi_from_const(ffi: *const dpp_identity_identity_Identity) -> dpp::identity::identity::Identity { + let ffi_ref = &*ffi; + match ffi_ref { dpp_identity_identity_Identity::V0(o_0) => dpp::identity::identity::Identity::V0(>::ffi_from(*o_0)) } + } + } + + impl ferment::FFIConversionTo for dpp_identity_identity_Identity { + unsafe fn ffi_to_const(obj: dpp::identity::identity::Identity) -> *const dpp_identity_identity_Identity { + ferment::boxed(match obj { + dpp::identity::identity::Identity::V0(o_0) => dpp_identity_identity_Identity::V0(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for dpp_identity_identity_Identity { + fn drop(&mut self) { + unsafe { + match self { + dpp_identity_identity_Identity::V0(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_Identity_V0_ctor(o_o_0: *mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0) -> *mut dpp_identity_identity_Identity { ferment::boxed(dpp_identity_identity_Identity::V0(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_identity_Identity_destroy<>(ffi: *mut dpp_identity_identity_Identity) { ferment::unbox_any(ffi); } + } + + pub mod credits_converter { use crate as dash_sdk_bindings; } + + pub mod conversion { + use crate as dash_sdk_bindings; + + #[cfg(feature = "identity-cbor-conversion")] + pub mod cbor { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "identity-value-conversion")] + pub mod platform_value { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "identity-json-conversion")] + pub mod json { + use crate as dash_sdk_bindings; + } + } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod create_basic_identity { use crate as dash_sdk_bindings; } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`IdentityV0`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dpp_identity_v0_IdentityV0 { + pub id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub public_keys: *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey, + pub balance: u64, + pub revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision, + } + + impl ferment::FFIConversionFrom for dpp_identity_v0_IdentityV0 { + unsafe fn ffi_from_const(ffi: *const dpp_identity_v0_IdentityV0) -> dpp::identity::v0::IdentityV0 { + let ffi_ref = &*ffi; + dpp::identity::v0::IdentityV0 { id: >::ffi_from(ffi_ref.id), public_keys: >>::ffi_from(ffi_ref.public_keys), balance: ffi_ref.balance, revision: >::ffi_from(ffi_ref.revision) } + } + } + + impl ferment::FFIConversionTo for dpp_identity_v0_IdentityV0 { unsafe fn ffi_to_const(obj: dpp::identity::v0::IdentityV0) -> *const dpp_identity_v0_IdentityV0 { ferment::boxed(dpp_identity_v0_IdentityV0 { id: >::ffi_to(obj.id), public_keys: >>::ffi_to(obj.public_keys), balance: obj.balance, revision: >::ffi_to(obj.revision) }) } } + + impl Drop for dpp_identity_v0_IdentityV0 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.public_keys); + ; + ferment::unbox_any(ffi_ref.revision); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_ctor<>(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, public_keys: *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey, balance: u64, revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision) -> *mut dpp_identity_v0_IdentityV0 { ferment::boxed(dpp_identity_v0_IdentityV0 { id, public_keys, balance, revision }) } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_destroy<>(ffi: *mut dpp_identity_v0_IdentityV0) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_id<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_public_keys<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { (*obj).public_keys } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_balance<>(obj: *const dpp_identity_v0_IdentityV0) -> u64 { (*obj).balance } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_get_revision<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_id<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_public_keys<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { (*obj).public_keys } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_balance<>(obj: *const dpp_identity_v0_IdentityV0) -> u64 { (*obj).balance } + + #[no_mangle] + pub unsafe extern "C" fn dpp_identity_v0_IdentityV0_set_revision<>(obj: *const dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { (*obj).revision } + + pub mod conversion { use crate as dash_sdk_bindings; } + } + + pub mod state_transition { + use crate as dash_sdk_bindings; + + pub mod asset_lock_proof { + use crate as dash_sdk_bindings; + + pub mod validate_asset_lock_transaction_structure { use crate as dash_sdk_bindings; } + + pub mod chain { use crate as dash_sdk_bindings; } + + pub mod instant { + use crate as dash_sdk_bindings; + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_structure { use crate as dash_sdk_bindings; } + } + } + } + } + + pub mod errors { use crate as dash_sdk_bindings; } + + pub mod fields { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "fixtures-and-mocks")] + pub mod tests { + use crate as dash_sdk_bindings; + + pub mod fixtures { use crate as dash_sdk_bindings; } + } + + pub mod util { + use crate as dash_sdk_bindings; + + #[cfg(feature = "cbor")] + pub mod cbor_value { + use crate as dash_sdk_bindings; + + pub mod convert { use crate as dash_sdk_bindings; } + + pub mod canonical { use crate as dash_sdk_bindings; } + } + + pub mod json_schema { use crate as dash_sdk_bindings; } + + pub mod strings { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod json_value { + use crate as dash_sdk_bindings; + + pub mod remove_path { use crate as dash_sdk_bindings; } + + pub mod insert_with_path { use crate as dash_sdk_bindings; } + } + + pub mod json_path { use crate as dash_sdk_bindings; } + + pub mod deserializer { use crate as dash_sdk_bindings; } + } + + pub mod core_subsidy { + use crate as dash_sdk_bindings; + + pub mod epoch_core_reward_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "system_contracts")] + pub mod system_data_contracts { + use crate as dash_sdk_bindings; + } + + pub mod data_contract { + use crate as dash_sdk_bindings; + + pub mod serialized_version { use crate as dash_sdk_bindings; } + + #[cfg(any(feature = "state-transitions", feature = "factories"))] + pub mod created_data_contract { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod group { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod methods { use crate as dash_sdk_bindings; } + } + + pub mod v1 { + use crate as dash_sdk_bindings; + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod schema { use crate as dash_sdk_bindings; } + } + + pub mod conversion { use crate as dash_sdk_bindings; } + } + + pub mod document_type { + use crate as dash_sdk_bindings; + + pub mod token_costs { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod class_methods { + use crate as dash_sdk_bindings; + + pub mod try_from_schema { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod v1 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + pub mod create_document_types_from_document_schemas { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod schema { + use crate as dash_sdk_bindings; + + pub mod enrich_with_base_schema { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_schema_compatibility { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "validation")] + pub mod recursive_schema_validator { + use crate as dash_sdk_bindings; + + pub mod traversal_validator { use crate as dash_sdk_bindings; } + } + + pub mod find_identifier_and_binary_paths { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_max_depth { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod methods { + use crate as dash_sdk_bindings; + + #[cfg(feature = "validation")] + pub mod validate_update { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + pub mod property { use crate as dash_sdk_bindings; } + + pub mod index_level { use crate as dash_sdk_bindings; } + + pub mod v1 { use crate as dash_sdk_bindings; } + + pub mod index { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod change_control_rules { use crate as dash_sdk_bindings; } + + pub mod associated_token { + use crate as dash_sdk_bindings; + + pub mod token_marketplace_rules { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_distribution_rules { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_perpetual_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod reward_distribution_moment { use crate as dash_sdk_bindings; } + + pub mod reward_distribution_type { + use crate as dash_sdk_bindings; + + pub mod validation { use crate as dash_sdk_bindings; } + } + + pub mod methods { use crate as dash_sdk_bindings; } + + pub mod distribution_function { + use crate as dash_sdk_bindings; + + pub mod evaluate_interval { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod validation { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod evaluate { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + pub mod token_pre_programmed_distribution { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod token_configuration_convention { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_localizations { use crate as dash_sdk_bindings; } + } + } + + pub mod token_keeps_history_rules { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod token_configuration { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_token_configuration_update { use crate as dash_sdk_bindings; } + + pub mod apply_token_configuration_item { use crate as dash_sdk_bindings; } + + pub mod can_apply_token_configuration_item { use crate as dash_sdk_bindings; } + + pub mod validate_token_configuration_groups_exist { use crate as dash_sdk_bindings; } + + pub mod authorized_action_takers_for_configuration_item { use crate as dash_sdk_bindings; } + } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + + pub mod token_configuration_localization { + use crate as dash_sdk_bindings; + + pub mod accessors { use crate as dash_sdk_bindings; } + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any( + feature = "data-contract-value-conversion", + feature = "data-contract-cbor-conversion", + feature = "data-contract-json-conversion" + ))] + pub mod conversion { + use crate as dash_sdk_bindings; + + #[cfg(feature = "data-contract-cbor-conversion")] + pub mod cbor { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "data-contract-value-conversion")] + pub mod value { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "data-contract-json-conversion")] + pub mod json { + use crate as dash_sdk_bindings; + } + } + + pub mod extra { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod drive_api_tests { + use crate as dash_sdk_bindings; + } + } + + pub mod storage_requirements { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod registration_cost { use crate as dash_sdk_bindings; } + + pub mod schema { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_document { + use crate as dash_sdk_bindings; + } + + pub mod equal_ignoring_time_based_fields { use crate as dash_sdk_bindings; } + + #[cfg(feature = "validation")] + pub mod validate_update { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(feature = "validation")] + pub mod validate_groups { + use crate as dash_sdk_bindings; + } + } + + pub mod v0 { + use crate as dash_sdk_bindings; + + pub mod data_contract { use crate as dash_sdk_bindings; } + + pub mod conversion { use crate as dash_sdk_bindings; } + + pub mod serialization { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod schema { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "factories")] + pub mod factory { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod config { + use crate as dash_sdk_bindings; + + pub mod fields { use crate as dash_sdk_bindings; } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod validate_update { use crate as dash_sdk_bindings; } + } + } + + pub mod errors { use crate as dash_sdk_bindings; } + } + } + + pub mod drive_proof_verifier { + use crate as dash_sdk_bindings; + + pub mod types { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`VotePollsGroupedByTimestamp`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_VotePollsGroupedByTimestamp(*mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_VotePollsGroupedByTimestamp { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> drive_proof_verifier::types::VotePollsGroupedByTimestamp { + let ffi_ref = &*ffi; + drive_proof_verifier::types::VotePollsGroupedByTimestamp()>>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_VotePollsGroupedByTimestamp { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::VotePollsGroupedByTimestamp) -> *const drive_proof_verifier_types_VotePollsGroupedByTimestamp { ferment::boxed(drive_proof_verifier_types_VotePollsGroupedByTimestamp()>>>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_VotePollsGroupedByTimestamp { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_ctor<>(o_0: *mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> *mut drive_proof_verifier_types_VotePollsGroupedByTimestamp { ferment::boxed(drive_proof_verifier_types_VotePollsGroupedByTimestamp(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_destroy<>(ffi: *mut drive_proof_verifier_types_VotePollsGroupedByTimestamp) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_get_0<>(obj: *const drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> *mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_VotePollsGroupedByTimestamp_set_0<>(obj: *const drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> *mut crate::fermented::generics::Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { (*obj).0 } + + #[doc = "FFI-representation of the [`ContestedResources`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_ContestedResources(*mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_ContestedResources { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_ContestedResources) -> drive_proof_verifier::types::ContestedResources { + let ffi_ref = &*ffi; + drive_proof_verifier::types::ContestedResources(>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_ContestedResources { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::ContestedResources) -> *const drive_proof_verifier_types_ContestedResources { ferment::boxed(drive_proof_verifier_types_ContestedResources(>>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_ContestedResources { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_ctor<>(o_0: *mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource) -> *mut drive_proof_verifier_types_ContestedResources { ferment::boxed(drive_proof_verifier_types_ContestedResources(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_destroy<>(ffi: *mut drive_proof_verifier_types_ContestedResources) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_get_0<>(obj: *const drive_proof_verifier_types_ContestedResources) -> *mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResources_set_0<>(obj: *const drive_proof_verifier_types_ContestedResources) -> *mut crate::fermented::generics::Vec_drive_proof_verifier_types_ContestedResource { (*obj).0 } + + #[doc = "FFI-representation of the [`Contenders`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_Contenders { + pub winner: *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo, + pub contenders: *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument, + pub abstain_vote_tally: *mut u32, + pub lock_vote_tally: *mut u32, + } + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_Contenders { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_Contenders) -> drive_proof_verifier::types::Contenders { + let ffi_ref = &*ffi; + drive_proof_verifier::types::Contenders { + winner: >::ffi_from_opt(ffi_ref.winner), + contenders: >>::ffi_from(ffi_ref.contenders), + abstain_vote_tally: ferment::from_opt_primitive(ffi_ref.abstain_vote_tally), + lock_vote_tally: ferment::from_opt_primitive(ffi_ref.lock_vote_tally), + } + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_Contenders { + unsafe fn ffi_to_const(obj: drive_proof_verifier::types::Contenders) -> *const drive_proof_verifier_types_Contenders { + ferment::boxed(drive_proof_verifier_types_Contenders { winner: >::ffi_to_opt(obj.winner), contenders: >>::ffi_to(obj.contenders), abstain_vote_tally: ferment::to_opt_primitive(obj.abstain_vote_tally), lock_vote_tally: ferment::to_opt_primitive(obj.lock_vote_tally) }) + } + } + + impl Drop for drive_proof_verifier_types_Contenders { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any_opt(ffi_ref.winner); + ferment::unbox_any(ffi_ref.contenders); + ferment::destroy_opt_primitive(ffi_ref.abstain_vote_tally); + ferment::destroy_opt_primitive(ffi_ref.lock_vote_tally); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_ctor<>(winner: *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo, contenders: *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument, abstain_vote_tally: *mut u32, lock_vote_tally: *mut u32) -> *mut drive_proof_verifier_types_Contenders { ferment::boxed(drive_proof_verifier_types_Contenders { winner, contenders, abstain_vote_tally, lock_vote_tally }) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_destroy<>(ffi: *mut drive_proof_verifier_types_Contenders) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_winner<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { (*obj).winner } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_contenders<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { (*obj).contenders } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_abstain_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).abstain_vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_get_lock_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).lock_vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_winner<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { (*obj).winner } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_contenders<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { (*obj).contenders } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_abstain_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).abstain_vote_tally } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Contenders_set_lock_vote_tally<>(obj: *const drive_proof_verifier_types_Contenders) -> *mut u32 { (*obj).lock_vote_tally } + + #[doc = "FFI-representation of the [`Voters`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_Voters(*mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_Voters { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_Voters) -> drive_proof_verifier::types::Voters { + let ffi_ref = &*ffi; + drive_proof_verifier::types::Voters(>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_Voters { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::Voters) -> *const drive_proof_verifier_types_Voters { ferment::boxed(drive_proof_verifier_types_Voters(>>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_Voters { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_ctor<>(o_0: *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter) -> *mut drive_proof_verifier_types_Voters { ferment::boxed(drive_proof_verifier_types_Voters(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_destroy<>(ffi: *mut drive_proof_verifier_types_Voters) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_get_0<>(obj: *const drive_proof_verifier_types_Voters) -> *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voters_set_0<>(obj: *const drive_proof_verifier_types_Voters) -> *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter { (*obj).0 } + + #[doc = "FFI-representation of the [`ResourceVotesByIdentity`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_ResourceVotesByIdentity(*mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_ResourceVotesByIdentity { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_ResourceVotesByIdentity) -> drive_proof_verifier::types::ResourceVotesByIdentity { + let ffi_ref = &*ffi; + >>>::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_ResourceVotesByIdentity { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::ResourceVotesByIdentity) -> *const drive_proof_verifier_types_ResourceVotesByIdentity { ferment::boxed(drive_proof_verifier_types_ResourceVotesByIdentity(>>>::ffi_to(obj))) } } + + impl Drop for drive_proof_verifier_types_ResourceVotesByIdentity { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_ctor<>(o_0: *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote) -> *mut drive_proof_verifier_types_ResourceVotesByIdentity { ferment::boxed(drive_proof_verifier_types_ResourceVotesByIdentity(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_destroy<>(ffi: *mut drive_proof_verifier_types_ResourceVotesByIdentity) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_get_0<>(obj: *const drive_proof_verifier_types_ResourceVotesByIdentity) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ResourceVotesByIdentity_set_0<>(obj: *const drive_proof_verifier_types_ResourceVotesByIdentity) -> *mut crate::fermented::generics::std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { (*obj).0 } + + #[doc = "FFI-representation of the [`ContestedResource`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_ContestedResource(*mut crate::fermented::types::platform_value::platform_value_Value); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_ContestedResource { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_ContestedResource) -> drive_proof_verifier::types::ContestedResource { + let ffi_ref = &*ffi; + drive_proof_verifier::types::ContestedResource(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_ContestedResource { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::ContestedResource) -> *const drive_proof_verifier_types_ContestedResource { ferment::boxed(drive_proof_verifier_types_ContestedResource(>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_ContestedResource { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_ctor<>(o_0: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut drive_proof_verifier_types_ContestedResource { ferment::boxed(drive_proof_verifier_types_ContestedResource(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_destroy<>(ffi: *mut drive_proof_verifier_types_ContestedResource) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_get_0<>(obj: *const drive_proof_verifier_types_ContestedResource) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_ContestedResource_set_0<>(obj: *const drive_proof_verifier_types_ContestedResource) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).0 } + + #[doc = "FFI-representation of the [`Voter`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_proof_verifier_types_Voter(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier); + + impl ferment::FFIConversionFrom for drive_proof_verifier_types_Voter { + unsafe fn ffi_from_const(ffi: *const drive_proof_verifier_types_Voter) -> drive_proof_verifier::types::Voter { + let ffi_ref = &*ffi; + drive_proof_verifier::types::Voter(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for drive_proof_verifier_types_Voter { unsafe fn ffi_to_const(obj: drive_proof_verifier::types::Voter) -> *const drive_proof_verifier_types_Voter { ferment::boxed(drive_proof_verifier_types_Voter(>::ffi_to(obj.0))) } } + + impl Drop for drive_proof_verifier_types_Voter { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_ctor<>(o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut drive_proof_verifier_types_Voter { ferment::boxed(drive_proof_verifier_types_Voter(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_destroy<>(ffi: *mut drive_proof_verifier_types_Voter) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_get_0<>(obj: *const drive_proof_verifier_types_Voter) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn drive_proof_verifier_types_Voter_set_0<>(obj: *const drive_proof_verifier_types_Voter) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).0 } + } + + pub mod proof { use crate as dash_sdk_bindings; } + } + + pub mod dash_sdk { + use crate as dash_sdk_bindings; + + pub mod error { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod mock { + use crate as dash_sdk_bindings; + + #[cfg(feature = "mocks")] + pub mod sdk { + use crate as dash_sdk_bindings; + } + } + + pub mod sync { use crate as dash_sdk_bindings; } + + pub mod core { use crate as dash_sdk_bindings; } + + pub mod platform { + use crate as dash_sdk_bindings; + + pub mod transition { use crate as dash_sdk_bindings; } + + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod transitions { use crate as dash_sdk_bindings; } + + pub mod builders { use crate as dash_sdk_bindings; } + } + + pub mod documents { + use crate as dash_sdk_bindings; + + pub mod transitions { use crate as dash_sdk_bindings; } + } + + pub mod types { + use crate as dash_sdk_bindings; + + pub mod identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`PublicKeyHash`]"] + #[repr(C)] + #[derive(Clone)] + pub struct dash_sdk_platform_types_identity_PublicKeyHash(*mut crate::fermented::generics::Arr_u8_20); + + impl ferment::FFIConversionFrom for dash_sdk_platform_types_identity_PublicKeyHash { + unsafe fn ffi_from_const(ffi: *const dash_sdk_platform_types_identity_PublicKeyHash) -> dash_sdk::platform::types::identity::PublicKeyHash { + let ffi_ref = &*ffi; + dash_sdk::platform::types::identity::PublicKeyHash(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for dash_sdk_platform_types_identity_PublicKeyHash { unsafe fn ffi_to_const(obj: dash_sdk::platform::types::identity::PublicKeyHash) -> *const dash_sdk_platform_types_identity_PublicKeyHash { ferment::boxed(dash_sdk_platform_types_identity_PublicKeyHash(>::ffi_to(obj.0))) } } + + impl Drop for dash_sdk_platform_types_identity_PublicKeyHash { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_ctor<>(o_0: *mut crate::fermented::generics::Arr_u8_20) -> *mut dash_sdk_platform_types_identity_PublicKeyHash { ferment::boxed(dash_sdk_platform_types_identity_PublicKeyHash(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_destroy<>(ffi: *mut dash_sdk_platform_types_identity_PublicKeyHash) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_get_0<>(obj: *const dash_sdk_platform_types_identity_PublicKeyHash) -> *mut crate::fermented::generics::Arr_u8_20 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn dash_sdk_platform_types_identity_PublicKeyHash_set_0<>(obj: *const dash_sdk_platform_types_identity_PublicKeyHash) -> *mut crate::fermented::generics::Arr_u8_20 { (*obj).0 } + } + } + } + + pub mod sdk { use crate as dash_sdk_bindings; } + } + + pub mod drive { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod state_transition_action { + use crate as dash_sdk_bindings; + + pub mod batch { + use crate as dash_sdk_bindings; + + pub mod batched_transition { + use crate as dash_sdk_bindings; + + pub mod token_transition { + use crate as dash_sdk_bindings; + + pub mod token_claim_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_unfreeze_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_freeze_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_mint_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_base_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_set_price_for_direct_purchase_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_direct_purchase_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_transfer_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_emergency_action_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_destroy_frozen_funds_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_burn_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod token_config_update_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod document_transition { + use crate as dash_sdk_bindings; + + pub mod document_purchase_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_replace_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_transfer_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_create_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_base_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_delete_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod document_update_price_transition_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + } + } + + pub mod action_convert_to_operations { + use crate as dash_sdk_bindings; + + pub mod system { use crate as dash_sdk_bindings; } + + pub mod batch { + use crate as dash_sdk_bindings; + + pub mod document { use crate as dash_sdk_bindings; } + + pub mod token { use crate as dash_sdk_bindings; } + } + + pub mod contract { use crate as dash_sdk_bindings; } + + pub mod identity { use crate as dash_sdk_bindings; } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod identity_update { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_create { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_credit_transfer { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_topup { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod masternode_vote { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod identity_credit_withdrawal { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod transformer { use crate as dash_sdk_bindings; } + } + } + + pub mod system { + use crate as dash_sdk_bindings; + + pub mod bump_identity_nonce_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod partially_use_asset_lock_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod bump_identity_data_contract_nonce_action { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod contract { + use crate as dash_sdk_bindings; + + pub mod data_contract_create { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod data_contract_update { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod drive { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod platform_state { + use crate as dash_sdk_bindings; + + pub mod fetch_platform_state_bytes { use crate as dash_sdk_bindings; } + + pub mod store_platform_state_bytes { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod initialization { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod genesis_core_height { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod votes { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod resolved { + use crate as dash_sdk_bindings; + + pub mod votes { + use crate as dash_sdk_bindings; + + pub mod resolved_resource_vote { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + + pub mod accessors { use crate as dash_sdk_bindings; } + } + } + + pub mod vote_polls { + use crate as dash_sdk_bindings; + + pub mod contested_document_resource_vote_poll { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod cleanup { + use crate as dash_sdk_bindings; + + pub mod remove_all_votes_given_by_identities { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_top_level_index_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_votes_operations { use crate as dash_sdk_bindings; } + + pub mod remove_specific_votes_given_by_identity { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_end_date_query_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_info_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_contenders_operations { use crate as dash_sdk_bindings; } + + pub mod remove_contested_resource_vote_poll_documents_operations { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod fetch_identities_voting_for_contenders { use crate as dash_sdk_bindings; } + + pub mod fetch_contested_document_vote_poll_stored_info { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_contested_resource_vote { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod register_identity_vote { use crate as dash_sdk_bindings; } + + pub mod vote_poll { + use crate as dash_sdk_bindings; + + pub mod add_vote_poll_end_date_query_operations { use crate as dash_sdk_bindings; } + } + + pub mod contested_resource { + use crate as dash_sdk_bindings; + + pub mod individual_vote { + use crate as dash_sdk_bindings; + + pub mod register_contested_resource_identity_vote { use crate as dash_sdk_bindings; } + } + + pub mod insert_stored_info_for_contested_resource_vote_poll { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod storage_form { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod setup { + use crate as dash_sdk_bindings; + + pub mod setup_initial_vote_tree_main_structure { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod identity { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod contract_info { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod identity_contract_nonce { + use crate as dash_sdk_bindings; + + pub mod merge_identity_contract_nonce { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_identity_contract_nonce { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_identity_contract_nonce { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod keys { + use crate as dash_sdk_bindings; + + pub mod add_potential_contract_info_for_contract_bounded_key { use crate as dash_sdk_bindings; } + + pub mod refresh_potential_contract_info_key_references { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod withdrawals { + use crate as dash_sdk_bindings; + + pub mod transaction { + use crate as dash_sdk_bindings; + + pub mod index { + use crate as dash_sdk_bindings; + + pub mod add_update_next_withdrawal_transaction_index_operation { use crate as dash_sdk_bindings; } + + pub mod fetch_next_withdrawal_transaction_index { use crate as dash_sdk_bindings; } + } + + pub mod queue { + use crate as dash_sdk_bindings; + + pub mod add_enqueue_untied_withdrawal_transaction_operations { use crate as dash_sdk_bindings; } + + pub mod dequeue_untied_withdrawal_transactions { use crate as dash_sdk_bindings; } + + pub mod remove_broadcasted_withdrawal_transactions_after_completion { use crate as dash_sdk_bindings; } + + pub mod move_broadcasted_withdrawal_transactions_back_to_queue_operations { use crate as dash_sdk_bindings; } + } + } + + pub mod document { + use crate as dash_sdk_bindings; + + pub mod fetch_oldest_withdrawal_documents_by_status { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod find_withdrawal_documents_by_status_and_transaction_indices { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + pub mod calculate_current_withdrawal_limit { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + pub mod operations { + use crate as dash_sdk_bindings; + + pub mod update_identity_balance_operation { use crate as dash_sdk_bindings; } + + pub mod insert_identity_balance_operation { use crate as dash_sdk_bindings; } + + pub mod initialize_negative_identity_balance_operation { use crate as dash_sdk_bindings; } + + pub mod merge_identity_nonce_operations { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod update_identity_revision_operation { use crate as dash_sdk_bindings; } + + pub mod initialize_identity_revision_operation { use crate as dash_sdk_bindings; } + + pub mod initialize_identity_nonce_operation { use crate as dash_sdk_bindings; } + + pub mod update_identity_negative_credit_operation { use crate as dash_sdk_bindings; } + } + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod add_to_identity_balance { use crate as dash_sdk_bindings; } + + pub mod add_to_previous_balance { use crate as dash_sdk_bindings; } + + pub mod apply_balance_change_from_fee_to_identity { use crate as dash_sdk_bindings; } + + pub mod re_enable_identity_keys { use crate as dash_sdk_bindings; } + + pub mod add_new_unique_keys_to_identity { use crate as dash_sdk_bindings; } + + pub mod add_new_non_unique_keys_to_identity { use crate as dash_sdk_bindings; } + + pub mod update_identity_revision { use crate as dash_sdk_bindings; } + + pub mod refresh_identity_key_reference_operations { use crate as dash_sdk_bindings; } + + pub mod remove_from_identity_balance { use crate as dash_sdk_bindings; } + + pub mod merge_identity_nonce { use crate as dash_sdk_bindings; } + + pub mod disable_identity_keys { use crate as dash_sdk_bindings; } + + pub mod add_new_keys_to_identity { use crate as dash_sdk_bindings; } + } + + pub mod structs { + use crate as dash_sdk_bindings; + + pub mod add_to_previous_balance_outcome { use crate as dash_sdk_bindings; } + + pub mod apply_balance_change_outcome { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod fetch { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod contract_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_by_public_key_hashes { + use crate as dash_sdk_bindings; + + pub mod fetch_full_identity_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod fetch_full_identities_by_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_id_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_ids_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod fetch_full_identity_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod has_any_of_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod has_non_unique_public_key_hash_already_for_identity { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_ids_by_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod has_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod has_unique_public_key_hash { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod revision { + use crate as dash_sdk_bindings; + + pub mod fetch_identity_revision { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod balance { + use crate as dash_sdk_bindings; + + pub mod fetch_identity_balance { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_balance_include_debt { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_negative_balance { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod nonce { + use crate as dash_sdk_bindings; + + pub mod prove_identity_nonce { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_nonce { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod full_identity { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + pub mod fetch_full_identities { use crate as dash_sdk_bindings; } + + pub mod fetch_full_identity { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod partial_identity { + use crate as dash_sdk_bindings; + + pub mod fetch_identity_keys { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_balance_with_keys { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_revision_with_keys { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_with_balance { use crate as dash_sdk_bindings; } + + pub mod fetch_identity_balance_with_keys_and_revision { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_full_identity_by_non_unique_public_key_hash { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_full_identities { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_identity_ids_by_unique_public_key_hashes { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_full_identities_by_unique_public_key_hashes { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_identity_id_by_unique_public_key_hash { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_full_identity { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_identities_contract_keys { use crate as dash_sdk_bindings; } + + pub mod prove_full_identity_by_unique_public_key_hash { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod for_keys_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod for_balances { use crate as dash_sdk_bindings; } + + pub mod for_update_nonce { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info_group { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info_group_keys { use crate as dash_sdk_bindings; } + + pub mod for_purpose_in_key_reference_tree { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info_group_key_purpose { use crate as dash_sdk_bindings; } + + pub mod for_identity_contract_info { use crate as dash_sdk_bindings; } + + pub mod for_root_key_reference_tree { use crate as dash_sdk_bindings; } + + pub mod for_update_revision { use crate as dash_sdk_bindings; } + + pub mod for_negative_credit { use crate as dash_sdk_bindings; } + + pub mod for_authentication_keys_security_level_in_key_reference_tree { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod key { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod insert_key_hash_identity_reference { + use crate as dash_sdk_bindings; + + pub mod insert_reference_to_non_unique_key { use crate as dash_sdk_bindings; } + + pub mod insert_reference_to_unique_key { use crate as dash_sdk_bindings; } + + pub mod insert_non_unique_public_key_hash_reference_to_identity { use crate as dash_sdk_bindings; } + + pub mod insert_unique_public_key_hash_reference_to_identity { use crate as dash_sdk_bindings; } + + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_insert_unique_public_key_hash_reference { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_insert_non_unique_public_key_hash_reference { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod create_key_tree_with_keys { use crate as dash_sdk_bindings; } + + pub mod insert_new_non_unique_key { use crate as dash_sdk_bindings; } + + pub mod create_new_identity_key_query_trees { use crate as dash_sdk_bindings; } + + pub mod replace_key_in_storage { use crate as dash_sdk_bindings; } + + pub mod insert_key_to_storage { use crate as dash_sdk_bindings; } + + pub mod insert_new_unique_key { use crate as dash_sdk_bindings; } + + pub mod insert_key_searchable_references { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod fetch { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod fetch_all_identity_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_all_current_identity_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identity_keys { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identities_all_keys { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_identity_keys { use crate as dash_sdk_bindings; } + + pub mod prove_identities_all_keys { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_new_identity { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod balance { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod shared { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod shared_estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_levels_up_to_contract_document_type_excluded { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_levels_up_to_contract { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_contested_document_tree_levels_up_to_contract { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod credit_pools { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod epochs { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod get_finalized_epoch_info { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod get_epochs_protocol_versions { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod start_block { + use crate as dash_sdk_bindings; + + pub mod get_epoch_start_block_core_height { use crate as dash_sdk_bindings; } + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + pub mod get_first_epoch_start_block_info_between_epochs { use crate as dash_sdk_bindings; } + + pub mod get_epoch_start_block_height { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod get_epoch_protocol_version { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod credit_distribution_pools { + use crate as dash_sdk_bindings; + + pub mod add_epoch_processing_credits_for_distribution_operation { use crate as dash_sdk_bindings; } + + pub mod add_epoch_final_info_operation { use crate as dash_sdk_bindings; } + + pub mod get_epoch_fee_multiplier { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_epoch_total_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_epoch_processing_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_storage_credits_for_distribution_for_epochs_in_range { use crate as dash_sdk_bindings; } + + pub mod get_epoch_storage_credits_for_distribution { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod get_epochs_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_epochs_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod proposers { + use crate as dash_sdk_bindings; + + pub mod prove_epoch_proposers { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod get_epochs_proposer_block_count { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod fetch_epoch_proposers { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod is_epochs_proposers_tree_empty { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove_finalized_epoch_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod operations_factory { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod start_time { + use crate as dash_sdk_bindings; + + pub mod get_epoch_start_time { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod has_epoch_tree_exists { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(feature = "server")] + pub mod storage_fee_distribution_pool { + use crate as dash_sdk_bindings; + + pub mod get_storage_fees_from_distribution_pool { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod operations { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod unpaid_epoch { + use crate as dash_sdk_bindings; + + pub mod get_unpaid_epoch_index { + use crate as dash_sdk_bindings; + + pub mod v0 { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + } + + #[cfg(feature = "server")] + pub mod pending_epoch_refunds { + use crate as dash_sdk_bindings; + + pub mod methods { + use crate as dash_sdk_bindings; + + pub mod add_delete_pending_epoch_refunds_except_specified { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod fetch_and_add_pending_epoch_refunds_to_collection { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod fetch_pending_epoch_refunds { use crate as dash_sdk_bindings; } + } + + pub mod operations { + use crate as dash_sdk_bindings; + + pub mod add_update_pending_epoch_refunds_operations { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(feature = "server")] + pub mod asset_lock { + use crate as dash_sdk_bindings; + + pub mod fetch_asset_lock_outpoint_info { use crate as dash_sdk_bindings; } + + pub mod add_asset_lock_outpoint_operations { use crate as dash_sdk_bindings; } + + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_adding_asset_lock { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod balances { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod remove_from_system_credits { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_to_system_credits { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod calculate_total_credits_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_to_system_credits_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod remove_from_system_credits_operations { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod prefunded_specialized_balances { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod for_prefunded_specialized_balance_update { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod single_balance { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod deduct_from_prefunded_specialized_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod empty_prefunded_specialized_balance_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod deduct_from_prefunded_specialized_balance_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_prefunded_specialized_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod single_balance { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod add_prefunded_specialized_balance_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod empty_prefunded_specialized_balance { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod group { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_new_groups { use crate as dash_sdk_bindings; } + + pub mod add_group_action { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_group_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_group_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_action_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod prove_action_signers { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod fetch_action_signers { use crate as dash_sdk_bindings; } + + pub mod fetch_active_action_info { use crate as dash_sdk_bindings; } + + pub mod fetch_group_info { use crate as dash_sdk_bindings; } + + pub mod fetch_group_infos { use crate as dash_sdk_bindings; } + + pub mod fetch_action_infos { use crate as dash_sdk_bindings; } + + pub mod fetch_action_id_signers_power { use crate as dash_sdk_bindings; } + + pub mod fetch_action_is_closed { use crate as dash_sdk_bindings; } + + pub mod fetch_action_id_info_keep_serialized { use crate as dash_sdk_bindings; } + + pub mod fetch_action_id_has_signer { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod estimated_costs { + use crate as dash_sdk_bindings; + + pub mod for_add_groups { use crate as dash_sdk_bindings; } + + pub mod for_add_group_action { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod protocol_upgrade { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod update_validator_proposed_app_version { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_proved_validator_version_votes { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod remove_validators_proposed_app_versions { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_versions_with_counter { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_proved_versions_with_counter { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_validator_version_votes { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod clear_version_information { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod status { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod fetch_token_statuses { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_token_status { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_token_statuses { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod apply_status { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod freeze { + use crate as dash_sdk_bindings; + } + + pub mod balance { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod remove_from_identity_token_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_identities_token_balances { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove_identity_token_balances { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_identities_token_balances { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_balances { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_to_previous_token_balance { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_balance { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod calculate_total_tokens_balance { + use crate as dash_sdk_bindings; + } + + pub mod contract_info { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove_token_contract_info { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_token_contract_info { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod mint_many { + use crate as dash_sdk_bindings; + } + + pub mod distribution { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod mark_pre_programmed_release_as_distributed { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod mark_perpetual_release_as_distributed { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch { + use crate as dash_sdk_bindings; + + pub mod pre_programmed_distribution_last_paid_time_ms { use crate as dash_sdk_bindings; } + + pub mod pre_programmed_distributions { use crate as dash_sdk_bindings; } + + pub mod perpetual_distribution_last_paid_moment { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod add_perpetual_distribution { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_pre_programmed_distribution { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod perpetual_distribution_last_paid_moment { use crate as dash_sdk_bindings; } + + pub mod pre_programmed_distributions { use crate as dash_sdk_bindings; } + } + } + + pub mod info { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod fetch_identities_token_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_infos { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_identity_token_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod prove_identities_token_infos { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fetch_identity_token_info { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod burn { + use crate as dash_sdk_bindings; + } + + pub mod direct_purchase { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod set_direct_purchase_price { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod prove_tokens_direct_purchase_price { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_token_direct_purchase_price { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod fetch_tokens_direct_purchase_price { + use crate as dash_sdk_bindings; + } + } + + #[cfg(feature = "server")] + pub mod unfreeze { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod transfer { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod estimated_costs { + use crate as dash_sdk_bindings; + + pub mod for_token_status_infos { use crate as dash_sdk_bindings; } + + pub mod for_token_total_supply { use crate as dash_sdk_bindings; } + + pub mod for_token_balances { use crate as dash_sdk_bindings; } + + pub mod for_root_token_ms_interval_distribution { use crate as dash_sdk_bindings; } + + pub mod for_token_identity_infos { use crate as dash_sdk_bindings; } + + pub mod for_token_direct_selling_prices { use crate as dash_sdk_bindings; } + + pub mod for_token_contract_infos { use crate as dash_sdk_bindings; } + + pub mod for_token_perpetual_distribution { use crate as dash_sdk_bindings; } + + pub mod for_token_pre_programmed_distribution { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod mint { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_transaction_history_operations { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod system { + use crate as dash_sdk_bindings; + + pub mod add_to_token_total_supply { use crate as dash_sdk_bindings; } + + pub mod fetch_token_total_aggregated_identity_balances { use crate as dash_sdk_bindings; } + + pub mod create_token_trees { use crate as dash_sdk_bindings; } + + pub mod fetch_token_total_supply { use crate as dash_sdk_bindings; } + + pub mod prove_token_total_supply_and_aggregated_identity_balances { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod remove_from_token_total_supply { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify", feature = "fixtures-and-mocks"))] + pub mod contract { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + pub mod prove_contracts { use crate as dash_sdk_bindings; } + + pub mod prove_contract { use crate as dash_sdk_bindings; } + + pub mod prove_contract_history { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod get_fetch { + use crate as dash_sdk_bindings; + + pub mod fetch_contract { use crate as dash_sdk_bindings; } + + pub mod get_contract_with_fetch_info { use crate as dash_sdk_bindings; } + + pub mod get_cached_contract_with_fetch_info { use crate as dash_sdk_bindings; } + + pub mod get_contracts_with_fetch_info { use crate as dash_sdk_bindings; } + + pub mod fetch_contract_with_history { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_description { use crate as dash_sdk_bindings; } + + pub mod add_contract_to_storage { use crate as dash_sdk_bindings; } + + pub mod add_new_keywords { use crate as dash_sdk_bindings; } + + pub mod insert_contract { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod update { + use crate as dash_sdk_bindings; + + pub mod update_contract { use crate as dash_sdk_bindings; } + + pub mod update_keywords { use crate as dash_sdk_bindings; } + + pub mod update_description { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod apply { + use crate as dash_sdk_bindings; + + pub mod apply_contract_with_serialization { use crate as dash_sdk_bindings; } + + pub mod apply_contract { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_contract_insertion { use crate as dash_sdk_bindings; } + } + } + + #[cfg(feature = "server")] + pub mod system { + use crate as dash_sdk_bindings; + + pub mod fetch_elements { use crate as dash_sdk_bindings; } + + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod for_total_system_credits_update { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod genesis_time { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod protocol_version { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify", feature = "fixtures-and-mocks"))] + pub mod document { + use crate as dash_sdk_bindings; + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod update { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod update_document_for_contract { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod add_update_multiple_documents_operations { + use crate as dash_sdk_bindings; + } + + pub mod update_document_with_serialization_for_contract { use crate as dash_sdk_bindings; } + + #[cfg(feature = "server")] + pub mod update_document_for_contract_id { + use crate as dash_sdk_bindings; + } + + pub mod internal { + use crate as dash_sdk_bindings; + + pub mod update_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod update_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod insert { + use crate as dash_sdk_bindings; + + pub mod add_document { use crate as dash_sdk_bindings; } + + pub mod add_reference_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_indices_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_to_primary_storage { use crate as dash_sdk_bindings; } + + pub mod add_indices_for_top_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + + pub mod add_document_for_contract { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod insert_contested { + use crate as dash_sdk_bindings; + + pub mod add_contested_document_to_primary_storage { use crate as dash_sdk_bindings; } + + pub mod add_contested_document { use crate as dash_sdk_bindings; } + + pub mod add_contested_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_vote_subtrees_for_non_identities_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_document_for_contract { use crate as dash_sdk_bindings; } + + pub mod add_contested_indices_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod add_contested_reference_and_vote_subtree_to_document_operations { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "fixtures-and-mocks"))] + pub mod query { + use crate as dash_sdk_bindings; + + pub mod query_documents { use crate as dash_sdk_bindings; } + + pub mod query_contested_documents_storage { use crate as dash_sdk_bindings; } + + pub mod query_contested_documents_vote_state { use crate as dash_sdk_bindings; } + + pub mod query_documents_with_flags { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod estimation_costs { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_add_document_to_primary_storage { use crate as dash_sdk_bindings; } + + pub mod stateless_delete_of_non_tree_for_costs { use crate as dash_sdk_bindings; } + + pub mod add_estimation_costs_for_add_contested_document_to_primary_storage { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod index_uniqueness { + use crate as dash_sdk_bindings; + + pub mod validate_document_create_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_replace_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod internal { + use crate as dash_sdk_bindings; + + pub mod validate_uniqueness_of_data { use crate as dash_sdk_bindings; } + } + + pub mod validate_document_purchase_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_update_price_transition_action_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_uniqueness { use crate as dash_sdk_bindings; } + + pub mod validate_document_transfer_transition_action_uniqueness { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod delete { + use crate as dash_sdk_bindings; + + pub mod remove_indices_for_top_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod remove_document_from_primary_storage { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_with_named_type_operations { use crate as dash_sdk_bindings; } + + pub mod internal { + use crate as dash_sdk_bindings; + + pub mod add_estimation_costs_for_remove_document_to_primary_storage { use crate as dash_sdk_bindings; } + } + + pub mod delete_document_for_contract_id_with_named_type_operations { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_apply_and_add_to_operations { use crate as dash_sdk_bindings; } + + pub mod delete_document_for_contract_id { use crate as dash_sdk_bindings; } + + pub mod remove_reference_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + + pub mod remove_indices_for_index_level_for_contract_operations { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod verify { + use crate as dash_sdk_bindings; + + pub mod group { + use crate as dash_sdk_bindings; + + pub mod verify_action_signers_total_power { use crate as dash_sdk_bindings; } + + pub mod verify_active_action_infos { use crate as dash_sdk_bindings; } + + pub mod verify_group_info { use crate as dash_sdk_bindings; } + + pub mod verify_group_infos_in_contract { use crate as dash_sdk_bindings; } + + pub mod verify_action_signers { use crate as dash_sdk_bindings; } + } + + pub mod state_transition { + use crate as dash_sdk_bindings; + + pub mod verify_state_transition_was_executed_with_proof { use crate as dash_sdk_bindings; } + + pub mod state_transition_execution_path_queries { use crate as dash_sdk_bindings; } + } + + pub mod single_document { + use crate as dash_sdk_bindings; + + pub mod verify_proof_keep_serialized { use crate as dash_sdk_bindings; } + + pub mod verify_proof { use crate as dash_sdk_bindings; } + } + + pub mod tokens { + use crate as dash_sdk_bindings; + + pub mod verify_token_direct_selling_prices { use crate as dash_sdk_bindings; } + + pub mod verify_token_infos_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_perpetual_distribution_last_paid_time { use crate as dash_sdk_bindings; } + + pub mod verify_token_balances_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_direct_selling_price { use crate as dash_sdk_bindings; } + + pub mod verify_token_balance_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_status { use crate as dash_sdk_bindings; } + + pub mod verify_token_balances_for_identity_ids { use crate as dash_sdk_bindings; } + + pub mod verify_token_info_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_token_total_supply_and_aggregated_identity_balance { use crate as dash_sdk_bindings; } + + pub mod verify_token_pre_programmed_distributions { use crate as dash_sdk_bindings; } + + pub mod verify_token_statuses { use crate as dash_sdk_bindings; } + + pub mod verify_token_infos_for_identity_ids { use crate as dash_sdk_bindings; } + + pub mod verify_token_contract_info { use crate as dash_sdk_bindings; } + } + + pub mod contract { + use crate as dash_sdk_bindings; + + pub mod verify_contract { use crate as dash_sdk_bindings; } + + pub mod verify_contract_history { use crate as dash_sdk_bindings; } + } + + pub mod document { + use crate as dash_sdk_bindings; + + pub mod verify_proof_keep_serialized { use crate as dash_sdk_bindings; } + + pub mod verify_proof { use crate as dash_sdk_bindings; } + + pub mod verify_start_at_document_in_proof { use crate as dash_sdk_bindings; } + } + + pub mod system { + use crate as dash_sdk_bindings; + + pub mod verify_elements { use crate as dash_sdk_bindings; } + + pub mod verify_finalized_epoch_infos { use crate as dash_sdk_bindings; } + + pub mod verify_epoch_infos { use crate as dash_sdk_bindings; } + + pub mod verify_epoch_proposers { use crate as dash_sdk_bindings; } + + pub mod verify_upgrade_state { use crate as dash_sdk_bindings; } + + pub mod verify_upgrade_vote_status { use crate as dash_sdk_bindings; } + + pub mod verify_total_credits_in_system { use crate as dash_sdk_bindings; } + } + + pub mod voting { + use crate as dash_sdk_bindings; + + pub mod verify_vote_poll_vote_state_proof { use crate as dash_sdk_bindings; } + + pub mod verify_vote_polls_end_date_query { use crate as dash_sdk_bindings; } + + pub mod verify_vote_poll_votes_proof { use crate as dash_sdk_bindings; } + + pub mod verify_masternode_vote { use crate as dash_sdk_bindings; } + + pub mod verify_contests_proof { use crate as dash_sdk_bindings; } + + pub mod verify_identity_votes_given_proof { use crate as dash_sdk_bindings; } + + pub mod verify_specialized_balance { use crate as dash_sdk_bindings; } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + pub mod verify_identity_balance_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_identity_revision_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_full_identity_by_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_identity_id_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_identity_ids_by_unique_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod verify_identity_nonce { use crate as dash_sdk_bindings; } + + pub mod verify_identity_balance_and_revision_for_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_full_identities_by_public_key_hashes { use crate as dash_sdk_bindings; } + + pub mod verify_identity_keys_by_identity_id { use crate as dash_sdk_bindings; } + + pub mod verify_full_identity_by_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_full_identity_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_identity_id_by_non_unique_public_key_hash { use crate as dash_sdk_bindings; } + + pub mod verify_identity_balances_for_identity_ids { use crate as dash_sdk_bindings; } + + pub mod verify_identities_contract_keys { use crate as dash_sdk_bindings; } + + pub mod verify_identity_contract_nonce { use crate as dash_sdk_bindings; } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod query { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod test_index { + use crate as dash_sdk_bindings; + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod ordering { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`OrderClause`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_query_ordering_OrderClause { + pub field: *mut std::os::raw::c_char, + pub ascending: bool, + } + + impl ferment::FFIConversionFrom for drive_query_ordering_OrderClause { + unsafe fn ffi_from_const(ffi: *const drive_query_ordering_OrderClause) -> drive::query::ordering::OrderClause { + let ffi_ref = &*ffi; + drive::query::ordering::OrderClause { field: >::ffi_from(ffi_ref.field), ascending: ffi_ref.ascending } + } + } + + impl ferment::FFIConversionTo for drive_query_ordering_OrderClause { unsafe fn ffi_to_const(obj: drive::query::ordering::OrderClause) -> *const drive_query_ordering_OrderClause { ferment::boxed(drive_query_ordering_OrderClause { field: >::ffi_to(obj.field), ascending: obj.ascending }) } } + + impl Drop for drive_query_ordering_OrderClause { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_string(ffi_ref.field); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_ctor<>(field: *mut std::os::raw::c_char, ascending: bool) -> *mut drive_query_ordering_OrderClause { ferment::boxed(drive_query_ordering_OrderClause { field, ascending }) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_destroy<>(ffi: *mut drive_query_ordering_OrderClause) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_get_field<>(obj: *const drive_query_ordering_OrderClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_get_ascending<>(obj: *const drive_query_ordering_OrderClause) -> bool { (*obj).ascending } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_set_field<>(obj: *const drive_query_ordering_OrderClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_ordering_OrderClause_set_ascending<>(obj: *const drive_query_ordering_OrderClause) -> bool { (*obj).ascending } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod conditions { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`WhereOperator`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum drive_query_conditions_WhereOperator { Equal, GreaterThan, GreaterThanOrEquals, LessThan, LessThanOrEquals, Between, BetweenExcludeBounds, BetweenExcludeLeft, BetweenExcludeRight, In, StartsWith } + + impl ferment::FFIConversionFrom for drive_query_conditions_WhereOperator { + unsafe fn ffi_from_const(ffi: *const drive_query_conditions_WhereOperator) -> drive::query::conditions::WhereOperator { + let ffi_ref = &*ffi; + match ffi_ref { + drive_query_conditions_WhereOperator::Equal => drive::query::conditions::WhereOperator::Equal, + drive_query_conditions_WhereOperator::GreaterThan => drive::query::conditions::WhereOperator::GreaterThan, + drive_query_conditions_WhereOperator::GreaterThanOrEquals => drive::query::conditions::WhereOperator::GreaterThanOrEquals, + drive_query_conditions_WhereOperator::LessThan => drive::query::conditions::WhereOperator::LessThan, + drive_query_conditions_WhereOperator::LessThanOrEquals => drive::query::conditions::WhereOperator::LessThanOrEquals, + drive_query_conditions_WhereOperator::Between => drive::query::conditions::WhereOperator::Between, + drive_query_conditions_WhereOperator::BetweenExcludeBounds => drive::query::conditions::WhereOperator::BetweenExcludeBounds, + drive_query_conditions_WhereOperator::BetweenExcludeLeft => drive::query::conditions::WhereOperator::BetweenExcludeLeft, + drive_query_conditions_WhereOperator::BetweenExcludeRight => drive::query::conditions::WhereOperator::BetweenExcludeRight, + drive_query_conditions_WhereOperator::In => drive::query::conditions::WhereOperator::In, + drive_query_conditions_WhereOperator::StartsWith => drive::query::conditions::WhereOperator::StartsWith + } + } + } + + impl ferment::FFIConversionTo for drive_query_conditions_WhereOperator { + unsafe fn ffi_to_const(obj: drive::query::conditions::WhereOperator) -> *const drive_query_conditions_WhereOperator { + ferment::boxed(match obj { + drive::query::conditions::WhereOperator::Equal => drive_query_conditions_WhereOperator::Equal, + drive::query::conditions::WhereOperator::GreaterThan => drive_query_conditions_WhereOperator::GreaterThan, + drive::query::conditions::WhereOperator::GreaterThanOrEquals => drive_query_conditions_WhereOperator::GreaterThanOrEquals, + drive::query::conditions::WhereOperator::LessThan => drive_query_conditions_WhereOperator::LessThan, + drive::query::conditions::WhereOperator::LessThanOrEquals => drive_query_conditions_WhereOperator::LessThanOrEquals, + drive::query::conditions::WhereOperator::Between => drive_query_conditions_WhereOperator::Between, + drive::query::conditions::WhereOperator::BetweenExcludeBounds => drive_query_conditions_WhereOperator::BetweenExcludeBounds, + drive::query::conditions::WhereOperator::BetweenExcludeLeft => drive_query_conditions_WhereOperator::BetweenExcludeLeft, + drive::query::conditions::WhereOperator::BetweenExcludeRight => drive_query_conditions_WhereOperator::BetweenExcludeRight, + drive::query::conditions::WhereOperator::In => drive_query_conditions_WhereOperator::In, + drive::query::conditions::WhereOperator::StartsWith => drive_query_conditions_WhereOperator::StartsWith, + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for drive_query_conditions_WhereOperator { + fn drop(&mut self) { + unsafe { + match self { + drive_query_conditions_WhereOperator::Equal => {} + drive_query_conditions_WhereOperator::GreaterThan => {} + drive_query_conditions_WhereOperator::GreaterThanOrEquals => {} + drive_query_conditions_WhereOperator::LessThan => {} + drive_query_conditions_WhereOperator::LessThanOrEquals => {} + drive_query_conditions_WhereOperator::Between => {} + drive_query_conditions_WhereOperator::BetweenExcludeBounds => {} + drive_query_conditions_WhereOperator::BetweenExcludeLeft => {} + drive_query_conditions_WhereOperator::BetweenExcludeRight => {} + drive_query_conditions_WhereOperator::In => {} + drive_query_conditions_WhereOperator::StartsWith => {} + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_Equal_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::Equal {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_GreaterThan_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::GreaterThan {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_GreaterThanOrEquals_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::GreaterThanOrEquals {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_LessThan_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::LessThan {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_LessThanOrEquals_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::LessThanOrEquals {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_Between_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::Between {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_BetweenExcludeBounds_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::BetweenExcludeBounds {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_BetweenExcludeLeft_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::BetweenExcludeLeft {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_BetweenExcludeRight_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::BetweenExcludeRight {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_In_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::In {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_StartsWith_ctor() -> *mut drive_query_conditions_WhereOperator { ferment::boxed(drive_query_conditions_WhereOperator::StartsWith {}) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereOperator_destroy<>(ffi: *mut drive_query_conditions_WhereOperator) { ferment::unbox_any(ffi); } + + #[doc = "FFI-representation of the [`WhereClause`]"] + #[repr(C)] + #[derive(Clone)] + pub struct drive_query_conditions_WhereClause { + pub field: *mut std::os::raw::c_char, + pub operator: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator, + pub value: *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom for drive_query_conditions_WhereClause { + unsafe fn ffi_from_const(ffi: *const drive_query_conditions_WhereClause) -> drive::query::conditions::WhereClause { + let ffi_ref = &*ffi; + drive::query::conditions::WhereClause { field: >::ffi_from(ffi_ref.field), operator: >::ffi_from(ffi_ref.operator), value: >::ffi_from(ffi_ref.value) } + } + } + + impl ferment::FFIConversionTo for drive_query_conditions_WhereClause { unsafe fn ffi_to_const(obj: drive::query::conditions::WhereClause) -> *const drive_query_conditions_WhereClause { ferment::boxed(drive_query_conditions_WhereClause { field: >::ffi_to(obj.field), operator: >::ffi_to(obj.operator), value: >::ffi_to(obj.value) }) } } + + impl Drop for drive_query_conditions_WhereClause { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_string(ffi_ref.field); + ferment::unbox_any(ffi_ref.operator); + ferment::unbox_any(ffi_ref.value); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_ctor<>(field: *mut std::os::raw::c_char, operator: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator, value: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut drive_query_conditions_WhereClause { ferment::boxed(drive_query_conditions_WhereClause { field, operator, value }) } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_destroy<>(ffi: *mut drive_query_conditions_WhereClause) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_get_field<>(obj: *const drive_query_conditions_WhereClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_get_operator<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator { (*obj).operator } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_get_value<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).value } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_set_field<>(obj: *const drive_query_conditions_WhereClause) -> *mut std::os::raw::c_char { (*obj).field } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_set_operator<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator { (*obj).operator } + + #[no_mangle] + pub unsafe extern "C" fn drive_query_conditions_WhereClause_set_value<>(obj: *const drive_query_conditions_WhereClause) -> *mut crate::fermented::types::platform_value::platform_value_Value { (*obj).value } + } + } + + #[cfg(feature = "server")] + pub mod prove { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod prove_state_transition { + use crate as dash_sdk_bindings; + } + + pub mod prove_elements { use crate as dash_sdk_bindings; } + + pub mod prove_multiple_state_transition_results { use crate as dash_sdk_bindings; } + } + + #[cfg(feature = "server")] + pub mod fees { + use crate as dash_sdk_bindings; + + pub mod calculate_fee { use crate as dash_sdk_bindings; } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod error { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod cache { + use crate as dash_sdk_bindings; + + pub mod data_contract { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + } + + #[cfg(any(feature = "server", feature = "verify", feature = "fixtures-and-mocks"))] + pub mod util { + use crate as dash_sdk_bindings; + + #[cfg(feature = "server")] + pub mod batch { + use crate as dash_sdk_bindings; + + pub mod drive_op_batch { + use crate as dash_sdk_bindings; + + pub mod drive_methods { + use crate as dash_sdk_bindings; + + pub mod convert_drive_operations_to_grove_operations { use crate as dash_sdk_bindings; } + + pub mod apply_drive_operations { use crate as dash_sdk_bindings; } + } + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod object_size_info { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod grove_operations { + use crate as dash_sdk_bindings; + + pub mod batch_remove_raw { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query_serialized_results { use crate as dash_sdk_bindings; } + + pub mod batch_insert_sum_item_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod batch_insert_if_changed_value { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_tree_if_not_exists_check_existing_operations { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_sum_tree { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query_with_optional { use crate as dash_sdk_bindings; } + + pub mod batch_insert { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_value_u64_from_encoded_var_vec { use crate as dash_sdk_bindings; } + + pub mod grove_get_proved_path_query { use crate as dash_sdk_bindings; } + + pub mod grove_get_big_sum_tree_total_value { use crate as dash_sdk_bindings; } + + pub mod grove_insert_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod batch_insert_sum_item_or_add_to_if_already_exists { use crate as dash_sdk_bindings; } + + pub mod grove_get_sum_tree_total_value { use crate as dash_sdk_bindings; } + + pub mod grove_batch_operations_costs { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_optional_item { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_tree { use crate as dash_sdk_bindings; } + + pub mod batch_insert_if_not_exists_return_existing_element { use crate as dash_sdk_bindings; } + + pub mod batch_delete_up_tree_while_empty { use crate as dash_sdk_bindings; } + + pub mod grove_delete { use crate as dash_sdk_bindings; } + + pub mod grove_clear { use crate as dash_sdk_bindings; } + + pub mod batch_delete { use crate as dash_sdk_bindings; } + + pub mod batch_move_items_in_path_query { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod grove_insert_if_not_exists_return_existing_element { use crate as dash_sdk_bindings; } + + pub mod grove_insert { use crate as dash_sdk_bindings; } + + pub mod batch_refresh_reference { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query_serialized_or_sum_results { use crate as dash_sdk_bindings; } + + pub mod grove_get_path_query { use crate as dash_sdk_bindings; } + + pub mod batch_replace { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_item { use crate as dash_sdk_bindings; } + + pub mod grove_get_optional_sum_tree_total_value { use crate as dash_sdk_bindings; } + + pub mod grove_has_raw { use crate as dash_sdk_bindings; } + + pub mod batch_move { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod grove_apply_batch_with_add_costs { use crate as dash_sdk_bindings; } + + pub mod grove_insert_empty_tree { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_optional { use crate as dash_sdk_bindings; } + + pub mod batch_insert_empty_tree_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod grove_get_raw_path_query { use crate as dash_sdk_bindings; } + + pub mod grove_apply_partial_batch_with_add_costs { use crate as dash_sdk_bindings; } + + pub mod grove_get { use crate as dash_sdk_bindings; } + + pub mod grove_get_proved_path_query_with_conditional { use crate as dash_sdk_bindings; } + + pub mod batch_insert_if_not_exists { use crate as dash_sdk_bindings; } + + pub mod grove_apply_operation { use crate as dash_sdk_bindings; } + + pub mod batch_delete_items_in_path_query { + use crate as dash_sdk_bindings; + + pub mod v0 { use crate as dash_sdk_bindings; } + } + + pub mod grove_get_raw_path_query_with_optional { use crate as dash_sdk_bindings; } + + pub mod grove_insert_empty_sum_tree { use crate as dash_sdk_bindings; } + } + + #[cfg(any(test, feature = "server", feature = "fixtures-and-mocks"))] + pub mod test_helpers { + use crate as dash_sdk_bindings; + + #[cfg(any(test, feature = "fixtures-and-mocks"))] + pub mod test_utils { + use crate as dash_sdk_bindings; + } + } + + #[cfg(any(feature = "server", feature = "verify"))] + pub mod common { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "server")] + pub mod operations { + use crate as dash_sdk_bindings; + + pub mod apply_batch_grovedb_operations { use crate as dash_sdk_bindings; } + + pub mod rollback_transaction { use crate as dash_sdk_bindings; } + + pub mod apply_partial_batch_grovedb_operations { use crate as dash_sdk_bindings; } + + pub mod drop_cache { use crate as dash_sdk_bindings; } + + pub mod apply_batch_low_level_drive_operations { use crate as dash_sdk_bindings; } + + pub mod apply_partial_batch_low_level_drive_operations { use crate as dash_sdk_bindings; } + + pub mod commit_transaction { use crate as dash_sdk_bindings; } + } + } + } + + pub mod platform_value { + use crate as dash_sdk_bindings; + + pub mod value_map { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`ValueMap`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_value_map_ValueMap(*mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value); + + impl ferment::FFIConversionFrom for platform_value_value_map_ValueMap { + unsafe fn ffi_from_const(ffi: *const platform_value_value_map_ValueMap) -> platform_value::value_map::ValueMap { + let ffi_ref = &*ffi; + >>::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for platform_value_value_map_ValueMap { unsafe fn ffi_to_const(obj: platform_value::value_map::ValueMap) -> *const platform_value_value_map_ValueMap { ferment::boxed(platform_value_value_map_ValueMap(>>::ffi_to(obj))) } } + + impl Drop for platform_value_value_map_ValueMap { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_ctor<>(o_0: *mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value) -> *mut platform_value_value_map_ValueMap { ferment::boxed(platform_value_value_map_ValueMap(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_destroy<>(ffi: *mut platform_value_value_map_ValueMap) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_get_0<>(obj: *const platform_value_value_map_ValueMap) -> *mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_value_map_ValueMap_set_0<>(obj: *const platform_value_value_map_ValueMap) -> *mut crate::fermented::generics::Vec_Tuple_platform_value_Value_platform_value_Value { (*obj).0 } + } + + #[doc = "FFI-representation of the [`Hash256`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_Hash256(*mut crate::fermented::generics::Arr_u8_32); + + impl ferment::FFIConversionFrom for platform_value_Hash256 { + unsafe fn ffi_from_const(ffi: *const platform_value_Hash256) -> platform_value::Hash256 { + let ffi_ref = &*ffi; + >::ffi_from(ffi_ref.0) + } + } + + impl ferment::FFIConversionTo for platform_value_Hash256 { unsafe fn ffi_to_const(obj: platform_value::Hash256) -> *const platform_value_Hash256 { ferment::boxed(platform_value_Hash256(>::ffi_to(obj))) } } + + impl Drop for platform_value_Hash256 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_ctor<>(o_0: *mut crate::fermented::generics::Arr_u8_32) -> *mut platform_value_Hash256 { ferment::boxed(platform_value_Hash256(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_destroy<>(ffi: *mut platform_value_Hash256) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_get_0<>(obj: *const platform_value_Hash256) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Hash256_set_0<>(obj: *const platform_value_Hash256) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Value`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_value_Value { U128(*mut [u8; 16]), I128(*mut [u8; 16]), U64(u64), I64(i64), U32(u32), I32(i32), U16(u16), I16(i16), U8(u8), I8(i8), Bytes(*mut crate::fermented::generics::Vec_u8), Bytes20(*mut crate::fermented::generics::Arr_u8_20), Bytes32(*mut crate::fermented::generics::Arr_u8_32), Bytes36(*mut crate::fermented::generics::Arr_u8_36), EnumU8(*mut crate::fermented::generics::Vec_u8), EnumString(*mut crate::fermented::generics::Vec_String), Identifier(*mut crate::fermented::types::platform_value::platform_value_Hash256), Float(f64), Text(*mut std::os::raw::c_char), Bool(bool), Null, Array(*mut crate::fermented::generics::Vec_platform_value_Value), Map(*mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap) } + + impl ferment::FFIConversionFrom for platform_value_Value { + unsafe fn ffi_from_const(ffi: *const platform_value_Value) -> platform_value::Value { + let ffi_ref = &*ffi; + match ffi_ref { + platform_value_Value::U128(o_0) => platform_value::Value::U128(<[u8; 16] as ferment::FFIConversionFrom>::ffi_from(*o_0)), + platform_value_Value::I128(o_0) => platform_value::Value::I128(<[u8; 16] as ferment::FFIConversionFrom>::ffi_from(*o_0)), + platform_value_Value::U64(o_0) => platform_value::Value::U64(*o_0), + platform_value_Value::I64(o_0) => platform_value::Value::I64(*o_0), + platform_value_Value::U32(o_0) => platform_value::Value::U32(*o_0), + platform_value_Value::I32(o_0) => platform_value::Value::I32(*o_0), + platform_value_Value::U16(o_0) => platform_value::Value::U16(*o_0), + platform_value_Value::I16(o_0) => platform_value::Value::I16(*o_0), + platform_value_Value::U8(o_0) => platform_value::Value::U8(*o_0), + platform_value_Value::I8(o_0) => platform_value::Value::I8(*o_0), + platform_value_Value::Bytes(o_0) => platform_value::Value::Bytes(>>::ffi_from(*o_0)), + platform_value_Value::Bytes20(o_0) => platform_value::Value::Bytes20(>::ffi_from(*o_0)), + platform_value_Value::Bytes32(o_0) => platform_value::Value::Bytes32(>::ffi_from(*o_0)), + platform_value_Value::Bytes36(o_0) => platform_value::Value::Bytes36(>::ffi_from(*o_0)), + platform_value_Value::EnumU8(o_0) => platform_value::Value::EnumU8(>>::ffi_from(*o_0)), + platform_value_Value::EnumString(o_0) => platform_value::Value::EnumString(>>::ffi_from(*o_0)), + platform_value_Value::Identifier(o_0) => platform_value::Value::Identifier(>::ffi_from(*o_0)), + platform_value_Value::Float(o_0) => platform_value::Value::Float(*o_0), + platform_value_Value::Text(o_0) => platform_value::Value::Text(>::ffi_from(*o_0)), + platform_value_Value::Bool(o_0) => platform_value::Value::Bool(*o_0), + platform_value_Value::Null => platform_value::Value::Null, + platform_value_Value::Array(o_0) => platform_value::Value::Array(>>::ffi_from(*o_0)), + platform_value_Value::Map(o_0) => platform_value::Value::Map(>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_value_Value { + unsafe fn ffi_to_const(obj: platform_value::Value) -> *const platform_value_Value { + ferment::boxed(match obj { + platform_value::Value::U128(o_0) => platform_value_Value::U128(<[u8; 16] as ferment::FFIConversionTo>::ffi_to(o_0)), + platform_value::Value::I128(o_0) => platform_value_Value::I128(<[u8; 16] as ferment::FFIConversionTo>::ffi_to(o_0)), + platform_value::Value::U64(o_0) => platform_value_Value::U64(o_0), + platform_value::Value::I64(o_0) => platform_value_Value::I64(o_0), + platform_value::Value::U32(o_0) => platform_value_Value::U32(o_0), + platform_value::Value::I32(o_0) => platform_value_Value::I32(o_0), + platform_value::Value::U16(o_0) => platform_value_Value::U16(o_0), + platform_value::Value::I16(o_0) => platform_value_Value::I16(o_0), + platform_value::Value::U8(o_0) => platform_value_Value::U8(o_0), + platform_value::Value::I8(o_0) => platform_value_Value::I8(o_0), + platform_value::Value::Bytes(o_0) => platform_value_Value::Bytes(>>::ffi_to(o_0)), + platform_value::Value::Bytes20(o_0) => platform_value_Value::Bytes20(>::ffi_to(o_0)), + platform_value::Value::Bytes32(o_0) => platform_value_Value::Bytes32(>::ffi_to(o_0)), + platform_value::Value::Bytes36(o_0) => platform_value_Value::Bytes36(>::ffi_to(o_0)), + platform_value::Value::EnumU8(o_0) => platform_value_Value::EnumU8(>>::ffi_to(o_0)), + platform_value::Value::EnumString(o_0) => platform_value_Value::EnumString(>>::ffi_to(o_0)), + platform_value::Value::Identifier(o_0) => platform_value_Value::Identifier(>::ffi_to(o_0)), + platform_value::Value::Float(o_0) => platform_value_Value::Float(o_0), + platform_value::Value::Text(o_0) => platform_value_Value::Text(>::ffi_to(o_0)), + platform_value::Value::Bool(o_0) => platform_value_Value::Bool(o_0), + platform_value::Value::Null => platform_value_Value::Null, + platform_value::Value::Array(o_0) => platform_value_Value::Array(>>::ffi_to(o_0)), + platform_value::Value::Map(o_0) => platform_value_Value::Map(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_value_Value { + fn drop(&mut self) { + unsafe { + match self { + platform_value_Value::U128(o_0) => { ferment::unbox_any_opt(*o_0); } + platform_value_Value::I128(o_0) => { ferment::unbox_any_opt(*o_0); } + platform_value_Value::U64(o_0) => { ; } + platform_value_Value::I64(o_0) => { ; } + platform_value_Value::U32(o_0) => { ; } + platform_value_Value::I32(o_0) => { ; } + platform_value_Value::U16(o_0) => { ; } + platform_value_Value::I16(o_0) => { ; } + platform_value_Value::U8(o_0) => { ; } + platform_value_Value::I8(o_0) => { ; } + platform_value_Value::Bytes(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Bytes20(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Bytes32(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Bytes36(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::EnumU8(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::EnumString(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Identifier(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Float(o_0) => { ; } + platform_value_Value::Text(o_0) => { ferment::unbox_string(*o_0); } + platform_value_Value::Bool(o_0) => { ; } + platform_value_Value::Null => {} + platform_value_Value::Array(o_0) => { ferment::unbox_any(*o_0); } + platform_value_Value::Map(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U128_ctor(o_o_0: *mut [u8; 16]) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U128(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I128_ctor(o_o_0: *mut [u8; 16]) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I128(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U64_ctor(o_o_0: u64) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U64(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I64_ctor(o_o_0: i64) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I64(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U32_ctor(o_o_0: u32) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U32(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I32_ctor(o_o_0: i32) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I32(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U16_ctor(o_o_0: u16) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U16(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I16_ctor(o_o_0: i16) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I16(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_U8_ctor(o_o_0: u8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::U8(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_I8_ctor(o_o_0: i8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::I8(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes20_ctor(o_o_0: *mut crate::fermented::generics::Arr_u8_20) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes20(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes32_ctor(o_o_0: *mut crate::fermented::generics::Arr_u8_32) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes32(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bytes36_ctor(o_o_0: *mut crate::fermented::generics::Arr_u8_36) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bytes36(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_EnumU8_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::EnumU8(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_EnumString_ctor(o_o_0: *mut crate::fermented::generics::Vec_String) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::EnumString(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Identifier_ctor(o_o_0: *mut crate::fermented::types::platform_value::platform_value_Hash256) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Identifier(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Float_ctor(o_o_0: f64) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Float(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Text_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Text(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Bool_ctor(o_o_0: bool) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Bool(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Null_ctor() -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Null {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Array_ctor(o_o_0: *mut crate::fermented::generics::Vec_platform_value_Value) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Array(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_Map_ctor(o_o_0: *mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap) -> *mut platform_value_Value { ferment::boxed(platform_value_Value::Map(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_Value_destroy<>(ffi: *mut platform_value_Value) { ferment::unbox_any(ffi); } + + pub mod index { use crate as dash_sdk_bindings; } + + pub mod value_serialization { use crate as dash_sdk_bindings; } + + pub mod converter { + use crate as dash_sdk_bindings; + + #[cfg(feature = "json")] + pub mod serde_json { + use crate as dash_sdk_bindings; + } + } + + pub mod btreemap_extensions { use crate as dash_sdk_bindings; } + + pub mod macros { use crate as dash_sdk_bindings; } + + pub mod patch { + use crate as dash_sdk_bindings; + + pub mod diff { use crate as dash_sdk_bindings; } + } + + pub mod inner_value_at_path { + use crate as dash_sdk_bindings; + + #[cfg(test)] + pub mod tests { + use crate as dash_sdk_bindings; + } + } + + pub mod error { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`Error`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_value_error_Error { Unsupported(*mut std::os::raw::c_char), StructureError(*mut std::os::raw::c_char), PathError(*mut std::os::raw::c_char), IntegerSizeError, IntegerParsingError, StringDecodingError(*mut std::os::raw::c_char), KeyMustBeAString, ByteLengthNot20BytesError(*mut std::os::raw::c_char), ByteLengthNot32BytesError(*mut std::os::raw::c_char), ByteLengthNot36BytesError(*mut std::os::raw::c_char), SerdeSerializationError(*mut std::os::raw::c_char), SerdeDeserializationError(*mut std::os::raw::c_char), CborSerializationError(*mut std::os::raw::c_char) } + + impl ferment::FFIConversionFrom for platform_value_error_Error { + unsafe fn ffi_from_const(ffi: *const platform_value_error_Error) -> platform_value::error::Error { + let ffi_ref = &*ffi; + match ffi_ref { + platform_value_error_Error::Unsupported(o_0) => platform_value::error::Error::Unsupported(>::ffi_from(*o_0)), + platform_value_error_Error::StructureError(o_0) => platform_value::error::Error::StructureError(>::ffi_from(*o_0)), + platform_value_error_Error::PathError(o_0) => platform_value::error::Error::PathError(>::ffi_from(*o_0)), + platform_value_error_Error::IntegerSizeError => platform_value::error::Error::IntegerSizeError, + platform_value_error_Error::IntegerParsingError => platform_value::error::Error::IntegerParsingError, + platform_value_error_Error::StringDecodingError(o_0) => platform_value::error::Error::StringDecodingError(>::ffi_from(*o_0)), + platform_value_error_Error::KeyMustBeAString => platform_value::error::Error::KeyMustBeAString, + platform_value_error_Error::ByteLengthNot20BytesError(o_0) => platform_value::error::Error::ByteLengthNot20BytesError(>::ffi_from(*o_0)), + platform_value_error_Error::ByteLengthNot32BytesError(o_0) => platform_value::error::Error::ByteLengthNot32BytesError(>::ffi_from(*o_0)), + platform_value_error_Error::ByteLengthNot36BytesError(o_0) => platform_value::error::Error::ByteLengthNot36BytesError(>::ffi_from(*o_0)), + platform_value_error_Error::SerdeSerializationError(o_0) => platform_value::error::Error::SerdeSerializationError(>::ffi_from(*o_0)), + platform_value_error_Error::SerdeDeserializationError(o_0) => platform_value::error::Error::SerdeDeserializationError(>::ffi_from(*o_0)), + platform_value_error_Error::CborSerializationError(o_0) => platform_value::error::Error::CborSerializationError(>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_value_error_Error { + unsafe fn ffi_to_const(obj: platform_value::error::Error) -> *const platform_value_error_Error { + ferment::boxed(match obj { + platform_value::error::Error::Unsupported(o_0) => platform_value_error_Error::Unsupported(>::ffi_to(o_0)), + platform_value::error::Error::StructureError(o_0) => platform_value_error_Error::StructureError(>::ffi_to(o_0)), + platform_value::error::Error::PathError(o_0) => platform_value_error_Error::PathError(>::ffi_to(o_0)), + platform_value::error::Error::IntegerSizeError => platform_value_error_Error::IntegerSizeError, + platform_value::error::Error::IntegerParsingError => platform_value_error_Error::IntegerParsingError, + platform_value::error::Error::StringDecodingError(o_0) => platform_value_error_Error::StringDecodingError(>::ffi_to(o_0)), + platform_value::error::Error::KeyMustBeAString => platform_value_error_Error::KeyMustBeAString, + platform_value::error::Error::ByteLengthNot20BytesError(o_0) => platform_value_error_Error::ByteLengthNot20BytesError(>::ffi_to(o_0)), + platform_value::error::Error::ByteLengthNot32BytesError(o_0) => platform_value_error_Error::ByteLengthNot32BytesError(>::ffi_to(o_0)), + platform_value::error::Error::ByteLengthNot36BytesError(o_0) => platform_value_error_Error::ByteLengthNot36BytesError(>::ffi_to(o_0)), + platform_value::error::Error::SerdeSerializationError(o_0) => platform_value_error_Error::SerdeSerializationError(>::ffi_to(o_0)), + platform_value::error::Error::SerdeDeserializationError(o_0) => platform_value_error_Error::SerdeDeserializationError(>::ffi_to(o_0)), + platform_value::error::Error::CborSerializationError(o_0) => platform_value_error_Error::CborSerializationError(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_value_error_Error { + fn drop(&mut self) { + unsafe { + match self { + platform_value_error_Error::Unsupported(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::StructureError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::PathError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::IntegerSizeError => {} + platform_value_error_Error::IntegerParsingError => {} + platform_value_error_Error::StringDecodingError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::KeyMustBeAString => {} + platform_value_error_Error::ByteLengthNot20BytesError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::ByteLengthNot32BytesError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::ByteLengthNot36BytesError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::SerdeSerializationError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::SerdeDeserializationError(o_0) => { ferment::unbox_string(*o_0); } + platform_value_error_Error::CborSerializationError(o_0) => { ferment::unbox_string(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_Unsupported_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::Unsupported(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_StructureError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::StructureError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_PathError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::PathError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_IntegerSizeError_ctor() -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::IntegerSizeError {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_IntegerParsingError_ctor() -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::IntegerParsingError {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_StringDecodingError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::StringDecodingError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_KeyMustBeAString_ctor() -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::KeyMustBeAString {}) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_ByteLengthNot20BytesError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::ByteLengthNot20BytesError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_ByteLengthNot32BytesError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::ByteLengthNot32BytesError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_ByteLengthNot36BytesError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::ByteLengthNot36BytesError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_SerdeSerializationError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::SerdeSerializationError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_SerdeDeserializationError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::SerdeDeserializationError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_CborSerializationError_ctor(o_o_0: *mut std::os::raw::c_char) -> *mut platform_value_error_Error { ferment::boxed(platform_value_error_Error::CborSerializationError(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_error_Error_destroy<>(ffi: *mut platform_value_error_Error) { ferment::unbox_any(ffi); } + } + + pub mod types { + use crate as dash_sdk_bindings; + + pub mod identifier { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`IdentifierBytes32`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_types_identifier_IdentifierBytes32(*mut crate::fermented::generics::Arr_u8_32); + + impl ferment::FFIConversionFrom for platform_value_types_identifier_IdentifierBytes32 { + unsafe fn ffi_from_const(ffi: *const platform_value_types_identifier_IdentifierBytes32) -> platform_value::types::identifier::IdentifierBytes32 { + let ffi_ref = &*ffi; + platform_value::types::identifier::IdentifierBytes32(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for platform_value_types_identifier_IdentifierBytes32 { unsafe fn ffi_to_const(obj: platform_value::types::identifier::IdentifierBytes32) -> *const platform_value_types_identifier_IdentifierBytes32 { ferment::boxed(platform_value_types_identifier_IdentifierBytes32(>::ffi_to(obj.0))) } } + + impl Drop for platform_value_types_identifier_IdentifierBytes32 { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_ctor<>(o_0: *mut crate::fermented::generics::Arr_u8_32) -> *mut platform_value_types_identifier_IdentifierBytes32 { ferment::boxed(platform_value_types_identifier_IdentifierBytes32(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_destroy<>(ffi: *mut platform_value_types_identifier_IdentifierBytes32) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_get_0<>(obj: *const platform_value_types_identifier_IdentifierBytes32) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_IdentifierBytes32_set_0<>(obj: *const platform_value_types_identifier_IdentifierBytes32) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).0 } + + #[doc = "FFI-representation of the [`Identifier`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_types_identifier_Identifier(*mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32); + + impl ferment::FFIConversionFrom for platform_value_types_identifier_Identifier { + unsafe fn ffi_from_const(ffi: *const platform_value_types_identifier_Identifier) -> platform_value::types::identifier::Identifier { + let ffi_ref = &*ffi; + platform_value::types::identifier::Identifier(>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for platform_value_types_identifier_Identifier { unsafe fn ffi_to_const(obj: platform_value::types::identifier::Identifier) -> *const platform_value_types_identifier_Identifier { ferment::boxed(platform_value_types_identifier_Identifier(>::ffi_to(obj.0))) } } + + impl Drop for platform_value_types_identifier_Identifier { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_ctor<>(o_0: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32) -> *mut platform_value_types_identifier_Identifier { ferment::boxed(platform_value_types_identifier_Identifier(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_destroy<>(ffi: *mut platform_value_types_identifier_Identifier) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_get_0<>(obj: *const platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_identifier_Identifier_set_0<>(obj: *const platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_IdentifierBytes32 { (*obj).0 } + } + + pub mod binary_data { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`BinaryData`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_value_types_binary_data_BinaryData(*mut crate::fermented::generics::Vec_u8); + + impl ferment::FFIConversionFrom for platform_value_types_binary_data_BinaryData { + unsafe fn ffi_from_const(ffi: *const platform_value_types_binary_data_BinaryData) -> platform_value::types::binary_data::BinaryData { + let ffi_ref = &*ffi; + platform_value::types::binary_data::BinaryData(>>::ffi_from(ffi_ref.0)) + } + } + + impl ferment::FFIConversionTo for platform_value_types_binary_data_BinaryData { unsafe fn ffi_to_const(obj: platform_value::types::binary_data::BinaryData) -> *const platform_value_types_binary_data_BinaryData { ferment::boxed(platform_value_types_binary_data_BinaryData(>>::ffi_to(obj.0))) } } + + impl Drop for platform_value_types_binary_data_BinaryData { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.0); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_ctor<>(o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_value_types_binary_data_BinaryData { ferment::boxed(platform_value_types_binary_data_BinaryData(o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_destroy<>(ffi: *mut platform_value_types_binary_data_BinaryData) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_get_0<>(obj: *const platform_value_types_binary_data_BinaryData) -> *mut crate::fermented::generics::Vec_u8 { (*obj).0 } + + #[no_mangle] + pub unsafe extern "C" fn platform_value_types_binary_data_BinaryData_set_0<>(obj: *const platform_value_types_binary_data_BinaryData) -> *mut crate::fermented::generics::Vec_u8 { (*obj).0 } + } + } + } + + pub mod platform_mobile { + use crate as dash_sdk_bindings; + + pub mod core { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::core::get_transaction_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_core_get_transaction_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, txid: *mut crate::fermented::generics::Arr_u8_32) -> *mut crate::fermented::generics::Result_ok_Vec_u8_err_String { + let obj = platform_mobile::core::get_transaction_sdk(rust_sdk, >::ffi_from(txid)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::core::get_transaction`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_core_get_transaction(txid: *mut crate::fermented::generics::Arr_u8_32, quorum_public_key_callback: u64, data_contract_callback: u64) -> *mut crate::fermented::generics::Result_ok_Vec_u8_err_String { + let obj = platform_mobile::core::get_transaction(>::ffi_from(txid), quorum_public_key_callback, data_contract_callback); + , String>>>::ffi_to(obj) + } + } + + pub mod data_contracts { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::data_contracts::DataContractFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_clone(value: *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI { + let obj = platform_mobile::data_contracts::DataContractFFI_clone(>::ffi_from(value)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`DataContractFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_data_contracts_DataContractFFI { + pub id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub doc_types: *mut crate::fermented::generics::Vec_String, + pub version: u32, + } + + impl ferment::FFIConversionFrom for platform_mobile_data_contracts_DataContractFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_data_contracts_DataContractFFI) -> platform_mobile::data_contracts::DataContractFFI { + let ffi_ref = &*ffi; + platform_mobile::data_contracts::DataContractFFI { id: >::ffi_from(ffi_ref.id), owner_id: >::ffi_from(ffi_ref.owner_id), doc_types: >>::ffi_from(ffi_ref.doc_types), version: ffi_ref.version } + } + } + + impl ferment::FFIConversionTo for platform_mobile_data_contracts_DataContractFFI { unsafe fn ffi_to_const(obj: platform_mobile::data_contracts::DataContractFFI) -> *const platform_mobile_data_contracts_DataContractFFI { ferment::boxed(platform_mobile_data_contracts_DataContractFFI { id: >::ffi_to(obj.id), owner_id: >::ffi_to(obj.owner_id), doc_types: >>::ffi_to(obj.doc_types), version: obj.version }) } } + + impl Drop for platform_mobile_data_contracts_DataContractFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.id); + ferment::unbox_any(ffi_ref.owner_id); + ferment::unbox_any(ffi_ref.doc_types); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_ctor<>(id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, owner_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, doc_types: *mut crate::fermented::generics::Vec_String, version: u32) -> *mut platform_mobile_data_contracts_DataContractFFI { ferment::boxed(platform_mobile_data_contracts_DataContractFFI { id, owner_id, doc_types, version }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_destroy<>(ffi: *mut platform_mobile_data_contracts_DataContractFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_owner_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_doc_types<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::generics::Vec_String { (*obj).doc_types } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_get_version<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> u32 { (*obj).version } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_owner_id<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { (*obj).owner_id } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_doc_types<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> *mut crate::fermented::generics::Vec_String { (*obj).doc_types } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_DataContractFFI_set_version<>(obj: *const platform_mobile_data_contracts_DataContractFFI) -> u32 { (*obj).version } + + #[doc = "FFI-representation of the [`platform_mobile::data_contracts::fetch_data_contract`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_data_contracts_fetch_data_contract(rust_sdk: *mut platform_mobile::sdk::DashSdk, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + let obj = platform_mobile::data_contracts::fetch_data_contract(rust_sdk, >::ffi_from(data_contract_id)); + , String>>>::ffi_to(obj) + } + } + + pub mod clone { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContestedResources_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContestedResources_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources { + let obj = platform_mobile::clone::ContestedResources_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Vote_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Vote_clone(o: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote) -> *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote { + let obj = platform_mobile::clone::Vote_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone(o: *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + let obj = platform_mobile::clone::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_clone()>>::ffi_from(o)); + )>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Revision_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Revision_clone(revision: *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_Revision { + let obj = platform_mobile::clone::Revision_clone(>::ffi_from(revision)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVotesByIdentity_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVotesByIdentity_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity { + let obj = platform_mobile::clone::ResourceVotesByIdentity_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::TimestampMillis_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_TimestampMillis_clone(time: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis { + let obj = platform_mobile::clone::TimestampMillis_clone(>::ffi_from(time)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVoteChoice_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVoteChoice_clone(o: *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice) -> *mut crate::fermented::types::dpp::voting::vote_choices::resource_vote_choice::dpp_voting_vote_choices_resource_vote_choice_ResourceVoteChoice { + let obj = platform_mobile::clone::ResourceVoteChoice_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Arr_u8_32_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Arr_u8_32_clone(slice: *mut crate::fermented::generics::Arr_u8_32) -> *mut crate::fermented::generics::Arr_u8_32 { + let obj = platform_mobile::clone::Arr_u8_32_clone(>::ffi_from(slice)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Voters_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Voters_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voters) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voters { + let obj = platform_mobile::clone::Voters_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContestedDocumentResourceVotePoll_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContestedDocumentResourceVotePoll_clone(o: *mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll) -> *mut crate::fermented::types::dpp::voting::vote_polls::contested_document_resource_vote_poll::dpp_voting_vote_polls_contested_document_resource_vote_poll_ContestedDocumentResourceVotePoll { + let obj = platform_mobile::clone::ContestedDocumentResourceVotePoll_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::std_collections_Map_keys_String_values_platform_value_Value_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_std_collections_Map_keys_String_values_platform_value_Value_clone(map: *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value) -> *mut crate::fermented::generics::std_collections_Map_keys_String_values_platform_value_Value { + let obj = platform_mobile::clone::std_collections_Map_keys_String_values_platform_value_Value_clone(>>::ffi_from(map)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Value_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Value_clone(value: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut crate::fermented::types::platform_value::platform_value_Value { + let obj = platform_mobile::clone::Value_clone(>::ffi_from(value)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContenderWithSerializedDocument_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContenderWithSerializedDocument_clone(o: *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + let obj = platform_mobile::clone::ContenderWithSerializedDocument_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVote_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVote_clone(o: *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) -> *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote { + let obj = platform_mobile::clone::ResourceVote_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::prelude_TimestampMillis_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_prelude_TimestampMillis_clone(time: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis { + let obj = platform_mobile::clone::prelude_TimestampMillis_clone(>::ffi_from(time)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::WhereOperator_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_WhereOperator_clone(o: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereOperator { + let obj = platform_mobile::clone::WhereOperator_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(o: *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter) -> *mut crate::fermented::generics::std_collections_BTreeSet_drive_proof_verifier_types_Voter { + let obj = platform_mobile::clone::std_collections_BTreeSet_drive_proof_verifier_types_Voter_clone(>>::ffi_from(o)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::VotePollsGroupedByTimestamp_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_VotePollsGroupedByTimestamp_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp { + let obj = platform_mobile::clone::VotePollsGroupedByTimestamp_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::CoreBlockHeight_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_CoreBlockHeight_clone(height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight { + let obj = platform_mobile::clone::CoreBlockHeight_clone(>::ffi_from(height)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Document_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Document_clone(document: *mut crate::fermented::types::dpp::document::dpp_document_Document) -> *mut crate::fermented::types::dpp::document::dpp_document_Document { + let obj = platform_mobile::clone::Document_clone(>::ffi_from(document)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ValueMap_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ValueMap_clone(value_map: *mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap) -> *mut crate::fermented::types::platform_value::value_map::platform_value_value_map_ValueMap { + let obj = platform_mobile::clone::ValueMap_clone(>::ffi_from(value_map)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::DocumentV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_DocumentV0_clone(document: *mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0) -> *mut crate::fermented::types::dpp::document::v0::dpp_document_v0_DocumentV0 { + let obj = platform_mobile::clone::DocumentV0_clone(>::ffi_from(document)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::KeyID_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_KeyID_clone(id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID { + let obj = platform_mobile::clone::KeyID_clone(>::ffi_from(id)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Arr_u8_36_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Arr_u8_36_clone(slice: *mut crate::fermented::generics::Arr_u8_36) -> *mut crate::fermented::generics::Arr_u8_36 { + let obj = platform_mobile::clone::Arr_u8_36_clone(>::ffi_from(slice)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Arr_u8_20_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Arr_u8_20_clone(slice: *mut crate::fermented::generics::Arr_u8_20) -> *mut crate::fermented::generics::Arr_u8_20 { + let obj = platform_mobile::clone::Arr_u8_20_clone(>::ffi_from(slice)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Contenders_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Contenders_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders { + let obj = platform_mobile::clone::Contenders_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Vec_u8_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Vec_u8_clone(vec: *mut crate::fermented::generics::Vec_u8) -> *mut crate::fermented::generics::Vec_u8 { + let obj = platform_mobile::clone::Vec_u8_clone(>>::ffi_from(vec)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::BlockHeight_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_BlockHeight_clone(height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight) -> *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight { + let obj = platform_mobile::clone::BlockHeight_clone(>::ffi_from(height)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContenderWithSerializedDocumentV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContenderWithSerializedDocumentV0_clone(o: *mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0) -> *mut crate::fermented::types::dpp::voting::contender_structs::contender::v0::dpp_voting_contender_structs_contender_v0_ContenderWithSerializedDocumentV0 { + let obj = platform_mobile::clone::ContenderWithSerializedDocumentV0_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ResourceVoteV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ResourceVoteV0_clone(o: *mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0) -> *mut crate::fermented::types::dpp::voting::votes::resource_vote::v0::dpp_voting_votes_resource_vote_v0_ResourceVoteV0 { + let obj = platform_mobile::clone::ResourceVoteV0_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Vec_Value_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Vec_Value_clone(value_vec: *mut crate::fermented::generics::Vec_platform_value_Value) -> *mut crate::fermented::generics::Vec_platform_value_Value { + let obj = platform_mobile::clone::Vec_Value_clone(>>::ffi_from(value_vec)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::VotePoll_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_VotePoll_clone(o: *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll) -> *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll { + let obj = platform_mobile::clone::VotePoll_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Voter_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Voter_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter { + let obj = platform_mobile::clone::Voter_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::OrderClause_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_OrderClause_clone(o: *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause) -> *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause { + let obj = platform_mobile::clone::OrderClause_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::ContestedResource_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_ContestedResource_clone(o: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource) -> *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource { + let obj = platform_mobile::clone::ContestedResource_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::WhereClause_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_WhereClause_clone(o: *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause) -> *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause { + let obj = platform_mobile::clone::WhereClause_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::clone::Hash256_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_clone_Hash256_clone(o: *mut crate::fermented::types::platform_value::platform_value_Hash256) -> *mut crate::fermented::types::platform_value::platform_value_Hash256 { + let obj = platform_mobile::clone::Hash256_clone(>::ffi_from(o)); + >::ffi_to(obj) + } + } + + pub mod operators { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::operators::Value_hash`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_operators_Value_hash(a: *mut crate::fermented::types::platform_value::platform_value_Value) -> i32 { + let obj = platform_mobile::operators::Value_hash(>::ffi_from(a)); + obj + } + + #[doc = "FFI-representation of the [`platform_mobile::operators::Value_eq`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_operators_Value_eq(a: *mut crate::fermented::types::platform_value::platform_value_Value, b: *mut crate::fermented::types::platform_value::platform_value_Value) -> bool { + let obj = platform_mobile::operators::Value_eq(>::ffi_from(a), >::ffi_from(b)); + obj + } + } + + pub mod identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::identity::IdentityPublicKey_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_IdentityPublicKey_clone(identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey) -> *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey { + let obj = platform_mobile::identity::IdentityPublicKey_clone(>::ffi_from(identity_public_key)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(public_keys: *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey) -> *mut crate::fermented::generics::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + let obj = platform_mobile::identity::std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_clone(>>::ffi_from(public_keys)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::Identity_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_Identity_clone(identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::Identity_clone(>::ffi_from(identity)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::create_basic_identity`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_create_basic_identity(id: *mut crate::fermented::generics::Arr_u8_32) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::create_basic_identity(>::ffi_from(id)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::Identifier_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_Identifier_clone(identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier { + let obj = platform_mobile::identity::Identifier_clone(>::ffi_from(identifier)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::IdentityV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_IdentityV0_clone(identity: *mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0) -> *mut crate::fermented::types::dpp::identity::v0::dpp_identity_v0_IdentityV0 { + let obj = platform_mobile::identity::IdentityV0_clone(>::ffi_from(identity)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::IdentityPublicKeyV0_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_IdentityPublicKeyV0_clone(identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0) -> *mut crate::fermented::types::dpp::identity::identity_public_key::v0::dpp_identity_identity_public_key_v0_IdentityPublicKeyV0 { + let obj = platform_mobile::identity::IdentityPublicKeyV0_clone(>::ffi_from(identity_public_key)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::get_identity_contract_bounds`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_get_identity_contract_bounds(identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, contract_identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::get_identity_contract_bounds(>::ffi_from(identifier), >::ffi_from_opt(contract_identifier)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::identity::get_identity2`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_identity_get_identity2(identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity { + let obj = platform_mobile::identity::get_identity2(>::ffi_from(identifier)); + >::ffi_to(obj) + } + } + + pub mod sdk { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::sdk::destroy_dash_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_destroy_dash_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk) { + let obj = platform_mobile::sdk::destroy_dash_sdk(rust_sdk); + ; + } + + #[doc = "FFI-representation of the [`platform_mobile::sdk::create_dash_sdk_with_context`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_create_dash_sdk_with_context(context_provider_context: usize, quorum_public_key_callback: u64, data_contract_callback: u64, is_testnet: bool, connect_timeout: usize, timeout: usize, retries: usize) -> *mut platform_mobile::sdk::DashSdk { + let obj = platform_mobile::sdk::create_dash_sdk_with_context(context_provider_context, quorum_public_key_callback, data_contract_callback, is_testnet, connect_timeout, timeout, retries); + ferment::boxed(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::sdk::create_dash_sdk_using_single_evonode`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_create_dash_sdk_using_single_evonode(evonode: *mut std::os::raw::c_char, quorum_public_key_callback: u64, data_contract_callback: u64, is_testnet: bool) -> *mut platform_mobile::sdk::DashSdk { + let obj = platform_mobile::sdk::create_dash_sdk_using_single_evonode(>::ffi_from(evonode), quorum_public_key_callback, data_contract_callback, is_testnet); + ferment::boxed(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::sdk::create_dash_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_sdk_create_dash_sdk(quorum_public_key_callback: u64, data_contract_callback: u64, is_testnet: bool) -> *mut platform_mobile::sdk::DashSdk { + let obj = platform_mobile::sdk::create_dash_sdk(quorum_public_key_callback, data_contract_callback, is_testnet); + ferment::boxed(obj) + } + } + + pub mod voting { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_vote_contenders`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_vote_contenders(rust_sdk: *mut platform_mobile::sdk::DashSdk, index_name: *mut std::os::raw::c_char, index_values: *mut crate::fermented::generics::Vec_platform_value_Value, document_type_name: *mut std::os::raw::c_char, contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_Contenders_err_String { + let obj = platform_mobile::voting::get_vote_contenders(rust_sdk, >::ffi_from(index_name), >>::ffi_from(index_values), >::ffi_from(document_type_name), >::ffi_from(contract_id)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::put_vote_to_platform`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_put_vote_to_platform(rust_sdk: *mut platform_mobile::sdk::DashSdk, vote: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, voter_pro_tx_hash: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, voting_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_voting_votes_Vote_err_String { + let obj = platform_mobile::voting::put_vote_to_platform(rust_sdk, >::ffi_from(vote), >::ffi_from(voter_pro_tx_hash), >::ffi_from(voting_public_key), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_votes`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_votes(rust_sdk: *mut platform_mobile::sdk::DashSdk, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_Option_dpp_voting_votes_Vote_err_String { + let obj = platform_mobile::voting::get_votes(rust_sdk, >::ffi_from(data_contract_id)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_vote_polls`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_vote_polls(rust_sdk: *mut platform_mobile::sdk::DashSdk, start_time: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, start_time_included: bool, end_time: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_TimestampMillis, end_time_included: bool, limit: u16, offset: u16, order_ascending: bool) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + let obj = platform_mobile::voting::get_vote_polls(rust_sdk, >::ffi_from(start_time), start_time_included, >::ffi_from(end_time), end_time_included, limit, offset, order_ascending); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_last_vote_from_masternode`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_last_vote_from_masternode(rust_sdk: *mut platform_mobile::sdk::DashSdk, masternode_protxhash: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, index_name: *mut std::os::raw::c_char, index_values: *mut crate::fermented::generics::Vec_platform_value_Value, document_type_name: *mut std::os::raw::c_char, contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + let obj = platform_mobile::voting::get_last_vote_from_masternode(rust_sdk, >::ffi_from(masternode_protxhash), >::ffi_from(index_name), >>::ffi_from(index_values), >::ffi_from(document_type_name), >::ffi_from(contract_id)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::voting::get_contested_resources`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_voting_get_contested_resources(rust_sdk: *mut platform_mobile::sdk::DashSdk, document_type_name: *mut std::os::raw::c_char, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, limit: u16, start_at: *mut crate::fermented::types::platform_value::platform_value_Value, start_at_include: bool) -> *mut crate::fermented::generics::Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + let obj = platform_mobile::voting::get_contested_resources(rust_sdk, >::ffi_from(document_type_name), >::ffi_from(data_contract_id), limit, >::ffi_from_opt(start_at), start_at_include); + >>::ffi_to(obj) + } + } + + pub mod put { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`AssetLockProofFFI`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_mobile_put_AssetLockProofFFI { Instant(*mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI), Chain(*mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI) } + + impl ferment::FFIConversionFrom for platform_mobile_put_AssetLockProofFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_AssetLockProofFFI) -> platform_mobile::put::AssetLockProofFFI { + let ffi_ref = &*ffi; + match ffi_ref { + platform_mobile_put_AssetLockProofFFI::Instant(o_0) => platform_mobile::put::AssetLockProofFFI::Instant(>::ffi_from(*o_0)), + platform_mobile_put_AssetLockProofFFI::Chain(o_0) => platform_mobile::put::AssetLockProofFFI::Chain(>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_AssetLockProofFFI { + unsafe fn ffi_to_const(obj: platform_mobile::put::AssetLockProofFFI) -> *const platform_mobile_put_AssetLockProofFFI { + ferment::boxed(match obj { + platform_mobile::put::AssetLockProofFFI::Instant(o_0) => platform_mobile_put_AssetLockProofFFI::Instant(>::ffi_to(o_0)), + platform_mobile::put::AssetLockProofFFI::Chain(o_0) => platform_mobile_put_AssetLockProofFFI::Chain(>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_mobile_put_AssetLockProofFFI { + fn drop(&mut self) { + unsafe { + match self { + platform_mobile_put_AssetLockProofFFI::Instant(o_0) => { ferment::unbox_any(*o_0); } + platform_mobile_put_AssetLockProofFFI::Chain(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_AssetLockProofFFI_Instant_ctor(o_o_0: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI) -> *mut platform_mobile_put_AssetLockProofFFI { ferment::boxed(platform_mobile_put_AssetLockProofFFI::Instant(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_AssetLockProofFFI_Chain_ctor(o_o_0: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI) -> *mut platform_mobile_put_AssetLockProofFFI { ferment::boxed(platform_mobile_put_AssetLockProofFFI::Chain(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_AssetLockProofFFI_destroy<>(ffi: *mut platform_mobile_put_AssetLockProofFFI) { ferment::unbox_any(ffi); } + + #[doc = "FFI-representation of the [`platform_mobile::put::put_document_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_put_document_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, document: *mut crate::fermented::types::dpp::document::dpp_document_Document, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_str: *mut std::os::raw::c_char, identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_document_Document_err_String { + let obj = platform_mobile::put::put_document_sdk(rust_sdk, >::ffi_from(document), >::ffi_from(data_contract_id), >::ffi_from(document_type_str), >::ffi_from(identity_public_key), >::ffi_from(block_height), >::ffi_from(core_block_height), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::replace_document_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_replace_document_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, document: *mut crate::fermented::types::dpp::document::dpp_document_Document, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type_str: *mut std::os::raw::c_char, identity_public_key: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_BlockHeight, core_block_height: *mut crate::fermented::types::dpp::prelude::dpp_prelude_CoreBlockHeight, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_document_Document_err_String { + let obj = platform_mobile::put::replace_document_sdk(rust_sdk, >::ffi_from(document), >::ffi_from(data_contract_id), >::ffi_from(document_type_str), >::ffi_from(identity_public_key), >::ffi_from(block_height), >::ffi_from(core_block_height), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::InstantAssetLockProofFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_clone(a: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_InstantAssetLockProofFFI { + let obj = platform_mobile::put::InstantAssetLockProofFFI_clone(>::ffi_from(a)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::topup_identity_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_topup_identity_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, asset_lock_proof: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_AssetLockProofFFI, asset_lock_proof_private_key: *mut crate::fermented::generics::Vec_u8, is_testnet: bool) -> *mut crate::fermented::generics::Result_ok_u64_err_String { + let obj = platform_mobile::put::topup_identity_sdk(rust_sdk, >::ffi_from(identity), >::ffi_from(asset_lock_proof), >>::ffi_from(asset_lock_proof_private_key), is_testnet); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::put_identity_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_put_identity_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, asset_lock_proof: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_AssetLockProofFFI, asset_lock_proof_private_key: *mut crate::fermented::generics::Vec_u8, signer_context: usize, signer_callback: u64, is_testnet: bool) -> *mut crate::fermented::generics::Result_ok_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::put::put_identity_sdk(rust_sdk, >::ffi_from(identity), >::ffi_from(asset_lock_proof), >>::ffi_from(asset_lock_proof_private_key), signer_context, signer_callback, is_testnet); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`ChainAssetLockProofFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_put_ChainAssetLockProofFFI { + pub core_chain_locked_height: u32, + pub out_point: *mut platform_mobile::custom::OutPoint, + } + + impl ferment::FFIConversionFrom for platform_mobile_put_ChainAssetLockProofFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_ChainAssetLockProofFFI) -> platform_mobile::put::ChainAssetLockProofFFI { + let ffi_ref = &*ffi; + platform_mobile::put::ChainAssetLockProofFFI { core_chain_locked_height: ffi_ref.core_chain_locked_height, out_point: >::ffi_from(ffi_ref.out_point) } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_ChainAssetLockProofFFI { unsafe fn ffi_to_const(obj: platform_mobile::put::ChainAssetLockProofFFI) -> *const platform_mobile_put_ChainAssetLockProofFFI { ferment::boxed(platform_mobile_put_ChainAssetLockProofFFI { core_chain_locked_height: obj.core_chain_locked_height, out_point: >::ffi_to(obj.out_point) }) } } + + impl Drop for platform_mobile_put_ChainAssetLockProofFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ; + ferment::unbox_any(ffi_ref.out_point); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_ctor<>(core_chain_locked_height: u32, out_point: *mut platform_mobile::custom::OutPoint) -> *mut platform_mobile_put_ChainAssetLockProofFFI { ferment::boxed(platform_mobile_put_ChainAssetLockProofFFI { core_chain_locked_height, out_point }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_destroy<>(ffi: *mut platform_mobile_put_ChainAssetLockProofFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_get_core_chain_locked_height<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> u32 { (*obj).core_chain_locked_height } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_get_out_point<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> *mut platform_mobile::custom::OutPoint { (*obj).out_point } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_set_core_chain_locked_height<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> u32 { (*obj).core_chain_locked_height } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_set_out_point<>(obj: *const platform_mobile_put_ChainAssetLockProofFFI) -> *mut platform_mobile::custom::OutPoint { (*obj).out_point } + + #[doc = "FFI-representation of the [`platform_mobile::put::put_identity_update_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_put_identity_update_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identity: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, master_public_key_id: *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, add_public_keys: *mut crate::fermented::generics::Vec_dpp_identity_identity_public_key_IdentityPublicKey, disable_public_keys: *mut crate::fermented::generics::Vec_dpp_identity_identity_public_key_KeyID, signer_context: usize, signer_callback: u64) -> *mut crate::fermented::generics::Result_ok_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::put::put_identity_update_sdk(rust_sdk, >::ffi_from(identity), >::ffi_from(master_public_key_id), >>::ffi_from(add_public_keys), >>::ffi_from(disable_public_keys), signer_context, signer_callback); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::ChainAssetLockProofFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_ChainAssetLockProofFFI_clone(a: *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI) -> *mut crate::fermented::types::platform_mobile::put::platform_mobile_put_ChainAssetLockProofFFI { + let obj = platform_mobile::put::ChainAssetLockProofFFI_clone(>::ffi_from(a)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::put::OutPointFFI_clone`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_clone(a: *mut platform_mobile::custom::OutPoint) -> *mut platform_mobile::custom::OutPoint { + let obj = platform_mobile::put::OutPointFFI_clone(>::ffi_from(a)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`OutPointFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_put_OutPointFFI { + pub txid: *mut crate::fermented::generics::Arr_u8_32, + pub vout: u32, + } + + impl ferment::FFIConversionFrom for platform_mobile_put_OutPointFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_OutPointFFI) -> platform_mobile::put::OutPointFFI { + let ffi_ref = &*ffi; + platform_mobile::put::OutPointFFI { txid: >::ffi_from(ffi_ref.txid), vout: ffi_ref.vout } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_OutPointFFI { unsafe fn ffi_to_const(obj: platform_mobile::put::OutPointFFI) -> *const platform_mobile_put_OutPointFFI { ferment::boxed(platform_mobile_put_OutPointFFI { txid: >::ffi_to(obj.txid), vout: obj.vout }) } } + + impl Drop for platform_mobile_put_OutPointFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.txid); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_ctor<>(txid: *mut crate::fermented::generics::Arr_u8_32, vout: u32) -> *mut platform_mobile_put_OutPointFFI { ferment::boxed(platform_mobile_put_OutPointFFI { txid, vout }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_destroy<>(ffi: *mut platform_mobile_put_OutPointFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_get_txid<>(obj: *const platform_mobile_put_OutPointFFI) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).txid } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_get_vout<>(obj: *const platform_mobile_put_OutPointFFI) -> u32 { (*obj).vout } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_set_txid<>(obj: *const platform_mobile_put_OutPointFFI) -> *mut crate::fermented::generics::Arr_u8_32 { (*obj).txid } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_OutPointFFI_set_vout<>(obj: *const platform_mobile_put_OutPointFFI) -> u32 { (*obj).vout } + + #[doc = "FFI-representation of the [`InstantAssetLockProofFFI`]"] + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_put_InstantAssetLockProofFFI { + pub instant_lock: *mut crate::fermented::generics::Vec_u8, + pub transaction: *mut crate::fermented::generics::Vec_u8, + pub output_index: u32, + } + + impl ferment::FFIConversionFrom for platform_mobile_put_InstantAssetLockProofFFI { + unsafe fn ffi_from_const(ffi: *const platform_mobile_put_InstantAssetLockProofFFI) -> platform_mobile::put::InstantAssetLockProofFFI { + let ffi_ref = &*ffi; + platform_mobile::put::InstantAssetLockProofFFI { instant_lock: >>::ffi_from(ffi_ref.instant_lock), transaction: >>::ffi_from(ffi_ref.transaction), output_index: ffi_ref.output_index } + } + } + + impl ferment::FFIConversionTo for platform_mobile_put_InstantAssetLockProofFFI { unsafe fn ffi_to_const(obj: platform_mobile::put::InstantAssetLockProofFFI) -> *const platform_mobile_put_InstantAssetLockProofFFI { ferment::boxed(platform_mobile_put_InstantAssetLockProofFFI { instant_lock: >>::ffi_to(obj.instant_lock), transaction: >>::ffi_to(obj.transaction), output_index: obj.output_index }) } } + + impl Drop for platform_mobile_put_InstantAssetLockProofFFI { + fn drop(&mut self) { + unsafe { + let ffi_ref = self; + ferment::unbox_any(ffi_ref.instant_lock); + ferment::unbox_any(ffi_ref.transaction); + ; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_ctor<>(instant_lock: *mut crate::fermented::generics::Vec_u8, transaction: *mut crate::fermented::generics::Vec_u8, output_index: u32) -> *mut platform_mobile_put_InstantAssetLockProofFFI { ferment::boxed(platform_mobile_put_InstantAssetLockProofFFI { instant_lock, transaction, output_index }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_destroy<>(ffi: *mut platform_mobile_put_InstantAssetLockProofFFI) { ferment::unbox_any(ffi); } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_get_instant_lock<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).instant_lock } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_get_transaction<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).transaction } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_get_output_index<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> u32 { (*obj).output_index } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_set_instant_lock<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).instant_lock } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_set_transaction<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> *mut crate::fermented::generics::Vec_u8 { (*obj).transaction } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_put_InstantAssetLockProofFFI_set_output_index<>(obj: *const platform_mobile_put_InstantAssetLockProofFFI) -> u32 { (*obj).output_index } + } + + pub mod fetch_document { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`# doc = \"FFI-representation of the [`StartPoint`]\"`]"] + #[repr(C)] + #[derive(Clone)] + #[non_exhaustive] + pub enum platform_mobile_fetch_document_StartPoint { StartAfter(*mut crate::fermented::generics::Vec_u8), StartAt(*mut crate::fermented::generics::Vec_u8) } + + impl ferment::FFIConversionFrom for platform_mobile_fetch_document_StartPoint { + unsafe fn ffi_from_const(ffi: *const platform_mobile_fetch_document_StartPoint) -> platform_mobile::fetch_document::StartPoint { + let ffi_ref = &*ffi; + match ffi_ref { + platform_mobile_fetch_document_StartPoint::StartAfter(o_0) => platform_mobile::fetch_document::StartPoint::StartAfter(>>::ffi_from(*o_0)), + platform_mobile_fetch_document_StartPoint::StartAt(o_0) => platform_mobile::fetch_document::StartPoint::StartAt(>>::ffi_from(*o_0)) + } + } + } + + impl ferment::FFIConversionTo for platform_mobile_fetch_document_StartPoint { + unsafe fn ffi_to_const(obj: platform_mobile::fetch_document::StartPoint) -> *const platform_mobile_fetch_document_StartPoint { + ferment::boxed(match obj { + platform_mobile::fetch_document::StartPoint::StartAfter(o_0) => platform_mobile_fetch_document_StartPoint::StartAfter(>>::ffi_to(o_0)), + platform_mobile::fetch_document::StartPoint::StartAt(o_0) => platform_mobile_fetch_document_StartPoint::StartAt(>>::ffi_to(o_0)), + _ => unreachable!("This is unreachable") + }) + } + } + + impl Drop for platform_mobile_fetch_document_StartPoint { + fn drop(&mut self) { + unsafe { + match self { + platform_mobile_fetch_document_StartPoint::StartAfter(o_0) => { ferment::unbox_any(*o_0); } + platform_mobile_fetch_document_StartPoint::StartAt(o_0) => { ferment::unbox_any(*o_0); } + _ => unreachable!("This is unreachable") + }; + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_StartPoint_StartAfter_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_mobile_fetch_document_StartPoint { ferment::boxed(platform_mobile_fetch_document_StartPoint::StartAfter(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_StartPoint_StartAt_ctor(o_o_0: *mut crate::fermented::generics::Vec_u8) -> *mut platform_mobile_fetch_document_StartPoint { ferment::boxed(platform_mobile_fetch_document_StartPoint::StartAt(o_o_0)) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_StartPoint_destroy<>(ffi: *mut platform_mobile_fetch_document_StartPoint) { ferment::unbox_any(ffi); } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_document::document_to_string`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_document_to_string(document: *mut crate::fermented::types::dpp::document::dpp_document_Document) -> *mut std::os::raw::c_char { + let obj = platform_mobile::fetch_document::document_to_string(>::ffi_from(document)); + >::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_document::fetch_documents_with_query_and_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_fetch_documents_with_query_and_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type: *mut std::os::raw::c_char, where_clauses: *mut crate::fermented::generics::Vec_drive_query_conditions_WhereClause, order_clauses: *mut crate::fermented::generics::Vec_drive_query_ordering_OrderClause, limit: u32, start: *mut crate::fermented::types::platform_mobile::fetch_document::platform_mobile_fetch_document_StartPoint) -> *mut crate::fermented::generics::Result_ok_Vec_dpp_document_Document_err_String { + let obj = platform_mobile::fetch_document::fetch_documents_with_query_and_sdk(rust_sdk, >::ffi_from(data_contract_id), >::ffi_from(document_type), >>::ffi_from(where_clauses), >>::ffi_from(order_clauses), limit, >::ffi_from_opt(start)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_document::deserialize_document_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_document_deserialize_document_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, bytes: *mut crate::fermented::generics::Vec_u8, data_contract_id: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, document_type: *mut std::os::raw::c_char) -> *mut crate::fermented::generics::Result_ok_dpp_document_Document_err_String { + let obj = platform_mobile::fetch_document::deserialize_document_sdk(rust_sdk, >>::ffi_from(bytes), >::ffi_from(data_contract_id), >::ffi_from(document_type)); + >>::ffi_to(obj) + } + } + + pub mod config { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::config::testnet_address_list`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_config_testnet_address_list() -> *mut crate::fermented::generics::Vec_String { + let obj = platform_mobile::config::testnet_address_list(); + >>::ffi_to(obj) + } + } + + pub mod fetch_identity { + use crate as dash_sdk_bindings; + + #[doc = "FFI-representation of the [`platform_mobile::fetch_identity::fetch_identity_with_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_identity_fetch_identity_with_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_Option_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::fetch_identity::fetch_identity_with_sdk(rust_sdk, >::ffi_from(identifier)); + , String>>>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_identity::fetch_identity_with_keyhash_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_identity_fetch_identity_with_keyhash_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, key_hash: *mut crate::fermented::generics::Arr_u8_20) -> *mut crate::fermented::generics::Result_ok_dpp_identity_identity_Identity_err_String { + let obj = platform_mobile::fetch_identity::fetch_identity_with_keyhash_sdk(rust_sdk, >::ffi_from(key_hash)); + >>::ffi_to(obj) + } + + #[doc = "FFI-representation of the [`platform_mobile::fetch_identity::fetch_identity_balance_with_sdk`]"] + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_fetch_identity_fetch_identity_balance_with_sdk(rust_sdk: *mut platform_mobile::sdk::DashSdk, identifier: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut crate::fermented::generics::Result_ok_u64_err_String { + let obj = platform_mobile::fetch_identity::fetch_identity_balance_with_sdk(rust_sdk, >::ffi_from(identifier)); + >>::ffi_to(obj) + } + } + } + + pub mod dapi_grpc { + use crate as dash_sdk_bindings; + + #[cfg(feature = "core")] + pub mod core { + use crate as dash_sdk_bindings; + } + + pub mod mock { use crate as dash_sdk_bindings; } + + #[cfg(feature = "serde")] + pub mod deserialization { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "drive")] + pub mod drive { + use crate as dash_sdk_bindings; + } + + #[cfg(feature = "platform")] + pub mod platform { + use crate as dash_sdk_bindings; + } + } +} + +#[allow( + clippy::let_and_return, + clippy::suspicious_else_formatting, + clippy::redundant_field_names, + dead_code, + non_camel_case_types, + non_snake_case, + non_upper_case_globals, + redundant_semicolons, + unreachable_patterns, + unused_braces, + unused_imports, + unused_parens, + unused_qualifications, + unused_unsafe, + unused_variables +)] +pub mod generics { + use crate as dash_sdk_bindings; + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_VotePollsGroupedByTimestamp, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_VotePollsGroupedByTimestamp_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_dpp_voting_votes_Vote_err_String { + pub ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_dpp_voting_votes_Vote_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_dpp_voting_votes_Vote_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_dpp_voting_votes_Vote_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_voting_votes_Vote_err_String_ctor(ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, error: *mut std::os::raw::c_char) -> *mut Result_ok_dpp_voting_votes_Vote_err_String { ferment::boxed(Result_ok_dpp_voting_votes_Vote_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_voting_votes_Vote_err_String_destroy(ffi: *mut Result_ok_dpp_voting_votes_Vote_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_Tuple_platform_value_Value_platform_value_Value { + pub count: usize, + pub values: *mut *mut crate::fermented::generics::Tuple_platform_value_Value_platform_value_Value, + } + + impl ferment::FFIConversionFrom> for Vec_Tuple_platform_value_Value_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const Vec_Tuple_platform_value_Value_platform_value_Value) -> Vec<(platform_value::Value, platform_value::Value)> { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_Tuple_platform_value_Value_platform_value_Value { unsafe fn ffi_to_const(obj: Vec<(platform_value::Value, platform_value::Value)>) -> *const Vec_Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_Tuple_platform_value_Value_platform_value_Value { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_platform_value_Value_platform_value_Value_ctor(count: usize, values: *mut *mut crate::fermented::generics::Tuple_platform_value_Value_platform_value_Value) -> *mut Vec_Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Vec_Tuple_platform_value_Value_platform_value_Value { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_platform_value_Value_platform_value_Value_destroy(ffi: *mut Vec_Tuple_platform_value_Value_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_dpp_document_Document_err_String { + pub ok: *mut crate::fermented::types::dpp::document::dpp_document_Document, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_dpp_document_Document_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_dpp_document_Document_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_dpp_document_Document_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_dpp_document_Document_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_dpp_document_Document_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_document_Document_err_String_ctor(ok: *mut crate::fermented::types::dpp::document::dpp_document_Document, error: *mut std::os::raw::c_char) -> *mut Result_ok_dpp_document_Document_err_String { ferment::boxed(Result_ok_dpp_document_Document_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_document_Document_err_String_destroy(ffi: *mut Result_ok_dpp_document_Document_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { + pub o_0: *mut crate::fermented::types::dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo, + pub o_1: *mut crate::fermented::types::dpp::block::block_info::dpp_block_block_info_BlockInfo, + } + + impl ferment::FFIConversionFrom<(dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo)> for Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { + unsafe fn ffi_from_const(ffi: *const Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo) -> (dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo) { + let ffi_ref = &*ffi; + (ferment::FFIConversionFrom::ffi_from(ffi_ref.o_0), ferment::FFIConversionFrom::ffi_from(ffi_ref.o_1)) + } + } + + impl ferment::FFIConversionTo<(dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo)> for Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { unsafe fn ffi_to_const(obj: (dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo, dpp::block::block_info::BlockInfo)) -> *const Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { ferment::boxed(Self { o_0: ferment::FFIConversionTo::ffi_to(obj.0), o_1: ferment::FFIConversionTo::ffi_to(obj.1) }) } } + + impl Drop for Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { + fn drop(&mut self) { + unsafe { + ferment::unbox_any(self.o_0); + ferment::unbox_any(self.o_1); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_ctor(o_0: *mut crate::fermented::types::dpp::voting::vote_info_storage::contested_document_vote_poll_winner_info::dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo, o_1: *mut crate::fermented::types::dpp::block::block_info::dpp_block_block_info_BlockInfo) -> *mut Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { ferment::boxed(Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo { o_0, o_1 }) } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo_destroy(ffi: *mut Tuple_dpp_voting_vote_info_storage_contested_document_vote_poll_winner_info_ContestedDocumentVotePollWinnerInfo_dpp_block_block_info_BlockInfo) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_document_Document { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::document::dpp_document_Document, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_document_Document { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_document_Document) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_document_Document { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_document_Document { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_document_Document { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_document_Document_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::document::dpp_document_Document) -> *mut Vec_dpp_document_Document { ferment::boxed(Vec_dpp_document_Document { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_document_Document_destroy(ffi: *mut Vec_dpp_document_Document) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Option_dpp_identity_identity_Identity_err_String { + pub ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Option_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Option_dpp_identity_identity_Identity_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from_opt(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Option_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Option_dpp_identity_identity_Identity_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to_opt(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Option_dpp_identity_identity_Identity_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_identity_identity_Identity_err_String_ctor(ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, error: *mut std::os::raw::c_char) -> *mut Result_ok_Option_dpp_identity_identity_Identity_err_String { ferment::boxed(Result_ok_Option_dpp_identity_identity_Identity_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_identity_identity_Identity_err_String_destroy(ffi: *mut Result_ok_Option_dpp_identity_identity_Identity_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_String_values_platform_value_Value { + pub count: usize, + pub keys: *mut *mut std::os::raw::c_char, + pub values: *mut *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom> for std_collections_Map_keys_String_values_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_String_values_platform_value_Value) -> std::collections::BTreeMap { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for std_collections_Map_keys_String_values_platform_value_Value { unsafe fn ffi_to_const(obj: std::collections::BTreeMap) -> *const std_collections_Map_keys_String_values_platform_value_Value { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_String_values_platform_value_Value { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr_composer(self.keys, self.count, ferment::unbox_string); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_String_values_platform_value_Value_ctor(count: usize, keys: *mut *mut std::os::raw::c_char, values: *mut *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut std_collections_Map_keys_String_values_platform_value_Value { ferment::boxed(std_collections_Map_keys_String_values_platform_value_Value { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_String_values_platform_value_Value_destroy(ffi: *mut std_collections_Map_keys_String_values_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + pub count: usize, + pub values: *mut *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll, + } + + impl ferment::FFIConversionFrom)>> for Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> Vec<(dpp::prelude::TimestampMillis, Vec)> { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo)>> for Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { unsafe fn ffi_to_const(obj: Vec<(dpp::prelude::TimestampMillis, Vec)>) -> *const Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(count: usize, values: *mut *mut crate::fermented::generics::Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> *mut Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(ffi: *mut Vec_Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + pub o_0: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, + pub o_1: *mut crate::fermented::generics::Vec_dpp_voting_vote_polls_VotePoll, + } + + impl ferment::FFIConversionFrom<(dpp::prelude::TimestampMillis, Vec)> for Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) -> (dpp::prelude::TimestampMillis, Vec) { + let ffi_ref = &*ffi; + (ferment::FFIConversionFrom::ffi_from(ffi_ref.o_0), ferment::FFIConversionFrom::ffi_from(ffi_ref.o_1)) + } + } + + impl ferment::FFIConversionTo<(dpp::prelude::TimestampMillis, Vec)> for Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { unsafe fn ffi_to_const(obj: (dpp::prelude::TimestampMillis, Vec)) -> *const Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Self { o_0: ferment::FFIConversionTo::ffi_to(obj.0), o_1: ferment::FFIConversionTo::ffi_to(obj.1) }) } } + + impl Drop for Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { + fn drop(&mut self) { + unsafe { + ferment::unbox_any(self.o_0); + ferment::unbox_any(self.o_1); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_ctor(o_0: *mut crate::fermented::types::dpp::prelude::dpp_prelude_TimestampMillis, o_1: *mut crate::fermented::generics::Vec_dpp_voting_vote_polls_VotePoll) -> *mut Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll { o_0, o_1 }) } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll_destroy(ffi: *mut Tuple_dpp_prelude_TimestampMillis_Vec_dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Vec_u8_err_String { + pub ok: *mut crate::fermented::generics::Vec_u8, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Vec_u8_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Vec_u8_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >>::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Vec_u8_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Vec_u8_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Vec_u8_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_u8_err_String_ctor(ok: *mut crate::fermented::generics::Vec_u8, error: *mut std::os::raw::c_char) -> *mut Result_ok_Vec_u8_err_String { ferment::boxed(Result_ok_Vec_u8_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_u8_err_String_destroy(ffi: *mut Result_ok_Vec_u8_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Option_dpp_voting_votes_Vote_err_String { + pub ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Option_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Option_dpp_voting_votes_Vote_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from_opt(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Option_dpp_voting_votes_Vote_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Option_dpp_voting_votes_Vote_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to_opt(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Option_dpp_voting_votes_Vote_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_voting_votes_Vote_err_String_ctor(ok: *mut crate::fermented::types::dpp::voting::votes::dpp_voting_votes_Vote, error: *mut std::os::raw::c_char) -> *mut Result_ok_Option_dpp_voting_votes_Vote_err_String { ferment::boxed(Result_ok_Option_dpp_voting_votes_Vote_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_dpp_voting_votes_Vote_err_String_destroy(ffi: *mut Result_ok_Option_dpp_voting_votes_Vote_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Vec_dpp_document_Document_err_String { + pub ok: *mut crate::fermented::generics::Vec_dpp_document_Document, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Vec_dpp_document_Document_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Vec_dpp_document_Document_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >>::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Vec_dpp_document_Document_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Vec_dpp_document_Document_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Vec_dpp_document_Document_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_dpp_document_Document_err_String_ctor(ok: *mut crate::fermented::generics::Vec_dpp_document_Document, error: *mut std::os::raw::c_char) -> *mut Result_ok_Vec_dpp_document_Document_err_String { ferment::boxed(Result_ok_Vec_dpp_document_Document_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Vec_dpp_document_Document_err_String_destroy(ffi: *mut Result_ok_Vec_dpp_document_Document_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_u8 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom> for Vec_u8 { + unsafe fn ffi_from_const(ffi: *const Vec_u8) -> Vec { + let ffi_ref = &*ffi; + ferment::from_primitive_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_u8 { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_u8 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Vec_u8 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_u8_ctor(count: usize, values: *mut u8) -> *mut Vec_u8 { ferment::boxed(Vec_u8 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_u8_destroy(ffi: *mut Vec_u8) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_platform_value_Value { + pub count: usize, + pub values: *mut *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom> for Vec_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const Vec_platform_value_Value) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_platform_value_Value { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_platform_value_Value { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_platform_value_Value { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_platform_value_Value_ctor(count: usize, values: *mut *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut Vec_platform_value_Value { ferment::boxed(Vec_platform_value_Value { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_platform_value_Value_destroy(ffi: *mut Vec_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_dpp_identity_identity_Identity_err_String { + pub ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_dpp_identity_identity_Identity_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_dpp_identity_identity_Identity_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_dpp_identity_identity_Identity_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_dpp_identity_identity_Identity_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_identity_identity_Identity_err_String_ctor(ok: *mut crate::fermented::types::dpp::identity::identity::dpp_identity_identity_Identity, error: *mut std::os::raw::c_char) -> *mut Result_ok_dpp_identity_identity_Identity_err_String { ferment::boxed(Result_ok_dpp_identity_identity_Identity_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_dpp_identity_identity_Identity_err_String_destroy(ffi: *mut Result_ok_dpp_identity_identity_Identity_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_identity_identity_public_key_IdentityPublicKey { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_identity_identity_public_key_IdentityPublicKey) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_identity_identity_public_key_IdentityPublicKey { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_identity_identity_public_key_IdentityPublicKey { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_IdentityPublicKey_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey) -> *mut Vec_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(Vec_dpp_identity_identity_public_key_IdentityPublicKey { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_IdentityPublicKey_destroy(ffi: *mut Vec_dpp_identity_identity_public_key_IdentityPublicKey) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_drive_query_ordering_OrderClause { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause, + } + + impl ferment::FFIConversionFrom> for Vec_drive_query_ordering_OrderClause { + unsafe fn ffi_from_const(ffi: *const Vec_drive_query_ordering_OrderClause) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_drive_query_ordering_OrderClause { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_drive_query_ordering_OrderClause { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_drive_query_ordering_OrderClause { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_ordering_OrderClause_ctor(count: usize, values: *mut *mut crate::fermented::types::drive::query::ordering::drive_query_ordering_OrderClause) -> *mut Vec_drive_query_ordering_OrderClause { ferment::boxed(Vec_drive_query_ordering_OrderClause { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_ordering_OrderClause_destroy(ffi: *mut Vec_drive_query_ordering_OrderClause) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + pub ok: *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom, String>> for Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String) -> Result, String> { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from_opt(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo, String>> for Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + unsafe fn ffi_to_const(obj: Result, String>) -> *const Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to_opt(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_ctor(ok: *mut crate::fermented::types::platform_mobile::data_contracts::platform_mobile_data_contracts_DataContractFFI, error: *mut std::os::raw::c_char) -> *mut Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { ferment::boxed(Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String_destroy(ffi: *mut Result_ok_Option_platform_mobile_data_contracts_DataContractFFI_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + pub count: usize, + pub keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub values: *mut *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument, + } + + impl ferment::FFIConversionFrom> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> std::collections::BTreeMap { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { unsafe fn ffi_to_const(obj: std::collections::BTreeMap) -> *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr(self.keys, self.count); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_ctor(count: usize, keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, values: *mut *mut crate::fermented::types::dpp::voting::contender_structs::contender::dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) -> *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { ferment::boxed(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument_destroy(ffi: *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_dpp_voting_contender_structs_contender_ContenderWithSerializedDocument) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ResourceVotesByIdentity, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_ResourceVotesByIdentity_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_String { + pub count: usize, + pub values: *mut *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Vec_String { + unsafe fn ffi_from_const(ffi: *const Vec_String) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_String { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_String { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_String { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr_composer(self.values, self.count, ferment::unbox_string); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_String_ctor(count: usize, values: *mut *mut std::os::raw::c_char) -> *mut Vec_String { ferment::boxed(Vec_String { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_String_destroy(ffi: *mut Vec_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_2 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 2]> for Arr_u8_2 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_2) -> [u8; 2] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 2]> for Arr_u8_2 { unsafe fn ffi_to_const(obj: [u8; 2]) -> *const Arr_u8_2 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_2 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_2_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_2 { ferment::boxed(Arr_u8_2 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_2_destroy(ffi: *mut Arr_u8_2) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_ContestedResources_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_ContestedResources_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ContestedResources_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResources, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_ContestedResources_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_ContestedResources_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_ContestedResources_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_ContestedResources_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_20 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 20]> for Arr_u8_20 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_20) -> [u8; 20] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 20]> for Arr_u8_20 { unsafe fn ffi_to_const(obj: [u8; 20]) -> *const Arr_u8_20 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_20 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_20_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_20 { ferment::boxed(Arr_u8_20 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_20_destroy(ffi: *mut Arr_u8_20) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_voting_vote_polls_VotePoll { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_voting_vote_polls_VotePoll { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_voting_vote_polls_VotePoll) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_voting_vote_polls_VotePoll { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_voting_vote_polls_VotePoll { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_voting_vote_polls_VotePoll_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::voting::vote_polls::dpp_voting_vote_polls_VotePoll) -> *mut Vec_dpp_voting_vote_polls_VotePoll { ferment::boxed(Vec_dpp_voting_vote_polls_VotePoll { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_voting_vote_polls_VotePoll_destroy(ffi: *mut Vec_dpp_voting_vote_polls_VotePoll) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Tuple_platform_value_Value_platform_value_Value { + pub o_0: *mut crate::fermented::types::platform_value::platform_value_Value, + pub o_1: *mut crate::fermented::types::platform_value::platform_value_Value, + } + + impl ferment::FFIConversionFrom<(platform_value::Value, platform_value::Value)> for Tuple_platform_value_Value_platform_value_Value { + unsafe fn ffi_from_const(ffi: *const Tuple_platform_value_Value_platform_value_Value) -> (platform_value::Value, platform_value::Value) { + let ffi_ref = &*ffi; + (ferment::FFIConversionFrom::ffi_from(ffi_ref.o_0), ferment::FFIConversionFrom::ffi_from(ffi_ref.o_1)) + } + } + + impl ferment::FFIConversionTo<(platform_value::Value, platform_value::Value)> for Tuple_platform_value_Value_platform_value_Value { unsafe fn ffi_to_const(obj: (platform_value::Value, platform_value::Value)) -> *const Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Self { o_0: ferment::FFIConversionTo::ffi_to(obj.0), o_1: ferment::FFIConversionTo::ffi_to(obj.1) }) } } + + impl Drop for Tuple_platform_value_Value_platform_value_Value { + fn drop(&mut self) { + unsafe { + ferment::unbox_any(self.o_0); + ferment::unbox_any(self.o_1); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_platform_value_Value_platform_value_Value_ctor(o_0: *mut crate::fermented::types::platform_value::platform_value_Value, o_1: *mut crate::fermented::types::platform_value::platform_value_Value) -> *mut Tuple_platform_value_Value_platform_value_Value { ferment::boxed(Tuple_platform_value_Value_platform_value_Value { o_0, o_1 }) } + + #[no_mangle] + pub unsafe extern "C" fn Tuple_platform_value_Value_platform_value_Value_destroy(ffi: *mut Tuple_platform_value_Value_platform_value_Value) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { + pub count: usize, + pub keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + pub values: *mut *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote, + } + + impl ferment::FFIConversionFrom>> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote) -> std::collections::BTreeMap> { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from_opt(o)) + } + } + + impl ferment::FFIConversionTo>> for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { unsafe fn ffi_to_const(obj: std::collections::BTreeMap>) -> *const std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_opt_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr(self.keys, self.count); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_ctor(count: usize, keys: *mut *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, values: *mut *mut crate::fermented::types::dpp::voting::votes::resource_vote::dpp_voting_votes_resource_vote_ResourceVote) -> *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { ferment::boxed(std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote_destroy(ffi: *mut std_collections_Map_keys_platform_value_types_identifier_Identifier_values_Option_dpp_voting_votes_resource_vote_ResourceVote) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_drive_query_conditions_WhereClause { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause, + } + + impl ferment::FFIConversionFrom> for Vec_drive_query_conditions_WhereClause { + unsafe fn ffi_from_const(ffi: *const Vec_drive_query_conditions_WhereClause) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_drive_query_conditions_WhereClause { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_drive_query_conditions_WhereClause { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_drive_query_conditions_WhereClause { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_conditions_WhereClause_ctor(count: usize, values: *mut *mut crate::fermented::types::drive::query::conditions::drive_query_conditions_WhereClause) -> *mut Vec_drive_query_conditions_WhereClause { ferment::boxed(Vec_drive_query_conditions_WhereClause { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_query_conditions_WhereClause_destroy(ffi: *mut Vec_drive_query_conditions_WhereClause) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_32 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 32]> for Arr_u8_32 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_32) -> [u8; 32] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 32]> for Arr_u8_32 { unsafe fn ffi_to_const(obj: [u8; 32]) -> *const Arr_u8_32 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_32 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_32_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_32 { ferment::boxed(Arr_u8_32 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_32_destroy(ffi: *mut Arr_u8_32) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_drive_proof_verifier_types_ContestedResource { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource, + } + + impl ferment::FFIConversionFrom> for Vec_drive_proof_verifier_types_ContestedResource { + unsafe fn ffi_from_const(ffi: *const Vec_drive_proof_verifier_types_ContestedResource) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_drive_proof_verifier_types_ContestedResource { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_drive_proof_verifier_types_ContestedResource { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_drive_proof_verifier_types_ContestedResource { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_proof_verifier_types_ContestedResource_ctor(count: usize, values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_ContestedResource) -> *mut Vec_drive_proof_verifier_types_ContestedResource { ferment::boxed(Vec_drive_proof_verifier_types_ContestedResource { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_drive_proof_verifier_types_ContestedResource_destroy(ffi: *mut Vec_drive_proof_verifier_types_ContestedResource) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { + pub obj: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier, + } + + impl Drop for platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { fn drop(&mut self) { unsafe { ferment::unbox_any(self.obj); } } } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract_ctor(obj: *mut crate::fermented::types::platform_value::types::identifier::platform_value_types_identifier_Identifier) -> *mut platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { ferment::boxed(platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract { obj }) } + + #[no_mangle] + pub unsafe extern "C" fn platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract_destroy(ffi: *mut platform_mobile_provider_Cache_platform_value_types_identifier_Identifier_dpp_data_contract_DataContract) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_BTreeSet_drive_proof_verifier_types_Voter { + pub count: usize, + pub values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter, + } + + impl ferment::FFIConversionFrom> for std_collections_BTreeSet_drive_proof_verifier_types_Voter { + unsafe fn ffi_from_const(ffi: *const std_collections_BTreeSet_drive_proof_verifier_types_Voter) -> std::collections::BTreeSet { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for std_collections_BTreeSet_drive_proof_verifier_types_Voter { unsafe fn ffi_to_const(obj: std::collections::BTreeSet) -> *const std_collections_BTreeSet_drive_proof_verifier_types_Voter { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for std_collections_BTreeSet_drive_proof_verifier_types_Voter { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_BTreeSet_drive_proof_verifier_types_Voter_ctor(count: usize, values: *mut *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Voter) -> *mut std_collections_BTreeSet_drive_proof_verifier_types_Voter { ferment::boxed(std_collections_BTreeSet_drive_proof_verifier_types_Voter { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_BTreeSet_drive_proof_verifier_types_Voter_destroy(ffi: *mut std_collections_BTreeSet_drive_proof_verifier_types_Voter) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_drive_proof_verifier_types_Contenders_err_String { + pub ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_drive_proof_verifier_types_Contenders_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_drive_proof_verifier_types_Contenders_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| >::ffi_from(o), ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_drive_proof_verifier_types_Contenders_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_drive_proof_verifier_types_Contenders_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::FFIConversionTo::ffi_to(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_drive_proof_verifier_types_Contenders_err_String { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_opt(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_Contenders_err_String_ctor(ok: *mut crate::fermented::types::drive_proof_verifier::types::drive_proof_verifier_types_Contenders, error: *mut std::os::raw::c_char) -> *mut Result_ok_drive_proof_verifier_types_Contenders_err_String { ferment::boxed(Result_ok_drive_proof_verifier_types_Contenders_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_drive_proof_verifier_types_Contenders_err_String_destroy(ffi: *mut Result_ok_drive_proof_verifier_types_Contenders_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + pub count: usize, + pub keys: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, + pub values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey, + } + + impl ferment::FFIConversionFrom> for std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + unsafe fn ffi_from_const(ffi: *const std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey) -> std::collections::BTreeMap { + let ffi_ref = &*ffi; + ferment::fold_to_map(ffi_ref.count, ffi_ref.keys, ffi_ref.values, |o| >::ffi_from(o), |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { unsafe fn ffi_to_const(obj: std::collections::BTreeMap) -> *const std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(Self { count: obj.len(), keys: ferment::to_complex_group(obj.keys().cloned()), values: ferment::to_complex_group(obj.values().cloned()) }) } } + + impl Drop for std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { + fn drop(&mut self) { + unsafe { + ferment::unbox_any_vec_ptr(self.keys, self.count); + ferment::unbox_any_vec_ptr(self.values, self.count); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_ctor(count: usize, keys: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_IdentityPublicKey) -> *mut std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { ferment::boxed(std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey { count, keys, values }) } + + #[no_mangle] + pub unsafe extern "C" fn std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey_destroy(ffi: *mut std_collections_Map_keys_dpp_identity_identity_public_key_KeyID_values_dpp_identity_identity_public_key_IdentityPublicKey) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Arr_u8_36 { + pub count: usize, + pub values: *mut u8, + } + + impl ferment::FFIConversionFrom<[u8; 36]> for Arr_u8_36 { + unsafe fn ffi_from_const(ffi: *const Arr_u8_36) -> [u8; 36] { + let ffi_ref = &*ffi; + let vec: Vec = ferment::from_primitive_group(ffi_ref.values, ffi_ref.count); + vec.try_into().unwrap() + } + } + + impl ferment::FFIConversionTo<[u8; 36]> for Arr_u8_36 { unsafe fn ffi_to_const(obj: [u8; 36]) -> *const Arr_u8_36 { ferment::boxed(Self { count: obj.len(), values: ferment::to_primitive_group(obj.into_iter()) }) } } + + impl Drop for Arr_u8_36 { fn drop(&mut self) { unsafe { ferment::unbox_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_36_ctor(count: usize, values: *mut u8) -> *mut Arr_u8_36 { ferment::boxed(Arr_u8_36 { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Arr_u8_36_destroy(ffi: *mut Arr_u8_36) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Result_ok_u64_err_String { + pub ok: *mut u64, + pub error: *mut std::os::raw::c_char, + } + + impl ferment::FFIConversionFrom> for Result_ok_u64_err_String { + unsafe fn ffi_from_const(ffi: *const Result_ok_u64_err_String) -> Result { + let ffi_ref = &*ffi; + ferment::fold_to_result(ffi_ref.ok, |o| *o, ffi_ref.error, |o| >::ffi_from(o)) + } + } + + impl ferment::FFIConversionTo> for Result_ok_u64_err_String { + unsafe fn ffi_to_const(obj: Result) -> *const Result_ok_u64_err_String { + ferment::boxed({ + let (ok, error) = ferment::to_result(obj, |o| ferment::boxed(o), |o| ferment::FFIConversionTo::ffi_to(o)); + Self { ok, error } + }) + } + } + + impl Drop for Result_ok_u64_err_String { + fn drop(&mut self) { + unsafe { + ferment::destroy_opt_primitive(self.ok); + ferment::unbox_any_opt(self.error); + } + } + } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_u64_err_String_ctor(ok: *mut u64, error: *mut std::os::raw::c_char) -> *mut Result_ok_u64_err_String { ferment::boxed(Result_ok_u64_err_String { ok, error }) } + + #[no_mangle] + pub unsafe extern "C" fn Result_ok_u64_err_String_destroy(ffi: *mut Result_ok_u64_err_String) { ferment::unbox_any(ffi); } + + #[repr(C)] + #[derive(Clone)] + pub struct Vec_dpp_identity_identity_public_key_KeyID { + pub count: usize, + pub values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID, + } + + impl ferment::FFIConversionFrom> for Vec_dpp_identity_identity_public_key_KeyID { + unsafe fn ffi_from_const(ffi: *const Vec_dpp_identity_identity_public_key_KeyID) -> Vec { + let ffi_ref = &*ffi; + ferment::from_complex_group(ffi_ref.values, ffi_ref.count) + } + } + + impl ferment::FFIConversionTo> for Vec_dpp_identity_identity_public_key_KeyID { unsafe fn ffi_to_const(obj: Vec) -> *const Vec_dpp_identity_identity_public_key_KeyID { ferment::boxed(Self { count: obj.len(), values: ferment::to_complex_group(obj.into_iter()) }) } } + + impl Drop for Vec_dpp_identity_identity_public_key_KeyID { fn drop(&mut self) { unsafe { ferment::unbox_any_vec_ptr(self.values, self.count); } } } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_KeyID_ctor(count: usize, values: *mut *mut crate::fermented::types::dpp::identity::identity_public_key::dpp_identity_identity_public_key_KeyID) -> *mut Vec_dpp_identity_identity_public_key_KeyID { ferment::boxed(Vec_dpp_identity_identity_public_key_KeyID { count, values }) } + + #[no_mangle] + pub unsafe extern "C" fn Vec_dpp_identity_identity_public_key_KeyID_destroy(ffi: *mut Vec_dpp_identity_identity_public_key_KeyID) { ferment::unbox_any(ffi); } +} \ No newline at end of file diff --git a/dashj-platform-android-simple/.gitignore b/dashj-platform-android-simple/.gitignore deleted file mode 100644 index ef54966..0000000 --- a/dashj-platform-android-simple/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -build/ -target/ -librssdkbindings.so \ No newline at end of file diff --git a/dashj-platform-android-simple/build.gradle b/dashj-platform-android-simple/build.gradle deleted file mode 100644 index 7a401b2..0000000 --- a/dashj-platform-android-simple/build.gradle +++ /dev/null @@ -1,74 +0,0 @@ -plugins { - id 'com.android.library' - //id "org.mozilla.rust-android-gradle.rust-android" version "0.9.3" - id 'maven-publish' -} - -android { - namespace "org.dashj.platform" - compileSdk 34 - - defaultConfig { - minSdk 24 - targetSdk 35 - - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" - consumerProguardFiles "consumer-rules.pro" - } - - buildTypes { - release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' - } - } - compileOptions { - sourceCompatibility JavaVersion.VERSION_17 - targetCompatibility JavaVersion.VERSION_17 - } - - packagingOptions { - pickFirst '**/*.so' - } - - ndkVersion "29.0.14206865" -} - -task buildRustRelease() { - doLast { - String outputPath = "$projectDir/src/main/jniLibs" // Adjust the output path as necessary - def abis = [ - "armv7-linux-androideabi", - "aarch64-linux-android", - "i686-linux-android", - "x86_64-linux-android" - ] - - abis.each { abi -> - exec { - workingDir 'src/main/rust' // Adjust to the path of your Rust project relative to your Android project - environment "CARGO_TARGET_DIR", "target" - //environment "CARGO_FEATURE_STD", 1 // this is to trick indexmap, among others - commandLine 'cargo', '+nightly', 'ndk', '-t', abi, '-o', outputPath, '--platform', '24', 'build', '--release', '-Zbuild-std' - // Uncomment the next line if you need verbose output for debugging - // commandLine 'cargo', '+nightly', 'ndk', '-t', abi, '-o', outputPath, '--platform', '24', 'build', '--release', '-Zbuild-std', '-vv' - } - } - } -} - -//tasks.whenTaskAdded { task -> -// if ((task.name == 'javaPreCompileDebug' || task.name == 'javaPreCompileRelease')) { -// task.dependsOn 'buildRustRelease' -// } -//} - -preBuild.dependsOn "buildRustRelease" - -dependencies { - //testImplementation 'junit:junit:4.13.2' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' -} - -assemble.dependsOn(publishToMavenLocal) \ No newline at end of file diff --git a/dashj-platform-android-simple/consumer-rules.pro b/dashj-platform-android-simple/consumer-rules.pro deleted file mode 100644 index e69de29..0000000 diff --git a/dashj-platform-android-simple/proguard-rules.pro b/dashj-platform-android-simple/proguard-rules.pro deleted file mode 100644 index 481bb43..0000000 --- a/dashj-platform-android-simple/proguard-rules.pro +++ /dev/null @@ -1,21 +0,0 @@ -# Add project specific ProGuard rules here. -# You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. -# -# For more details, see -# http://developer.android.com/guide/developing/tools/proguard.html - -# If your project uses WebView with JS, uncomment the following -# and specify the fully qualified class name to the JavaScript interface -# class: -#-keepclassmembers class fqcn.of.javascript.interface.for.webview { -# public *; -#} - -# Uncomment this to preserve the line number information for -# debugging stack traces. -#-keepattributes SourceFile,LineNumberTable - -# If you keep the line number information, uncomment this to -# hide the original source file name. -#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/dashj-platform-android-simple/src/main/rust/Cargo.lock b/dashj-platform-android-simple/src/main/rust/Cargo.lock deleted file mode 100644 index 16c8653..0000000 --- a/dashj-platform-android-simple/src/main/rust/Cargo.lock +++ /dev/null @@ -1,3736 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "getrandom", - "once_cell", - "serde", - "version_check", - "zerocopy", -] - -[[package]] -name = "aho-corasick" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" -dependencies = [ - "memchr", -] - -[[package]] -name = "allocator-api2" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "anyhow" -version = "1.0.82" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" - -[[package]] -name = "arrayref" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" - -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - -[[package]] -name = "async-stream" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "async-trait" -version = "0.1.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - -[[package]] -name = "autocfg" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" - -[[package]] -name = "axum" -version = "0.6.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" -dependencies = [ - "async-trait", - "axum-core", - "bitflags 1.3.2", - "bytes", - "futures-util", - "http", - "http-body", - "hyper", - "itoa", - "matchit", - "memchr", - "mime", - "percent-encoding", - "pin-project-lite", - "rustversion", - "serde", - "sync_wrapper", - "tower", - "tower-layer", - "tower-service", -] - -[[package]] -name = "axum-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http", - "http-body", - "mime", - "rustversion", - "tower-layer", - "tower-service", -] - -[[package]] -name = "backon" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d67782c3f868daa71d3533538e98a8e13713231969def7536e8039606fc46bf0" -dependencies = [ - "fastrand", - "futures-core", - "pin-project", - "tokio", -] - -[[package]] -name = "backtrace" -version = "0.3.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" - -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - -[[package]] -name = "base64" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" - -[[package]] -name = "base64ct" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" - -[[package]] -name = "bech32" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" - -[[package]] -name = "bincode" -version = "2.0.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f11ea1a0346b94ef188834a65c068a03aec181c94896d481d7a0a40d85b0ce95" -dependencies = [ - "bincode_derive", - "serde", -] - -[[package]] -name = "bincode_derive" -version = "2.0.0-rc.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e30759b3b99a1b802a7a3aa21c85c3ded5c28e1c83170d82d70f08bbf7f3e4c" -dependencies = [ - "virtue 0.0.13", -] - -[[package]] -name = "bindgen" -version = "0.65.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" -dependencies = [ - "bitflags 1.3.2", - "cexpr", - "clang-sys", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "prettyplease 0.2.17", - "proc-macro2", - "quote", - "regex", - "rustc-hash", - "shlex", - "syn 2.0.58", - "which", -] - -[[package]] -name = "bip37-bloom-filter" -version = "0.1.0" -source = "git+https://github.com/dashpay/rs-bip37-bloom-filter?branch=develop#352fa2312fd6e0f47bf4cba3a67bfd78c3ba763b" -dependencies = [ - "bitvec", - "murmur3", - "thiserror", -] - -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - -[[package]] -name = "bitcoin-private" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73290177011694f38ec25e165d0387ab7ea749a4b81cd4c80dae5988229f7a57" - -[[package]] -name = "bitcoin_hashes" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d7066118b13d4b20b23645932dfb3a81ce7e29f95726c2036fa33cd7b092501" -dependencies = [ - "bitcoin-private", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" - -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - -[[package]] -name = "blake3" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" -dependencies = [ - "arrayref", - "arrayvec", - "cc", - "cfg-if", - "constant_time_eq", -] - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bls-dash-sys" -version = "1.2.5" -dependencies = [ - "bindgen", - "cc", - "glob", -] - -[[package]] -name = "bls-signatures" -version = "1.2.5" -dependencies = [ - "bls-dash-sys", - "hex", - "rand", - "serde", -] - -[[package]] -name = "borsh" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0901fc8eb0aca4c83be0106d6f2db17d86a08dfc2c25f0e84464bf381158add6" -dependencies = [ - "borsh-derive", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51670c3aa053938b0ee3bd67c3817e471e626151131b934038e83c5bf8de48f5" -dependencies = [ - "once_cell", - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.58", - "syn_derive", -] - -[[package]] -name = "bs58" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" - -[[package]] -name = "bs58" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "bumpalo" -version = "3.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" - -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "bytecount" -version = "0.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" - -[[package]] -name = "bytes" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" -dependencies = [ - "serde", -] - -[[package]] -name = "cc" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" - -[[package]] -name = "cexpr" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" -dependencies = [ - "nom", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - -[[package]] -name = "chrono" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "serde", - "wasm-bindgen", - "windows-targets 0.52.4", -] - -[[package]] -name = "ciborium" -version = "0.2.0" -source = "git+https://github.com/qrayven/ciborium?branch=feat-ser-null-as-undefined#5fbba76d132caf04cd1f271336d9daafdc747f10" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.0" -source = "git+https://github.com/qrayven/ciborium?branch=feat-ser-null-as-undefined#5fbba76d132caf04cd1f271336d9daafdc747f10" - -[[package]] -name = "ciborium-ll" -version = "0.2.0" -source = "git+https://github.com/qrayven/ciborium?branch=feat-ser-null-as-undefined#5fbba76d132caf04cd1f271336d9daafdc747f10" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "clang-sys" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" -dependencies = [ - "glob", - "libc", - "libloading", -] - -[[package]] -name = "const-oid" -version = "0.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" - -[[package]] -name = "constant_time_eq" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" - -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - -[[package]] -name = "cpufeatures" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" -dependencies = [ - "libc", -] - -[[package]] -name = "crc32fast" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "curve25519-dalek" -version = "4.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a677b8922c94e01bdbb12126b0bc852f00447528dee1782229af9c720c3f348" -dependencies = [ - "cfg-if", - "cpufeatures", - "curve25519-dalek-derive", - "digest", - "fiat-crypto", - "platforms", - "rustc_version", - "subtle", - "zeroize", -] - -[[package]] -name = "curve25519-dalek-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "dapi-grpc" -version = "1.0.0-dev.10" -dependencies = [ - "dapi-grpc-macros", - "futures-core", - "platform-version", - "prost 0.12.4", - "serde", - "serde_bytes", - "serde_json", - "tenderdash-proto", - "tonic", - "tonic-build", -] - -[[package]] -name = "dapi-grpc-macros" -version = "1.0.0-dev.10" -dependencies = [ - "heck 0.5.0", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "darling" -version = "0.20.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.20.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.58", -] - -[[package]] -name = "darling_macro" -version = "0.20.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" -dependencies = [ - "darling_core", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "dashcore" -version = "0.30.0" -source = "git+https://github.com/dashpay/rust-dashcore?branch=master#a29315dbe56729be1be963fb6f7b60a22288663f" -dependencies = [ - "anyhow", - "bech32", - "dashcore-private", - "dashcore_hashes", - "hex", - "hex_lit", - "rustversion", - "secp256k1", - "serde", -] - -[[package]] -name = "dashcore-private" -version = "0.1.0" -source = "git+https://github.com/dashpay/rust-dashcore?branch=master#a29315dbe56729be1be963fb6f7b60a22288663f" - -[[package]] -name = "dashcore-rpc" -version = "0.15.1" -source = "git+https://github.com/dashpay/rust-dashcore-rpc?tag=v0.15.2#9e596142f589d32a7347872b8f5c2b3b2ed54257" -dependencies = [ - "dashcore-private", - "dashcore-rpc-json", - "env_logger 0.10.2", - "hex", - "jsonrpc", - "log", - "serde", - "serde_json", -] - -[[package]] -name = "dashcore-rpc-json" -version = "0.15.1" -source = "git+https://github.com/dashpay/rust-dashcore-rpc?tag=v0.15.2#9e596142f589d32a7347872b8f5c2b3b2ed54257" -dependencies = [ - "bincode", - "dashcore", - "hex", - "serde", - "serde_json", - "serde_repr", - "serde_with", -] - -[[package]] -name = "dashcore_hashes" -version = "0.12.0" -source = "git+https://github.com/dashpay/rust-dashcore?branch=master#a29315dbe56729be1be963fb6f7b60a22288663f" -dependencies = [ - "dashcore-private", - "rs-x11-hash", - "secp256k1", - "serde", -] - -[[package]] -name = "dashpay-contract" -version = "1.0.0-dev.10" -dependencies = [ - "platform-value", - "platform-version", - "serde_json", - "thiserror", -] - -[[package]] -name = "data-contracts" -version = "1.0.0-dev.10" -dependencies = [ - "dashpay-contract", - "dpns-contract", - "feature-flags-contract", - "masternode-reward-shares-contract", - "platform-value", - "platform-version", - "serde_json", - "thiserror", - "withdrawals-contract", -] - -[[package]] -name = "der" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" -dependencies = [ - "const-oid", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" -dependencies = [ - "powerfmt", - "serde", -] - -[[package]] -name = "derive_more" -version = "0.99.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" -dependencies = [ - "convert_case", - "proc-macro2", - "quote", - "rustc_version", - "syn 1.0.109", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "dotenvy" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" - -[[package]] -name = "dpns-contract" -version = "1.0.0-dev.10" -dependencies = [ - "platform-value", - "platform-version", - "serde_json", - "thiserror", -] - -[[package]] -name = "dpp" -version = "1.0.0-dev.10" -dependencies = [ - "anyhow", - "async-trait", - "base64 0.22.0", - "bincode", - "bls-signatures", - "bs58 0.4.0", - "byteorder", - "chrono", - "ciborium", - "dashcore", - "data-contracts", - "derive_more", - "ed25519-dalek", - "env_logger 0.9.3", - "getrandom", - "hex", - "indexmap 2.2.6", - "integer-encoding", - "itertools 0.12.1", - "json-patch", - "jsonptr", - "jsonschema", - "lazy_static", - "log", - "nohash-hasher", - "num_enum", - "platform-serialization", - "platform-serialization-derive", - "platform-value", - "platform-version", - "platform-versioning", - "rand", - "regex", - "rust_decimal", - "rust_decimal_macros", - "serde", - "serde_json", - "serde_repr", - "sha2", - "strum", - "thiserror", -] - -[[package]] -name = "drive" -version = "1.0.0-dev.10" -dependencies = [ - "byteorder", - "dpp", - "grovedb", - "grovedb-costs", - "grovedb-path", - "indexmap 2.2.6", - "integer-encoding", - "nohash-hasher", - "platform-version", - "serde", - "sqlparser", - "thiserror", - "tracing", -] - -[[package]] -name = "drive-proof-verifier" -version = "1.0.0-dev.10" -dependencies = [ - "dapi-grpc", - "dpp", - "drive", - "hex", - "serde", - "serde_json", - "tenderdash-abci", - "thiserror", - "tracing", -] - -[[package]] -name = "ed" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9c8d6ea916fadcd87e3d1ff4802b696d717c83519b47e76f267ab77e536dd5a" -dependencies = [ - "ed-derive", - "thiserror", -] - -[[package]] -name = "ed-derive" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a91d774f4b861acaa791bc6165e66d72d3a5d1aa85fc8c0956f5580f863161" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "ed25519" -version = "2.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53" -dependencies = [ - "pkcs8", - "signature", -] - -[[package]] -name = "ed25519-dalek" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871" -dependencies = [ - "curve25519-dalek", - "ed25519", - "rand_core", - "serde", - "sha2", - "subtle", - "zeroize", -] - -[[package]] -name = "either" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" - -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "env_logger" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - -[[package]] -name = "envy" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" -dependencies = [ - "serde", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure", -] - -[[package]] -name = "fancy-regex" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531e46835a22af56d1e3b66f04844bed63158bc094a628bec1d321d9b4c44bf2" -dependencies = [ - "bit-set", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "fastrand" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" - -[[package]] -name = "feature-flags-contract" -version = "1.0.0-dev.10" -dependencies = [ - "platform-value", - "platform-version", - "serde_json", - "thiserror", -] - -[[package]] -name = "fiat-crypto" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c007b1ae3abe1cb6f85a16305acd418b7ca6343b953633fee2b76d8f108b830f" - -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - -[[package]] -name = "flate2" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "flex-error" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c606d892c9de11507fa0dcffc116434f94e105d0bbdc4e405b61519464c49d7b" -dependencies = [ - "paste", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fraction" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b486ab61634f05b11b591c38c71fb25139cb55e22be4fb6ecf649cc3736c074a" -dependencies = [ - "lazy_static", - "num", -] - -[[package]] -name = "fs_extra" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-executor", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", - "futures-sink", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-executor" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" - -[[package]] -name = "futures-macro" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-macro", - "futures-sink", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "getrandom" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "wasi", - "wasm-bindgen", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[package]] -name = "glob" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" - -[[package]] -name = "grovedb" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=f5a3382c5537de7417e983cdf2132792aa9fdc9d#f5a3382c5537de7417e983cdf2132792aa9fdc9d" -dependencies = [ - "bincode", - "grovedb-costs", - "grovedb-merk", - "grovedb-path", - "integer-encoding", - "thiserror", -] - -[[package]] -name = "grovedb-costs" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=f5a3382c5537de7417e983cdf2132792aa9fdc9d#f5a3382c5537de7417e983cdf2132792aa9fdc9d" -dependencies = [ - "integer-encoding", - "intmap", - "thiserror", -] - -[[package]] -name = "grovedb-merk" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=f5a3382c5537de7417e983cdf2132792aa9fdc9d#f5a3382c5537de7417e983cdf2132792aa9fdc9d" -dependencies = [ - "blake3", - "ed", - "failure", - "grovedb-costs", - "grovedb-path", - "grovedb-visualize", - "indexmap 2.2.6", - "integer-encoding", - "thiserror", -] - -[[package]] -name = "grovedb-path" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=f5a3382c5537de7417e983cdf2132792aa9fdc9d#f5a3382c5537de7417e983cdf2132792aa9fdc9d" - -[[package]] -name = "grovedb-visualize" -version = "1.0.0-rc.2" -source = "git+https://github.com/dashpay/grovedb?rev=f5a3382c5537de7417e983cdf2132792aa9fdc9d#f5a3382c5537de7417e983cdf2132792aa9fdc9d" -dependencies = [ - "hex", - "itertools 0.12.1", -] - -[[package]] -name = "h2" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 2.2.6", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "half" -version = "1.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.8", -] - -[[package]] -name = "hashbrown" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" -dependencies = [ - "ahash 0.8.11", - "allocator-api2", -] - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hex" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hex_lit" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3011d1213f159867b13cfd6ac92d2cd5f1345762c63be3554e84092d85a50bbd" - -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys 0.52.0", -] - -[[package]] -name = "http" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "humantime" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" - -[[package]] -name = "hyper" -version = "0.14.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-timeout" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" -dependencies = [ - "hyper", - "pin-project-lite", - "tokio", - "tokio-io-timeout", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "ident_case" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", - "serde", -] - -[[package]] -name = "indexmap" -version = "2.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" -dependencies = [ - "equivalent", - "hashbrown 0.14.3", -] - -[[package]] -name = "integer-encoding" -version = "4.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924df4f0e24e2e7f9cdd90babb0b96f93b20f3ecfa949ea9e6613756b8c8e1bf" - -[[package]] -name = "intmap" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee87fd093563344074bacf24faa0bb0227fb6969fb223e922db798516de924d6" - -[[package]] -name = "is-terminal" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" -dependencies = [ - "hermit-abi 0.3.9", - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "iso8601" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" -dependencies = [ - "nom", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "itertools" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" -dependencies = [ - "either", -] - -[[package]] -name = "itoa" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" - -[[package]] -name = "js-sys" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "json-patch" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3fa5a61630976fc4c353c70297f2e93f1930e3ccee574d59d618ccbd5154ce" -dependencies = [ - "serde", - "serde_json", - "treediff 3.0.2", -] - -[[package]] -name = "jsonptr" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e7a1ae7fc3e87c05f7a3de7e51083f62cdafcd9fed52cffebca22819a8f799" -dependencies = [ - "serde", - "serde_json", - "uniresid", - "url", -] - -[[package]] -name = "jsonrpc" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8128f36b47411cd3f044be8c1f5cc0c9e24d1d1bfdc45f0a57897b32513053f2" -dependencies = [ - "base64 0.13.1", - "serde", - "serde_json", -] - -[[package]] -name = "jsonschema" -version = "0.15.0" -source = "git+https://github.com/fominok/jsonschema-rs?branch=feat-unevaluated-properties#bb4800c8bb00803e088ac6ca724116d4fda12efe" -dependencies = [ - "ahash 0.8.11", - "anyhow", - "base64 0.22.0", - "bytecount", - "fancy-regex", - "fraction", - "iso8601", - "itoa", - "lazy_static", - "memchr", - "num-cmp", - "parking_lot", - "percent-encoding", - "regex", - "serde", - "serde_json", - "time", - "url", - "uuid", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - -[[package]] -name = "lhash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744a4c881f502e98c2241d2e5f50040ac73b30194d64452bb6260393b53f0dc9" - -[[package]] -name = "libc" -version = "0.2.153" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" - -[[package]] -name = "libloading" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" -dependencies = [ - "cfg-if", - "windows-targets 0.52.4", -] - -[[package]] -name = "linux-raw-sys" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" - -[[package]] -name = "lock_api" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" - -[[package]] -name = "lru" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" -dependencies = [ - "hashbrown 0.14.3", -] - -[[package]] -name = "masternode-reward-shares-contract" -version = "1.0.0-dev.10" -dependencies = [ - "platform-value", - "platform-version", - "serde_json", - "thiserror", -] - -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - -[[package]] -name = "memchr" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "miniz_oxide" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - -[[package]] -name = "multimap" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" - -[[package]] -name = "murmur3" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9252111cf132ba0929b6f8e030cac2a24b507f3a4d6db6fb2896f27b354c714b" - -[[package]] -name = "nohash-hasher" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "num" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" -dependencies = [ - "num-bigint", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", -] - -[[package]] -name = "num-bigint" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-cmp" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63335b2e2c34fae2fb0aa2cecfd9f0832a1e24b3b32ecec612c3426d46dc8aaa" - -[[package]] -name = "num-complex" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - -[[package]] -name = "num-iter" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-bigint", - "num-integer", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_enum" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" -dependencies = [ - "num_enum_derive", -] - -[[package]] -name = "num_enum_derive" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" -dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.48.5", -] - -[[package]] -name = "paste" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" - -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "petgraph" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" -dependencies = [ - "fixedbitset", - "indexmap 2.2.6", -] - -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkcs8" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" -dependencies = [ - "der", - "spki", -] - -[[package]] -name = "platform-serialization" -version = "1.0.0-dev.10" -dependencies = [ - "bincode", - "platform-version", -] - -[[package]] -name = "platform-serialization-derive" -version = "1.0.0-dev.10" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", - "virtue 0.0.14", -] - -[[package]] -name = "platform-value" -version = "1.0.0-dev.10" -dependencies = [ - "base64 0.22.0", - "bincode", - "bs58 0.5.1", - "ciborium", - "hex", - "indexmap 2.2.6", - "lazy_static", - "platform-serialization", - "platform-version", - "rand", - "regex", - "serde", - "serde_json", - "thiserror", - "treediff 5.0.0", -] - -[[package]] -name = "platform-version" -version = "1.0.0-dev.10" -dependencies = [ - "thiserror", -] - -[[package]] -name = "platform-versioning" -version = "1.0.0-dev.10" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "platforms" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db23d408679286588f4d4644f965003d056e3dd5abcaaa938116871d7ce2fee7" - -[[package]] -name = "powerfmt" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" - -[[package]] -name = "ppv-lite86" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" - -[[package]] -name = "prettyplease" -version = "0.1.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" -dependencies = [ - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "prettyplease" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d3928fb5db768cb86f891ff014f0144589297e3c6a1aba6ed7cecfdace270c7" -dependencies = [ - "proc-macro2", - "syn 2.0.58", -] - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-crate" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" -dependencies = [ - "toml_edit 0.21.1", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "prost" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" -dependencies = [ - "bytes", - "prost-derive 0.11.9", -] - -[[package]] -name = "prost" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0f5d036824e4761737860779c906171497f6d55681139d8312388f8fe398922" -dependencies = [ - "bytes", - "prost-derive 0.12.4", -] - -[[package]] -name = "prost-build" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" -dependencies = [ - "bytes", - "heck 0.4.1", - "itertools 0.10.5", - "lazy_static", - "log", - "multimap 0.8.3", - "petgraph", - "prettyplease 0.1.25", - "prost 0.11.9", - "prost-types 0.11.9", - "regex", - "syn 1.0.109", - "tempfile", - "which", -] - -[[package]] -name = "prost-build" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b776a1b2dc779f5ee0641f8ade0125bc1298dd41a9a0c16d8bd57b42d222b1" -dependencies = [ - "bytes", - "heck 0.5.0", - "itertools 0.12.1", - "log", - "multimap 0.10.0", - "once_cell", - "petgraph", - "prettyplease 0.2.17", - "prost 0.12.4", - "prost-types 0.12.4", - "regex", - "syn 2.0.58", - "tempfile", -] - -[[package]] -name = "prost-derive" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" -dependencies = [ - "anyhow", - "itertools 0.10.5", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "prost-derive" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19de2de2a00075bf566bee3bd4db014b11587e84184d3f7a791bc17f1a8e9e48" -dependencies = [ - "anyhow", - "itertools 0.12.1", - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "prost-types" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213622a1460818959ac1181aaeb2dc9c7f63df720db7d788b3e24eacd1983e13" -dependencies = [ - "prost 0.11.9", -] - -[[package]] -name = "prost-types" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3235c33eb02c1f1e212abdbe34c78b264b038fb58ca612664343271e36e55ffe" -dependencies = [ - "prost 0.12.4", -] - -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "quote" -version = "1.0.36" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "libc", - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" -dependencies = [ - "getrandom", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "regex" -version = "1.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" - -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] - -[[package]] -name = "ring" -version = "0.17.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" -dependencies = [ - "cc", - "cfg-if", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys 0.52.0", -] - -[[package]] -name = "rkyv" -version = "0.7.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "rs-dapi-client" -version = "1.0.0-dev.10" -dependencies = [ - "backon", - "chrono", - "dapi-grpc", - "futures", - "hex", - "http", - "rand", - "sha2", - "thiserror", - "tokio", - "tracing", -] - -[[package]] -name = "rs-sdk" -version = "1.0.0-dev.10" -dependencies = [ - "async-trait", - "bincode", - "bip37-bloom-filter", - "ciborium", - "dapi-grpc", - "dapi-grpc-macros", - "dashcore-rpc", - "derive_more", - "dotenvy", - "dpp", - "drive", - "drive-proof-verifier", - "envy", - "futures", - "hex", - "http", - "lru", - "rs-dapi-client", - "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "rs-sdk-bindings-simple" -version = "0.1.0" -dependencies = [ - "rs-sdk", -] - -[[package]] -name = "rs-x11-hash" -version = "0.1.8" -dependencies = [ - "bindgen", - "cc", - "libc", -] - -[[package]] -name = "rust_decimal" -version = "1.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" -dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "rand", - "rkyv", - "serde", - "serde_json", -] - -[[package]] -name = "rust_decimal_macros" -version = "1.34.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e418701588729bef95e7a655f2b483ad64bb97c46e8e79fde83efd92aaab6d82" -dependencies = [ - "quote", - "rust_decimal", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" -dependencies = [ - "bitflags 2.5.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "rustls" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c" -dependencies = [ - "log", - "ring", - "rustls-pki-types", - "rustls-webpki", - "subtle", - "zeroize", -] - -[[package]] -name = "rustls-pki-types" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" - -[[package]] -name = "rustls-webpki" -version = "0.102.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" -dependencies = [ - "ring", - "rustls-pki-types", - "untrusted", -] - -[[package]] -name = "rustversion" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" - -[[package]] -name = "ryu" -version = "1.0.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - -[[package]] -name = "secp256k1" -version = "0.27.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25996b82292a7a57ed3508f052cfff8640d38d32018784acd714758b43da9c8f" -dependencies = [ - "bitcoin_hashes", - "rand", - "secp256k1-sys", - "serde", -] - -[[package]] -name = "secp256k1-sys" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a129b9e9efbfb223753b9163c4ab3b13cff7fd9c7f010fbac25ab4099fa07e" -dependencies = [ - "cc", -] - -[[package]] -name = "semver" -version = "1.0.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" - -[[package]] -name = "serde" -version = "1.0.197" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_bytes" -version = "0.11.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.197" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "serde_json" -version = "1.0.115" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" -dependencies = [ - "indexmap 2.2.6", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_repr" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "serde_with" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ff71d2c147a7b57362cead5e22f772cd52f6ab31cfcd9edcd7f6aeb2a0afbe" -dependencies = [ - "base64 0.13.1", - "chrono", - "hex", - "indexmap 1.9.3", - "serde", - "serde_json", - "serde_with_macros", - "time", -] - -[[package]] -name = "serde_with_macros" -version = "2.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" -dependencies = [ - "darling", - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "shlex" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" - -[[package]] -name = "signature" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" -dependencies = [ - "rand_core", -] - -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" - -[[package]] -name = "socket2" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "spki" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d" -dependencies = [ - "base64ct", - "der", -] - -[[package]] -name = "sqlparser" -version = "0.38.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0272b7bb0a225320170c99901b4b5fb3a4384e255a7f2cc228f61e2ba3893e75" -dependencies = [ - "log", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.25.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.58", -] - -[[package]] -name = "subtle" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" - -[[package]] -name = "subtle-encoding" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dcb1ed7b8330c5eed5441052651dd7a12c75e2ed88f2ec024ae1fa3a5e59945" -dependencies = [ - "zeroize", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - -[[package]] -name = "tempfile" -version = "3.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" -dependencies = [ - "cfg-if", - "fastrand", - "rustix", - "windows-sys 0.52.0", -] - -[[package]] -name = "tenderdash-abci" -version = "0.14.0-dev.12" -source = "git+https://github.com/dashpay/rs-tenderdash-abci#17e57f509c2bb7015042d69976bd1f056fef923d" -dependencies = [ - "bytes", - "hex", - "lhash", - "prost 0.12.4", - "semver", - "serde_json", - "tenderdash-proto", - "thiserror", - "tracing", - "url", -] - -[[package]] -name = "tenderdash-proto" -version = "0.14.0-dev.12" -source = "git+https://github.com/dashpay/rs-tenderdash-abci#17e57f509c2bb7015042d69976bd1f056fef923d" -dependencies = [ - "bytes", - "chrono", - "derive_more", - "flex-error", - "num-derive", - "num-traits", - "prost 0.12.4", - "prost-types 0.12.4", - "serde", - "subtle-encoding", - "tenderdash-proto-compiler", - "time", -] - -[[package]] -name = "tenderdash-proto-compiler" -version = "0.14.0-dev.12" -source = "git+https://github.com/dashpay/rs-tenderdash-abci#17e57f509c2bb7015042d69976bd1f056fef923d" -dependencies = [ - "fs_extra", - "prost-build 0.12.4", - "regex", - "tempfile", - "ureq", - "walkdir", - "zip", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "thiserror" -version = "1.0.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.58" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "time" -version = "0.3.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef89ece63debf11bc32d1ed8d078ac870cbeb44da02afb02a9ff135ae7ca0582" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" - -[[package]] -name = "time-macros" -version = "0.2.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" -dependencies = [ - "num-conv", - "time-core", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "pin-project-lite", - "socket2", - "tokio-macros", - "windows-sys 0.48.0", -] - -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "tokio-stream" -version = "0.1.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "toml_datetime" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tonic" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" -dependencies = [ - "async-stream", - "async-trait", - "axum", - "base64 0.21.7", - "bytes", - "h2", - "http", - "http-body", - "hyper", - "hyper-timeout", - "percent-encoding", - "pin-project", - "prost 0.12.4", - "tokio", - "tokio-stream", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tonic-build" -version = "0.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" -dependencies = [ - "prettyplease 0.1.25", - "proc-macro2", - "prost-build 0.11.9", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "git+https://github.com/QuantumExplorer/tower?branch=fix/indexMap2OnV0413#5286f8c605d10f48d51254f2434c5ab3fc5d7779" -dependencies = [ - "futures-core", - "futures-util", - "indexmap 2.2.6", - "pin-project", - "pin-project-lite", - "rand", - "slab", - "tokio", - "tokio-util", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "git+https://github.com/QuantumExplorer/tower?branch=fix/indexMap2OnV0413#5286f8c605d10f48d51254f2434c5ab3fc5d7779" - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "git+https://github.com/QuantumExplorer/tower?branch=fix/indexMap2OnV0413#5286f8c605d10f48d51254f2434c5ab3fc5d7779" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "treediff" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "761e8d5ad7ce14bb82b7e61ccc0ca961005a275a060b9644a2431aa11553c2ff" -dependencies = [ - "serde_json", -] - -[[package]] -name = "treediff" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2ce481b2b7c2534fe7b5242cccebf37f9084392665c6a3783c414a1bada5432" - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "uniresid" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995a4007fbec4f43386ea1b1d81d42d986a0c9616378e9aa4a96f45ea661e1b0" -dependencies = [ - "once_cell", - "serde", - "thiserror", - "url", -] - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "ureq" -version = "2.9.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11f214ce18d8b2cbe84ed3aa6486ed3f5b285cf8d8fbdbce9f3f767a724adc35" -dependencies = [ - "base64 0.21.7", - "flate2", - "log", - "once_cell", - "rustls", - "rustls-pki-types", - "rustls-webpki", - "url", - "webpki-roots", -] - -[[package]] -name = "url" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "uuid" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "virtue" -version = "0.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dcc60c0624df774c82a0ef104151231d37da4962957d691c011c852b2473314" - -[[package]] -name = "virtue" -version = "0.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b522f715ead3537dc57c9907899a08e461a8f1e87fc8414a4a89bbd9854289ff" - -[[package]] -name = "walkdir" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.58", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - -[[package]] -name = "webpki-roots" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" -dependencies = [ - "rustls-pki-types", -] - -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.4", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" -dependencies = [ - "windows-targets 0.52.4", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" -dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" - -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - -[[package]] -name = "withdrawals-contract" -version = "1.0.0-dev.10" -dependencies = [ - "num_enum", - "platform-value", - "platform-version", - "serde", - "serde_json", - "serde_repr", - "thiserror", -] - -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - -[[package]] -name = "zerocopy" -version = "0.7.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.7.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.58", -] - -[[package]] -name = "zeroize" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" - -[[package]] -name = "zip" -version = "0.6.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" -dependencies = [ - "byteorder", - "crc32fast", - "crossbeam-utils", - "flate2", -] diff --git a/dashj-platform-android-simple/src/main/rust/Cargo.toml b/dashj-platform-android-simple/src/main/rust/Cargo.toml deleted file mode 100644 index 2345f0e..0000000 --- a/dashj-platform-android-simple/src/main/rust/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "rs-sdk-bindings-simple" -version = "0.1.0" -edition = "2021" - -[dependencies] -rs-sdk = { path = "../../../../../platform-upstream/packages/rs-sdk" } - -[lib] -name = "rssdkbindings" -crate-type = ["cdylib"] - -[patch.crates-io] -tower-service = { git = "https://github.com/QuantumExplorer/tower", branch = "fix/indexMap2OnV0413" } -tower-layer = { git = "https://github.com/QuantumExplorer/tower", branch = "fix/indexMap2OnV0413" } -tower = { git = "https://github.com/QuantumExplorer/tower", branch = "fix/indexMap2OnV0413" } -rs-x11-hash = { path = "../../../../../rs-x11-hash" } \ No newline at end of file diff --git a/dashj-platform-android-simple/src/main/rust/README.md b/dashj-platform-android-simple/src/main/rust/README.md deleted file mode 100644 index c878907..0000000 --- a/dashj-platform-android-simple/src/main/rust/README.md +++ /dev/null @@ -1 +0,0 @@ -# platform-mobile \ No newline at end of file diff --git a/dashj-platform-android-simple/src/main/rust/build.backup b/dashj-platform-android-simple/src/main/rust/build.backup deleted file mode 100644 index ee7568d..0000000 --- a/dashj-platform-android-simple/src/main/rust/build.backup +++ /dev/null @@ -1,27 +0,0 @@ -use std::{env, path::{Path, PathBuf}}; - -fn main() { - if env::var("CARGO_CFG_TARGET_OS").unwrap() == "android" { - android(); - } -} - -fn android() { - println!("cargo:rustc-link-lib=c++_shared"); - - env::set_var("ANDROID_PLATFORM", "android-24"); - - - if let Ok(output_path) = env::var("CARGO_NDK_OUTPUT_PATH") { - let sysroot_libs_path = - PathBuf::from(env::var_os("CARGO_NDK_SYSROOT_LIBS_PATH").unwrap()); - let lib_path = sysroot_libs_path.join("libc++_shared.so"); - std::fs::copy( - lib_path, - Path::new(&output_path) - .join(&env::var("CARGO_NDK_ANDROID_TARGET").unwrap()) - .join("libc++_shared.so"), - ) - .unwrap(); - } -} \ No newline at end of file diff --git a/dashj-platform-android-simple/src/main/rust/src/lib.rs b/dashj-platform-android-simple/src/main/rust/src/lib.rs deleted file mode 100644 index 42351c5..0000000 --- a/dashj-platform-android-simple/src/main/rust/src/lib.rs +++ /dev/null @@ -1,41 +0,0 @@ -//mod fermented; - -use std::env; - -pub fn get_env() { - env::var("CARGO_FEATURE_STD").unwrap(); -} - -use std::fs::File; -use std::io::{self, Read, Write}; -use std::path::Path; - -pub fn mymain() -> io::Result<()> { - let path = Path::new("hello.txt"); - let message = "Hello, Rustaceans!"; - - // Writing to a file - { - let mut file = File::create(&path)?; - file.write_all(message.as_bytes())?; - } - - // Reading from a file - { - let mut file = File::open(&path)?; - let mut contents = String::new(); - file.read_to_string(&mut contents)?; - println!("File contents: {}", contents); - } - - // Clean up - std::fs::remove_file(&path)?; - - Ok(()) -} -use rs_sdk::dpp::identity::IdentityV0; -use rs_sdk::platform::Identity; - -pub fn get_default_identity() -> Identity { - Identity::V0(IdentityV0::default()) -} \ No newline at end of file diff --git a/dpp/build.gradle b/dpp/build.gradle index d9c3931..d88c13e 100644 --- a/dpp/build.gradle +++ b/dpp/build.gradle @@ -206,6 +206,13 @@ tasks.withType(Copy) { duplicatesStrategy = DuplicatesStrategy.EXCLUDE } +tasks.withType(io.gitlab.arturbosch.detekt.Detekt).configureEach { + onlyIf { !project.hasProperty('skipDetekt') } +} +tasks.withType(io.gitlab.arturbosch.detekt.DetektCreateBaselineTask).configureEach { + onlyIf { !project.hasProperty('skipDetekt') } +} + assemble.dependsOn(publishToMavenLocal) assemble.dependsOn(sourcesJar) // apply from: 'ktlint.gradle' \ No newline at end of file diff --git a/platform-mobile/Cargo.lock b/platform-mobile/Cargo.lock index a2ba5f2..e6a12f3 100644 --- a/platform-mobile/Cargo.lock +++ b/platform-mobile/Cargo.lock @@ -2782,7 +2782,7 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "platform-mobile" -version = "2.0.4" +version = "2.0.5" dependencies = [ "async-trait", "base64 0.13.1", diff --git a/platform-mobile/Cargo.toml b/platform-mobile/Cargo.toml index bcbe14f..6b4575e 100644 --- a/platform-mobile/Cargo.toml +++ b/platform-mobile/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "platform-mobile" -version = "2.0.4" +version = "2.0.5" edition = "2021" [dependencies] diff --git a/platform-mobile/src/config.rs b/platform-mobile/src/config.rs index 1634b8e..deaffd4 100644 --- a/platform-mobile/src/config.rs +++ b/platform-mobile/src/config.rs @@ -27,36 +27,41 @@ use crate::logs::setup_logs; use crate::provider::{Cache, CallbackContextProvider}; use crate::sdk::DashSdk; -pub const TESTNET_ADDRESS_LIST: [&str; 24] = [ - "34.214.48.68", - "35.166.18.166", - "52.12.176.90", - "35.167.145.149", - "52.34.144.50", - "44.240.98.102", - "54.201.32.131", - "52.10.229.11", - "52.13.132.146", - "44.228.242.181", - "35.82.197.197", - "52.40.219.41", - "44.239.39.153", - "54.149.33.167", - "35.164.23.245", - "52.33.28.47", - "52.43.86.231", - "52.43.13.92", - "52.89.154.48", - "52.24.124.162", - "44.227.137.77", - "35.85.21.179", - "54.187.14.232", - "54.68.235.201" +pub const TESTNET_ADDRESS_LIST: [&str; 29] = [ + "68.67.122.1", + "68.67.122.2", + "68.67.122.3", + "68.67.122.4", + "68.67.122.5", + "68.67.122.6", + "68.67.122.7", + "68.67.122.8", + "68.67.122.9", + "68.67.122.10", + "68.67.122.11", + "68.67.122.12", + "68.67.122.13", + "68.67.122.14", + "68.67.122.15", + "68.67.122.16", + "68.67.122.17", + "68.67.122.18", + "68.67.122.19", + "68.67.122.20", + "68.67.122.21", + "68.67.122.22", + "68.67.122.23", + "68.67.122.24", + "68.67.122.25", + "68.67.122.26", + "68.67.122.27", + "68.67.122.28", + "68.67.122.29" ]; -pub const MAINNET_ADDRESS_LIST: [&str; 170] = [ - "147.45.183.128", "134.255.182.186", "93.115.172.39", "5.189.164.253", "38.242.197.189", "83.222.9.253", "66.245.196.52", "202.71.14.79", "185.252.234.238", "178.215.237.134", "207.180.233.6", "136.244.99.17", "173.212.232.90", "157.90.238.161", "23.88.63.58", "207.244.247.40", "45.32.70.131", "52.33.9.172", "109.199.124.30", "185.198.234.17", "139.84.236.208", "38.242.218.26", "194.146.13.7", "75.119.153.10", "44.240.99.214", "5.75.133.148", "89.35.131.149", "192.248.178.237", "161.97.153.122", "195.26.254.228", "45.76.36.241", "147.45.103.99", "85.193.90.107", "194.195.87.34", "65.108.246.145", "158.247.247.241", "139.180.143.115", "213.199.44.112", "51.79.109.200", "178.253.42.64", "162.212.35.100", "173.212.196.214", "134.255.182.185", "51.79.109.182", "161.97.91.217", "217.25.89.156", "173.212.239.124", "144.126.141.62", "173.249.21.12", "161.97.159.172", "5.189.186.78", "139.84.170.10", "164.68.118.37", "192.248.175.198", "81.200.152.144", "43.167.244.109", "92.53.120.89", "172.236.244.81", "157.173.122.20", "45.153.70.126", "57.128.212.163", "185.141.216.4", "82.208.20.153", "156.67.29.45", "82.211.21.38", "93.115.172.37", "15.235.102.216", "89.35.131.39", "93.115.172.38", "134.255.183.250", "185.192.96.70", "134.255.183.248", "52.36.102.91", "139.99.201.103", "134.255.183.247", "49.13.28.255", "161.97.74.173", "168.119.102.10", "45.135.180.79", "45.135.180.130", "173.212.251.130", "38.242.206.103", "49.13.237.193", "75.119.156.254", "37.27.83.17", "45.135.180.114", "89.35.131.23", "38.242.206.56", "89.35.131.219", "185.166.217.154", "31.220.88.116", "157.173.122.21", "38.242.200.227", "193.168.3.82", "167.86.93.21", "51.195.47.118", "45.135.180.70", "167.88.169.16", "91.222.237.98", "157.173.122.26", "82.211.21.18", "52.10.213.198", "51.79.109.199", "45.94.58.58", "198.7.115.38", "37.60.244.220", "49.13.193.251", "77.232.129.86", "167.86.94.138", "198.27.68.167", "89.23.112.100", "95.179.241.182", "92.63.176.202", "188.225.39.14", "176.57.213.170", "93.115.172.36", "82.211.21.16", "95.216.146.18", "167.114.153.110", "31.220.84.93", "185.197.250.227", "161.97.91.68", "162.250.188.207", "45.85.147.192", "158.220.101.10", "93.190.140.101", "95.171.21.131", "85.92.111.111", "5.189.151.7", "64.176.35.235", "185.215.164.186", "161.97.102.156", "49.12.102.105", "147.45.236.121", "54.69.95.118", "15.235.102.215", "82.211.21.169", "195.201.238.55", "135.181.110.216", "207.180.213.141", "89.223.120.216", "45.76.141.74", "161.97.66.31", "84.247.187.76", "188.245.90.255", "43.167.239.145", "75.119.137.66", "178.18.254.136", "157.173.122.25", "82.211.21.40", "62.171.170.14", "45.77.129.235", "185.209.230.13", "75.119.152.219", "89.23.117.144", "37.60.243.59", "192.99.232.138", "89.35.131.218", "5.189.145.80", "178.18.244.255", "77.221.148.204", "207.180.218.245", "158.220.101.28", "185.215.166.126", "164.132.55.103", "162.250.190.133", "89.35.131.158", "82.97.240.124", "213.159.77.221", "114.132.172.215" +pub const MAINNET_ADDRESS_LIST: [&str; 127] = [ + "216.238.75.46", "194.163.172.206", "89.125.209.110", "84.247.180.201", "134.255.182.186", "93.115.172.39", "5.189.164.253", "161.97.165.115", "38.242.197.189", "95.111.241.20", "66.245.196.52", "173.212.245.118", "202.71.14.79", "185.252.234.238", "207.180.233.6", "89.125.209.69", "136.244.99.17", "173.212.232.90", "37.60.244.253", "157.90.238.161", "213.199.54.171", "84.247.180.198", "132.243.197.252", "161.97.75.36", "23.88.63.58", "207.244.247.40", "45.32.70.131", "31.220.91.43", "52.33.9.172", "161.97.88.199", "109.199.124.30", "185.198.234.17", "139.84.236.208", "38.242.218.26", "207.180.224.96", "62.171.170.222", "103.214.68.30", "75.119.153.10", "31.220.91.60", "132.243.197.251", "95.179.159.65", "44.240.99.214", "5.75.133.148", "213.199.54.37", "161.97.88.219", "89.35.131.149", "192.248.178.237", "161.97.153.122", "37.60.235.218", "207.180.241.242", "195.26.254.228", "45.76.36.241", "45.77.11.194", "139.84.232.129", "161.97.175.233", "104.156.154.179", "89.125.209.195", "161.97.176.38", "91.198.108.35", "161.97.180.105", "109.199.105.14", "213.199.54.34", "65.108.246.145", "64.176.10.71", "158.247.247.241", "37.60.254.213", "149.102.140.101", "139.180.143.115", "37.60.235.205", "213.199.44.112", "213.199.53.161", "162.212.35.100", "185.239.209.6", "173.212.196.214", "37.60.254.202", "134.255.182.185", "206.245.167.76", "31.220.77.84", "139.84.137.143", "144.91.87.82", "161.97.120.156", "161.97.91.217", "132.243.197.249", "62.171.168.44", "194.163.159.171", "80.240.19.200", "144.126.141.62", "173.249.21.12", "161.97.159.172", "194.163.156.190", "139.84.170.10", "164.68.118.37", "62.171.171.253", "143.198.145.184", "84.247.180.200", "37.60.234.205", "43.133.171.101", "192.248.175.198", "161.97.142.210", "43.167.244.109", "146.59.45.235", "172.236.244.81", "62.171.144.192", "193.70.43.172", "84.247.180.190", "185.215.164.84", "75.119.138.9", "172.238.7.25", "157.173.122.20", "82.208.20.153", "95.111.239.54", "85.190.243.3", "51.195.235.166", "156.67.29.45", "132.243.197.38", "93.115.172.37", "89.35.131.39", "93.115.172.38", "161.97.104.37", "75.119.128.71", "161.97.117.125", "49.13.28.255", "95.111.242.220", "52.36.102.91", "139.99.201.103", "109.199.120.79", "161.97.74.173" ]; #[ferment_macro::export] diff --git a/platform-mobile/src/fetch_document.rs b/platform-mobile/src/fetch_document.rs index b4e88eb..4a42d51 100644 --- a/platform-mobile/src/fetch_document.rs +++ b/platform-mobile/src/fetch_document.rs @@ -448,41 +448,194 @@ fn doc_deserialization_sdk_test() { pub const ADDRESS_LIST: [&str; 29] = [ - "34.214.48.68", - "35.166.18.166", - "50.112.227.38", - "52.42.202.128", - "52.12.176.90", - "44.233.44.95", - "35.167.145.149", - "52.34.144.50", - "44.240.98.102", - "54.201.32.131", - "52.10.229.11", - "52.13.132.146", - "44.228.242.181", - "35.82.197.197", - "52.40.219.41", - "44.239.39.153", - "54.149.33.167", - "35.164.23.245", - "52.33.28.47", - "52.43.86.231", - "52.43.13.92", - "35.163.144.230", - "52.89.154.48", - "52.24.124.162", - "44.227.137.77", - "35.85.21.179", - "54.187.14.232", - "54.68.235.201", - "52.13.250.182", + "68.67.122.1", + "68.67.122.2", + "68.67.122.3", + "68.67.122.4", + "68.67.122.5", + "68.67.122.6", + "68.67.122.7", + "68.67.122.8", + "68.67.122.9", + "68.67.122.10", + "68.67.122.11", + "68.67.122.12", + "68.67.122.13", + "68.67.122.14", + "68.67.122.15", + "68.67.122.16", + "68.67.122.17", + "68.67.122.18", + "68.67.122.19", + "68.67.122.20", + "68.67.122.21", + "68.67.122.22", + "68.67.122.23", + "68.67.122.24", + "68.67.122.25", + "68.67.122.26", + "68.67.122.27", + "68.67.122.28", + "68.67.122.29" ]; -const MAINNET_ADDRESS_LIST: [&str; 331] = ["149.28.241.190", "147.45.183.128", "216.238.75.46", "167.17.40.14", "198.7.115.48", "134.255.182.186", "93.115.172.39", "5.189.164.253", "38.242.197.189", "83.222.9.253", "66.245.196.52", "173.212.245.118", "202.71.14.79", "95.179.240.182", "188.225.82.165", "185.252.234.238", "178.215.237.134", "207.180.233.6", "167.17.40.95", "136.244.99.17", "173.212.232.90", "178.215.237.135", "5.182.33.231", "157.90.238.161", "109.199.104.243", "37.60.236.212", "23.88.63.58", "207.244.247.40", "45.32.70.131", "158.220.122.76", "52.33.9.172", "178.157.91.177", "194.163.166.185", "109.199.124.30", "185.198.234.17", "139.84.236.208", "38.242.218.26", "194.163.153.225", "194.146.13.7", "65.108.4.213", "158.247.208.247", "75.119.153.10", "75.119.132.2", "65.108.74.95", "65.109.114.211", "44.240.99.214", "5.75.133.148", "65.108.0.153", "62.84.182.155", "89.35.131.149", "192.248.178.237", "161.97.153.122", "95.179.159.65", "217.77.12.102", "195.26.254.228", "45.76.36.241", "45.77.11.194", "139.84.232.129", "147.45.103.99", "202.71.14.154", "46.254.241.7", "85.193.90.107", "194.195.87.34", "85.239.244.103", "65.108.246.145", "64.176.10.71", "158.247.247.241", "194.163.170.55", "95.179.234.163", "65.108.0.151", "5.252.55.187", "139.180.143.115", "198.7.119.139", "213.199.44.112", "155.138.220.69", "51.79.109.200", "209.145.48.154", "178.253.42.64", "162.212.35.100", "185.239.209.6", "37.27.67.154", "173.212.196.214", "157.173.113.158", "134.255.182.185", "91.199.149.177", "51.79.109.182", "139.84.137.143", "144.91.87.82", "161.97.91.217", "217.25.89.156", "65.109.114.215", "173.212.239.124", "144.126.141.62", "173.249.21.12", "161.97.159.172", "5.189.186.78", "139.84.170.10", "164.68.118.37", "65.109.108.141", "158.220.92.144", "65.108.4.196", "192.248.175.198", "65.21.237.225", "188.225.56.52", "81.200.152.144", "43.167.244.109", "146.59.45.235", "37.27.67.159", "92.53.120.89", "172.236.244.81", "62.171.144.192", "146.59.153.204", "37.60.236.225", "185.215.164.84", "172.233.66.70", "157.173.122.20", "45.153.70.126", "57.128.212.163", "185.141.216.4", "82.208.20.153", "85.190.243.3", "51.195.235.166", "92.53.119.105", "95.111.239.54", "156.67.29.45", "82.211.21.38", "93.115.172.37", "15.235.102.216", "65.109.108.138", "89.35.131.39", "93.115.172.38", "134.255.183.250", "185.192.96.70", "134.255.183.248", "52.36.102.91", "139.99.201.103", "134.255.183.247", "65.109.108.139", "49.13.28.255", "213.199.34.250", "161.97.74.173", "168.119.102.10", "45.135.180.79", "45.135.180.130", "173.212.251.130", "38.242.206.103", "157.173.122.157", "65.109.108.150", "49.13.237.193", "75.119.156.254", "37.27.83.17", "45.135.180.114", "89.35.131.61", "86.107.101.74", "173.212.239.247", "157.173.202.14", "177.93.141.60", "89.35.131.23", "65.109.108.142", "38.242.198.100", "192.175.127.198", "37.27.67.163", "38.242.206.56", "5.252.55.190", "198.7.115.43", "70.34.206.123", "51.158.169.237", "65.108.74.78", "157.173.122.158", "108.61.165.170", "89.35.131.219", "185.166.217.154", "31.220.88.116", "157.173.122.21", "37.27.67.164", "217.77.12.101", "38.242.200.227", "193.168.3.82", "5.252.55.189", "167.86.93.21", "195.26.241.252", "65.108.0.150", "161.97.170.251", "51.195.47.118", "45.135.180.70", "167.88.169.16", "216.238.99.9", "62.169.17.112", "91.222.237.98", "157.173.122.26", "82.211.21.18", "52.10.213.198", "51.79.109.199", "139.84.231.221", "65.108.0.149", "37.252.17.214", "45.94.58.58", "198.7.115.38", "37.60.236.161", "37.60.244.220", "49.13.193.251", "77.232.129.86", "46.254.241.9", "65.109.114.236", "167.86.94.138", "198.27.68.167", "89.23.112.100", "65.108.74.75", "192.95.32.205", "95.179.241.182", "92.63.176.202", "65.109.84.204", "188.225.39.14", "65.109.84.203", "176.57.213.170", "93.115.172.36", "82.211.21.16", "158.220.89.188", "95.216.146.18", "167.114.153.110", "89.250.75.61", "185.194.216.84", "158.220.87.156", "31.220.84.93", "185.197.250.227", "161.97.91.68", "93.115.172.72", "162.250.188.207", "65.108.4.195", "149.28.247.165", "45.85.147.192", "157.173.122.156", "213.199.34.251", "158.220.101.10", "93.190.140.101", "95.171.21.131", "142.132.160.64", "85.92.111.111", "185.198.234.12", "87.228.24.64", "5.189.151.7", "38.242.231.212", "64.176.35.235", "38.143.58.210", "185.215.164.186", "161.97.102.156", "167.17.40.120", "46.254.241.8", "49.12.102.105", "81.17.101.141", "93.115.172.183", "65.108.0.158", "65.108.74.79", "147.45.236.121", "86.107.101.128", "54.69.95.118", "158.220.122.13", "49.13.154.121", "15.235.102.215", "91.220.109.253", "82.211.21.169", "65.21.237.223", "194.58.47.180", "195.201.238.55", "135.181.110.216", "207.180.213.141", "89.223.120.216", "45.76.141.74", "161.97.66.31", "50.116.28.103", "84.247.187.76", "188.245.90.255", "149.28.223.171", "130.162.233.186", "80.68.156.191", "65.109.114.210", "144.91.106.188", "65.109.84.201", "167.235.102.194", "164.68.114.36", "167.88.165.175", "43.167.239.145", "37.60.236.247", "178.157.91.184", "185.239.208.110", "95.179.139.125", "65.108.4.194", "75.119.137.66", "213.199.34.248", "178.157.91.178", "178.18.254.136", "157.173.122.25", "82.211.21.40", "93.115.172.86", "65.21.237.222", "62.171.170.14", "45.77.129.235", "185.209.230.13", "75.119.152.219", "81.0.249.58", "89.23.117.144", "37.60.243.59", "37.27.67.156", "192.99.232.138", "89.35.131.218", "5.189.145.80", "159.69.204.162", "178.18.244.255", "65.21.237.231", "149.102.152.219", "77.221.148.204", "65.21.237.224", "167.17.40.92", "46.254.241.11", "207.180.218.245", "158.220.101.28", "5.252.55.188", "173.199.71.83", "185.215.166.126", "164.132.55.103", "162.250.190.133", "72.60.38.160", "89.35.131.158", "82.97.240.124", "167.17.40.97", "213.159.77.221", "213.199.35.15", "114.132.172.215", "167.17.40.218", "65.108.74.109", "65.109.114.212"]; +const MAINNET_ADDRESS_LIST: [&str; 152] = [ + "216.238.75.46", + "149.28.241.190", + "194.163.172.206", + "89.125.209.110", + "84.247.180.201", + "134.255.182.186", + "93.115.172.39", + "5.189.164.253", + "161.97.165.115", + "89.117.57.27", + "62.171.133.125", + "38.242.197.189", + "95.111.241.20", + "66.245.196.52", + "173.212.245.118", + "202.71.14.79", + "185.252.234.238", + "178.215.237.134", + "207.180.233.6", + "89.125.209.69", + "136.244.99.17", + "173.212.232.90", + "178.215.237.135", + "37.60.244.253", + "157.90.238.161", + "213.199.54.171", + "84.247.180.198", + "132.243.197.252", + "161.97.75.36", + "23.88.63.58", + "207.244.247.40", + "45.32.70.131", + "31.220.91.43", + "52.33.9.172", + "178.157.91.177", + "161.97.88.199", + "109.199.124.30", + "185.198.234.17", + "139.84.236.208", + "38.242.218.26", + "207.180.224.96", + "62.171.170.222", + "65.108.4.213", + "103.214.68.30", + "75.119.153.10", + "31.220.91.60", + "65.108.74.95", + "132.243.197.251", + "95.179.159.65", + "65.109.114.211", + "44.240.99.214", + "5.75.133.148", + "65.108.0.153", + "213.199.54.37", + "161.97.88.219", + "89.35.131.149", + "192.248.178.237", + "161.97.153.122", + "37.60.235.218", + "207.180.241.242", + "195.26.254.228", + "45.76.36.241", + "45.77.11.194", + "139.84.232.129", + "161.97.175.233", + "104.156.154.179", + "89.125.209.195", + "161.97.176.38", + "91.198.108.35", + "161.97.180.105", + "109.199.105.14", + "213.199.54.34", + "65.108.246.145", + "64.176.10.71", + "158.247.247.241", + "37.60.254.213", + "65.108.0.151", + "149.102.140.101", + "139.180.143.115", + "37.60.235.205", + "213.199.44.112", + "51.79.109.200", + "213.199.53.161", + "162.212.35.100", + "185.239.209.6", + "37.27.67.154", + "173.212.196.214", + "37.60.254.202", + "134.255.182.185", + "91.199.149.177", + "51.79.109.182", + "206.245.167.76", + "31.220.77.84", + "139.84.137.143", + "144.91.87.82", + "161.97.120.156", + "161.97.91.217", + "132.243.197.249", + "62.171.168.44", + "65.109.114.215", + "194.163.159.171", + "80.240.19.200", + "144.126.141.62", + "173.249.21.12", + "161.97.159.172", + "194.163.156.190", + "139.84.170.10", + "164.68.118.37", + "62.171.171.253", + "143.198.145.184", + "84.247.180.200", + "65.109.108.141", + "37.60.234.205", + "65.108.4.196", + "43.133.171.101", + "192.248.175.198", + "65.21.237.225", + "161.97.142.210", + "43.167.244.109", + "146.59.45.235", + "37.27.67.159", + "172.236.244.81", + "62.171.144.192", + "193.70.43.172", + "84.247.180.190", + "185.215.164.84", + "75.119.138.9", + "172.238.7.25", + "157.173.122.20", + "57.128.212.163", + "82.208.20.153", + "95.111.239.54", + "85.190.243.3", + "51.195.235.166", + "156.67.29.45", + "132.243.197.38", + "93.115.172.37", + "15.235.102.216", + "65.109.108.138", + "89.35.131.39", + "93.115.172.38", + "161.97.104.37", + "75.119.128.71", + "93.95.115.187", + "161.97.117.125", + "49.13.28.255", + "95.111.242.220", + "52.36.102.91", + "139.99.201.103", + "65.109.108.139", + "109.199.120.79", + "161.97.74.173" +]; #[test] -fn check_all_nodes_test() { +fn check_all_testnet_nodes_test() { let mut good_nodes: Vec = Vec::new(); let mut bad_nodes: Vec = Vec::new(); @@ -520,6 +673,7 @@ fn check_all_nodes_test() { } println!("good nodes: {:?}", good_nodes); println!("bad nodes: {:?}", bad_nodes); + assert!(bad_nodes.len() < good_nodes.len(), "not enough good nodes") } #[test] @@ -561,4 +715,5 @@ fn check_all_nodes_mainnet_test() { } println!("good nodes: {:?}", good_nodes); println!("bad nodes: {:?}", bad_nodes); + assert!(bad_nodes.len() < good_nodes.len(), "not enough good nodes") } diff --git a/settings.gradle b/settings.gradle index ff3500b..d40c619 100644 --- a/settings.gradle +++ b/settings.gradle @@ -5,6 +5,5 @@ include 'examples' include 'dpp' include ':dash-sdk-android' -include ':dashj-platform-android-simple' include 'tools' \ No newline at end of file diff --git a/tools/src/main/java/org/dashj/platform/tools/WalletTool.java b/tools/src/main/java/org/dashj/platform/tools/WalletTool.java index 69d7283..80aab3f 100644 --- a/tools/src/main/java/org/dashj/platform/tools/WalletTool.java +++ b/tools/src/main/java/org/dashj/platform/tools/WalletTool.java @@ -82,6 +82,7 @@ import org.bitcoinj.crypto.MnemonicException; import org.bitcoinj.crypto.TransactionSignature; import org.bitcoinj.evolution.AssetLockTransaction; +import org.bitcoinj.manager.DashSystem; import org.bitcoinj.net.discovery.ThreeMethodPeerDiscovery; import org.bitcoinj.params.BinTangDevNetParams; import org.bitcoinj.params.MainNetParams; @@ -195,6 +196,7 @@ public class WalletTool { private static OptionSpec aliasFlag; private static Context context; + private static DashSystem system; private static NetworkParameters params; private static File walletFile; private static BlockStore store; @@ -416,18 +418,19 @@ public static void main(String[] args) throws Exception { } context = new Context(params); + system = new DashSystem(context); EnumSet syncFlags = MasternodeSync.SYNC_DEFAULT_SPV; syncFlags.add(MasternodeSync.SYNC_FLAGS.SYNC_HEADERS_MN_LIST_FIRST); syncFlags.add(MasternodeSync.SYNC_FLAGS.SYNC_BLOCKS_AFTER_PREPROCESSING); - context.initDash(true, true, syncFlags); - context.initDashSync("."); + system.initDash(true, true, syncFlags); + system.initDashSync("."); Context.propagate(context); platform = new Platform(params); authenticationGroupExtension = new AuthenticationGroupExtension(params); dashPayWalletExtension = new DashPayWalletExtension(platform, authenticationGroupExtension); - platform.setMasternodeListManager(context.masternodeListManager); + platform.setMasternodeListManager(system.masternodeListManager); mode = modeFlag.value(options); @@ -661,7 +664,7 @@ public static void main(String[] args) throws Exception { // wait for the preblock download to be done first Futures.addCallback(waitAndShutdownFuture, waitAndShutdownCallback, Executors.newSingleThreadExecutor()); - if (!context.masternodeSync.syncFlags.contains(MasternodeSync.SYNC_FLAGS.SYNC_BLOCKS_AFTER_PREPROCESSING)) + if (!system.masternodeSync.syncFlags.contains(MasternodeSync.SYNC_FLAGS.SYNC_BLOCKS_AFTER_PREPROCESSING)) waitAndShutdownFuture.set(waitForFlag); } @@ -1479,7 +1482,7 @@ private static void setup(boolean autoSave) throws BlockStoreException { } } else { // TODO: we used to use peerGroup.setRequiredServices(0); here - peerGroup.addPeerDiscovery(new ThreeMethodPeerDiscovery(params, Context.get().masternodeListManager)); + peerGroup.addPeerDiscovery(new ThreeMethodPeerDiscovery(params, system.masternodeListManager)); } platform.setBlockChain(chain); } @@ -1571,7 +1574,7 @@ private static void shutdown() { peerGroup.stop(); saveWallet(walletFile); store.close(); - wallet.getContext().close(); + system.close(); wallet = null; System.exit(0); } catch (BlockStoreException e) { @@ -1793,13 +1796,13 @@ private static void dumpWallet() throws BlockStoreException { final KeyParameter aesKey = passwordToKey(true); if (aesKey == null) return; // Error message already printed. - System.out.println(wallet.toString(dumpLookahead, true, aesKey, true, true, chain)); + System.out.println(wallet.toString(dumpLookahead, true, aesKey, true, true, chain, false)); } else { System.err.println("Can't dump privkeys, wallet is encrypted."); return; } } else { - System.out.println(wallet.toString(dumpLookahead, dumpPrivkeys, null, true, true, chain)); + System.out.println(wallet.toString(dumpLookahead, dumpPrivkeys, null, true, true, chain, false)); } } @@ -1832,16 +1835,19 @@ private static void mix(OptionSpec waitForFlag) { CoinJoinClientOptions.setMultiSessionEnabled(options.valueOf(multiSessionFlag)); } - wallet.getContext().coinJoinManager.coinJoinClientManagers.put(wallet.getDescription(), new CoinJoinClientManager(wallet)); - wallet.getContext().coinJoinManager.addSessionStartedListener(Threading.SAME_THREAD, reporter); - wallet.getContext().coinJoinManager.addSessionCompleteListener(Threading.SAME_THREAD, reporter); - wallet.getContext().coinJoinManager.addMixingCompleteListener(Threading.SAME_THREAD, reporter); + system.coinJoinManager.coinJoinClientManagers.put( + wallet.getDescription(), + new CoinJoinClientManager(wallet, system.masternodeSync, system.coinJoinManager, system.masternodeListManager, system.masternodeMetaDataManager) + ); + system.coinJoinManager.addSessionStartedListener(Threading.SAME_THREAD, reporter); + system.coinJoinManager.addSessionCompleteListener(Threading.SAME_THREAD, reporter); + system.coinJoinManager.addMixingCompleteListener(Threading.SAME_THREAD, reporter); // mix coins try { - CoinJoinClientManager it = wallet.getContext().coinJoinManager.coinJoinClientManagers.get(wallet.getDescription()); + CoinJoinClientManager it = system.coinJoinManager.coinJoinClientManagers.get(wallet.getDescription()); it.setStopOnNothingToDo(true); - it.setBlockChain(wallet.getContext().blockChain); + it.setBlockChain(system.blockChain); { if (wallet.isEncrypted()) { @@ -1860,13 +1866,13 @@ private static void mix(OptionSpec waitForFlag) { System.out.println("Mixing " + (result ? "started successfully" : ("start failed: " + it.getStatuses() + ", will retry"))); // wait until finished mixing - SettableFuture mixingFinished = wallet.getContext().coinJoinManager.getMixingFinishedFuture(wallet); + SettableFuture mixingFinished = system.coinJoinManager.getMixingFinishedFuture(wallet); mixingFinished.addListener(() -> System.out.println("Mixing complete."), Threading.SAME_THREAD); mixingFinished.get(); - wallet.getContext().coinJoinManager.removeSessionCompleteListener(reporter); - wallet.getContext().coinJoinManager.removeMixingCompleteListener(reporter); - wallet.getContext().coinJoinManager.removeSessionStartedListener(reporter); - wallet.getContext().coinJoinManager.stop(); + system.coinJoinManager.removeSessionCompleteListener(reporter); + system.coinJoinManager.removeMixingCompleteListener(reporter); + system.coinJoinManager.removeSessionStartedListener(reporter); + system.coinJoinManager.stop(); } catch (ExecutionException | InterruptedException x) { throw new RuntimeException(x); }