// file: kb-app-demo-desktop/src/tauri.rs // version: 46 //! Tauri runtime assembly and private command wrappers. use tauri::Manager; // rust-rules: trait-import /// Runs the desktop demo application. #[cfg_attr(mobile, tauri::mobile_entry_point)] #[allow(clippy::question_mark_used)] #[allow(clippy::question_mark)] pub fn run() -> ks_core::Result<()> { let rustls_result = install_default_rustls_provider(); if let std::result::Result::Err(error) = rustls_result { return std::result::Result::Err(error); } let app_state: crate::AppState = match crate::AppState::initialize() { std::result::Result::Ok(state) => state, std::result::Result::Err(error) => return std::result::Result::Err(error), }; tracing::info!( target: crate::TRACING_TARGET, composition_config_path = app_state.config_path(), logging_config_path = app_state.logging_config_path(), active_profile = app_state.active_profile().name.as_str(), logging_routes = app_state.logging_route_count(), configured_profiles = app_state.app_config().profiles.len(), "starting desktop demo application" ); let tracing_builder = tauri_plugin_tracing::Builder::new(); let mut builder = tauri::Builder::default(); builder = builder.manage(app_state); builder = builder.invoke_handler(tauri::generate_handler![ splash_frontend_ready, emit_frontend_log, load_project_readme, open_demo_config_window, load_demo_config, open_demo_wallet_window, demo_wallet_inventory, demo_wallet_select_execution_wallet, demo_wallet_create_native, demo_wallet_inspect_transfer_file, demo_wallet_import_file, demo_wallet_export_file, demo_wallet_balance, demo_wallet_inspect_file, demo_wallet_rpc_execute, open_demo_http_window, demo_http_list_pool_clients, demo_http_options, demo_http_execute_request, open_demo_ws_window, demo_ws_list_pool_clients, demo_ws_options, demo_ws_status, demo_ws_connect, demo_ws_unsubscribe, demo_ws_disconnect, open_demo_backfill_window, demo_backfill_cancel, demo_backfill_options, demo_backfill_execute, open_demo_core_extraction_window, demo_core_extraction_options, demo_core_extraction_execute, demo_core_extraction_cancel, open_demo_decode_replay_window, demo_decode_replay_options, demo_decode_replay_execute, demo_decode_replay_cancel, demo_decode_replay_diagnostics, demo_decode_replay_annotations, open_demo_store_diag_window, load_demo_store_diag, open_demo_store_raw_window, load_demo_store_raw, open_demo_store_core_window, load_demo_store_core, open_demo_store_replay_candidates_window, export_demo_store_replay_csv, demo_store_replay_options, load_demo_store_replay_transactions, load_demo_store_replay_programs, load_demo_store_replay_entities, open_demo_execution_solana_core_window, demo_execution_devnet_prepare_profile, demo_execution_solana_core_options, demo_execution_solana_core_generate_recipient, demo_execution_solana_core_execute, demo_execution_spl_memo_execute, demo_execution_solana_core_cancel, demo_execution_spl_validation_scenarios, open_demo_execution_spl_window, demo_execution_spl_token_execute, demo_spl_token_journal, demo_spl_ata_derive, demo_execution_spl_ata_execute, demo_spl_ata_journal, demo_execution_spl_token_2022_execute, demo_spl_token_2022_fixture, open_demo_execution_metadata_window, demo_execution_metadata_metaplex_token_metadata_scenarios, demo_execution_metadata_metaplex_campaigns, demo_execution_metadata_metaplex_execute_campaign, demo_execution_metadata_options, demo_execution_metadata_metaplex_token_metadata_current_operations, demo_execution_metadata_metaplex_token_metadata_operation_template, demo_execution_metadata_metaplex_token_metadata_prepare_create_fixture, demo_execution_metadata_metaplex_token_metadata_prepare_step, demo_execution_metadata_metaplex_token_metadata_execute, demo_execution_metadata_solana_program_scenarios, demo_execution_metadata_solana_program_execute_campaign, demo_execution_metadata_token_2022_execute_campaign, ]); builder = builder.on_window_event(|window, event| { if window.label() != "main" || !matches!(event, tauri::WindowEvent::Destroyed) { return; } let app_handle = window.app_handle().clone(); tauri::async_runtime::spawn(async move { let state = app_handle.state::(); crate::disconnect_demo_ws_app_state(&state, false).await; }); }); builder = builder.plugin(tracing_builder.build::()); builder = builder.setup(|app| { if app.get_webview_window("splash").is_none() { return std::result::Result::Err(std::boxed::Box::new(std::io::Error::new( std::io::ErrorKind::NotFound, "splash window is missing", ))); } if app.get_webview_window("main").is_none() { return std::result::Result::Err(std::boxed::Box::new(std::io::Error::new( std::io::ErrorKind::NotFound, "main window is missing", ))); } return std::result::Result::Ok(()); }); let run_result = builder.run(tauri::generate_context!()); return match run_result { std::result::Result::Ok(()) => std::result::Result::Ok(()), std::result::Result::Err(error) => std::result::Result::Err(ks_core::Error::tauri( format!("cannot run desktop demo application: {error:?}"), )), }; } fn install_default_rustls_provider() -> ks_core::Result<()> { if rustls::crypto::CryptoProvider::get_default().is_some() { return std::result::Result::Ok(()); } let provider_result = rustls::crypto::aws_lc_rs::default_provider().install_default(); return match provider_result { std::result::Result::Ok(()) => std::result::Result::Ok(()), std::result::Result::Err(error) => std::result::Result::Err(ks_core::Error::invalid_state( format!("cannot install default rustls crypto provider: {error:?}"), )), }; } fn open_or_focus_demo_window( app_handle: tauri::AppHandle, label: &str, html_path: &str, title: &str, ) -> std::result::Result<(), std::string::String> { tracing::info!(target: crate::TRACING_TARGET, action = "open_window", window = label, "open demo window"); if let std::option::Option::Some(window) = app_handle.get_webview_window(label) { if let std::result::Result::Err(error) = window.show() { return std::result::Result::Err( ks_core::Error::tauri(format!("cannot show {label} window: {error}")).to_string(), ); } if let std::result::Result::Err(error) = window.set_focus() { return std::result::Result::Err( ks_core::Error::tauri(format!("cannot focus {label} window: {error}")).to_string(), ); } return std::result::Result::Ok(()); } let build_result = tauri::WebviewWindowBuilder::new( &app_handle, label, tauri::WebviewUrl::App(html_path.into()), ) .title(title) .inner_size(1500.0, 960.0) .min_inner_size(1024.0, 768.0) .resizable(true) .visible(true) .build(); return match build_result { std::result::Result::Ok(window) => match window.set_focus() { std::result::Result::Ok(()) => std::result::Result::Ok(()), std::result::Result::Err(error) => std::result::Result::Err( ks_core::Error::tauri(format!("cannot focus created {label} window: {error}")) .to_string(), ), }, std::result::Result::Err(error) => std::result::Result::Err( ks_core::Error::tauri(format!("cannot create {label} window: {error}")).to_string(), ), }; } #[tauri::command] fn emit_frontend_log(payload: crate::FrontendLogPayload) { return crate::emit_frontend_log(payload); } #[tauri::command] async fn splash_frontend_ready( app: tauri::AppHandle, window: tauri::WebviewWindow, state: tauri::State<'_, crate::AppState>, ) -> std::result::Result<(), std::string::String> { return crate::splash_frontend_ready(app, window, &state).await; } #[tauri::command] fn load_project_readme() -> std::result::Result { return match crate::load_project_readme() { std::result::Result::Ok(readme) => std::result::Result::Ok(readme), std::result::Result::Err(error) => std::result::Result::Err(error.to_string()), }; } #[tauri::command] fn open_demo_config_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_config", "demo_config.html", "Configuration", ); } #[tauri::command] fn load_demo_config(state: tauri::State<'_, crate::AppState>) -> crate::DemoConfigPayload { return crate::demo_config_payload(state.inner()); } #[tauri::command] fn open_demo_wallet_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window(app_handle, "demo_wallet", "demo_wallet.html", "Wallets"); } #[tauri::command] async fn demo_wallet_inventory( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::demo_wallet_inventory(state.inner()).await; } #[tauri::command] async fn demo_wallet_select_execution_wallet( state: tauri::State<'_, crate::AppState>, request: crate::DemoWalletExecutionSelectionRequest, ) -> std::result::Result { return crate::demo_wallet_select_execution_wallet(state.inner(), request).await; } #[tauri::command] async fn demo_wallet_create_native( state: tauri::State<'_, crate::AppState>, request: crate::DemoWalletCreateRequest, ) -> std::result::Result { return crate::demo_wallet_create_native(state.inner(), request).await; } #[tauri::command] async fn demo_wallet_inspect_transfer_file( request: crate::DemoWalletTransferInspectionRequest, ) -> std::result::Result { return crate::demo_wallet_inspect_transfer_file(request).await; } #[tauri::command] async fn demo_wallet_import_file( state: tauri::State<'_, crate::AppState>, request: crate::DemoWalletImportRequest, ) -> std::result::Result { return crate::demo_wallet_import_file(state.inner(), request).await; } #[tauri::command] async fn demo_wallet_export_file( state: tauri::State<'_, crate::AppState>, request: crate::DemoWalletExportRequest, ) -> std::result::Result { return crate::demo_wallet_export_file(state.inner(), request).await; } #[tauri::command] async fn demo_wallet_balance( state: tauri::State<'_, crate::AppState>, profile: std::string::String, address: std::string::String, ) -> std::result::Result { return crate::demo_wallet_balance(state.inner(), profile, address).await; } #[tauri::command] async fn demo_wallet_inspect_file( state: tauri::State<'_, crate::AppState>, path: std::string::String, ) -> std::result::Result { return crate::demo_wallet_inspect_file(state.inner(), path).await; } #[tauri::command] async fn demo_wallet_rpc_execute( state: tauri::State<'_, crate::AppState>, request: crate::DemoWalletRpcRequest, ) -> std::result::Result { return crate::demo_wallet_rpc_execute(state.inner(), request).await; } #[tauri::command] fn open_demo_backfill_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_backfill", "demo_backfill.html", "Backfill HTTP", ); } #[tauri::command] fn open_demo_http_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window(app_handle, "demo_http", "demo_http.html", "HTTP JSON-RPC"); } #[tauri::command] fn demo_http_list_pool_clients( state: tauri::State<'_, crate::AppState>, ) -> std::vec::Vec { return crate::demo_http_list_pool_clients(state); } #[tauri::command] fn demo_http_options(state: tauri::State<'_, crate::AppState>) -> crate::DemoHttpOptionsPayload { return crate::demo_http_options(state); } #[tauri::command] async fn demo_http_execute_request( state: tauri::State<'_, crate::AppState>, request: crate::DemoHttpRequest, ) -> std::result::Result { return crate::demo_http_execute_request(state, request).await; } #[tauri::command] fn open_demo_ws_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window(app_handle, "demo_ws", "demo_ws.html", "WebSocket standard"); } #[tauri::command] fn demo_ws_list_pool_clients( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result, std::string::String> { return crate::demo_ws_list_pool_clients(state); } #[tauri::command] fn demo_ws_options( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::demo_ws_options(state); } #[tauri::command] async fn demo_ws_status( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::demo_ws_status(state.inner()).await; } #[tauri::command] async fn demo_ws_connect( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoWsRequest, ) -> std::result::Result { return crate::demo_ws_connect(app_handle, state.inner(), request).await; } #[tauri::command] async fn demo_ws_unsubscribe( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoWsUnsubscribeRequest, ) -> std::result::Result { return crate::demo_ws_unsubscribe(app_handle, state.inner(), request.subscription_id).await; } #[tauri::command] async fn demo_ws_disconnect( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::demo_ws_disconnect(state.inner()).await; } #[tauri::command] fn demo_backfill_options( state: tauri::State<'_, crate::AppState>, ) -> crate::DemoBackfillOptionsPayload { return crate::demo_backfill_options(state); } #[tauri::command] async fn demo_backfill_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoBackfillRequest, ) -> std::result::Result { return crate::demo_backfill_execute(app_handle, state, request).await; } #[tauri::command] fn demo_backfill_cancel(state: tauri::State<'_, crate::AppState>) -> bool { return crate::demo_backfill_cancel(state); } #[tauri::command] fn open_demo_core_extraction_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_core_extraction", "demo_core_extraction.html", "Extraction canonical vers core", ); } #[tauri::command] fn demo_core_extraction_options( state: tauri::State<'_, crate::AppState>, ) -> crate::DemoCoreExtractionOptionsPayload { return crate::demo_core_extraction_options_payload(&state); } #[tauri::command] async fn demo_core_extraction_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoCoreExtractionRequest, ) -> std::result::Result { return crate::demo_core_extraction_execute(app_handle, &state, request).await; } #[tauri::command] fn demo_core_extraction_cancel(state: tauri::State<'_, crate::AppState>) -> bool { return crate::demo_core_extraction_cancel(&state); } #[tauri::command] fn open_demo_decode_replay_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_decode_replay", "demo_decode_replay.html", "Décodage et matérialisation", ); } #[tauri::command] fn demo_decode_replay_options( state: tauri::State<'_, crate::AppState>, ) -> crate::DemoDecodeReplayOptionsPayload { return crate::demo_decode_replay_options(state); } #[tauri::command] async fn demo_decode_replay_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoDecodeReplayRequest, ) -> std::result::Result { return crate::demo_decode_replay_execute(app_handle, state, request).await; } #[tauri::command] fn demo_decode_replay_cancel(state: tauri::State<'_, crate::AppState>) -> bool { return crate::demo_decode_replay_cancel(state); } #[tauri::command] async fn demo_decode_replay_diagnostics( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::demo_decode_replay_diagnostics(state).await; } #[tauri::command] async fn demo_decode_replay_annotations( state: tauri::State<'_, crate::AppState>, request: crate::DemoTransactionAnnotationRequest, ) -> std::result::Result, std::string::String> { return crate::demo_decode_replay_annotations(state, request).await; } #[tauri::command] fn open_demo_store_diag_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_store_diag", "demo_store_diag.html", "Store diagnostics", ); } #[tauri::command] async fn load_demo_store_diag( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::load_demo_store_diag(state).await; } #[tauri::command] fn open_demo_store_raw_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_store_raw", "demo_store_raw.html", "Raw store", ); } #[tauri::command] async fn load_demo_store_raw( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::load_demo_store_raw(state).await; } #[tauri::command] fn open_demo_store_core_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_store_core", "demo_store_core.html", "Core store", ); } #[tauri::command] async fn load_demo_store_core( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::load_demo_store_core(state).await; } #[tauri::command] fn open_demo_store_replay_candidates_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_store_replay_candidates", "demo_store_replay_candidates.html", "Store replay candidates", ); } #[tauri::command] async fn export_demo_store_replay_csv( file_name: std::string::String, content: std::string::String, ) -> std::result::Result { return crate::export_demo_store_replay_csv(file_name, content).await; } #[tauri::command] async fn demo_store_replay_options( state: tauri::State<'_, crate::AppState>, ) -> std::result::Result { return crate::demo_store_replay_options(state).await; } #[tauri::command] async fn load_demo_store_replay_transactions( state: tauri::State<'_, crate::AppState>, request: crate::DemoStoreReplayTransactionRequest, ) -> std::result::Result, std::string::String> { return crate::load_demo_store_replay_transactions(state, request).await; } #[tauri::command] async fn load_demo_store_replay_programs( state: tauri::State<'_, crate::AppState>, request: crate::DemoStoreReplayProgramRequest, ) -> std::result::Result, std::string::String> { return crate::load_demo_store_replay_programs(state, request).await; } #[tauri::command] async fn load_demo_store_replay_entities( state: tauri::State<'_, crate::AppState>, request: crate::DemoStoreReplayEntityRequest, ) -> std::result::Result, std::string::String> { return crate::load_demo_store_replay_entities(state, request).await; } #[tauri::command] fn open_demo_execution_solana_core_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_execution_solana_core", "demo_execution_solana_core.html", "Exécution Solana Devnet", ); } #[tauri::command] async fn demo_execution_devnet_prepare_profile( state: tauri::State<'_, crate::AppState>, profile_name: std::string::String, ) -> std::result::Result { return crate::demo_execution_devnet_prepare_profile(state, profile_name).await; } #[tauri::command] fn demo_execution_solana_core_options( state: tauri::State<'_, crate::AppState>, ) -> crate::DemoExecutionSolanaCoreOptionsPayload { return crate::demo_execution_solana_core_options(state); } #[tauri::command] fn demo_execution_solana_core_generate_recipient() -> std::result::Result { return crate::demo_execution_solana_core_generate_recipient(); } #[tauri::command] async fn demo_execution_solana_core_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionSolanaCoreRequest, ) -> std::result::Result { return crate::demo_execution_solana_core_execute(app_handle, state, request).await; } #[tauri::command] async fn demo_execution_spl_memo_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionMemoRequest, ) -> std::result::Result { return crate::demo_execution_spl_memo_execute(app_handle, state, request).await; } #[tauri::command] fn demo_execution_solana_core_cancel(state: tauri::State<'_, crate::AppState>) -> bool { return crate::demo_execution_solana_core_cancel(state); } #[tauri::command] fn demo_execution_spl_validation_scenarios() -> std::vec::Vec { return crate::demo_execution_spl_validation_scenarios(); } #[tauri::command] fn open_demo_execution_spl_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_execution_spl", "demo_execution_spl.html", "Exécution SPL Devnet", ); } #[tauri::command] fn open_demo_execution_metadata_window( app_handle: tauri::AppHandle, ) -> std::result::Result<(), std::string::String> { return open_or_focus_demo_window( app_handle, "demo_execution_metadata", "demo_execution_metadata.html", "Exécution Metadata Devnet", ); } #[tauri::command] fn demo_execution_metadata_options( state: tauri::State<'_, crate::AppState>, ) -> crate::DemoExecutionSolanaCoreOptionsPayload { return crate::demo_execution_metadata_options(state); } #[tauri::command] fn demo_execution_metadata_metaplex_token_metadata_scenarios() -> std::result::Result< std::vec::Vec, std::string::String, > { return crate::demo_execution_metadata_metaplex_token_metadata_scenarios(); } #[tauri::command] fn demo_execution_metadata_metaplex_campaigns() -> std::vec::Vec { return crate::demo_execution_metadata_metaplex_campaigns(); } #[tauri::command] async fn demo_execution_metadata_metaplex_execute_campaign( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionMetadataMetaplexCampaignRequest, ) -> std::result::Result< crate::DemoExecutionMetadataMetaplexCampaignSummaryPayload, std::string::String, > { return crate::demo_execution_metadata_metaplex_execute_campaign(app_handle, state, request) .await; } #[tauri::command] fn demo_execution_metadata_metaplex_token_metadata_current_operations() -> std::vec::Vec { return crate::demo_execution_metadata_metaplex_token_metadata_current_operations(); } #[tauri::command] fn demo_execution_metadata_metaplex_token_metadata_operation_template( operation: std::string::String, ) -> std::result::Result { return crate::demo_execution_metadata_metaplex_token_metadata_operation_template(operation); } #[tauri::command] async fn demo_execution_metadata_metaplex_token_metadata_prepare_create_fixture( state: tauri::State<'_, crate::AppState>, profile_name: std::string::String, ) -> std::result::Result< crate::DemoExecutionMetadataMetaplexTokenMetadataCreateFixturePayload, std::string::String, > { return crate::demo_execution_metadata_metaplex_token_metadata_prepare_create_fixture( state, profile_name, ) .await; } #[tauri::command] async fn demo_execution_metadata_metaplex_token_metadata_prepare_step( state: tauri::State<'_, crate::AppState>, profile_name: std::string::String, scenario_id: std::string::String, step_index: usize, previous_operation_json: std::option::Option, ) -> std::result::Result< crate::DemoExecutionMetadataMetaplexTokenMetadataPreparedStepPayload, std::string::String, > { return crate::demo_execution_metadata_metaplex_token_metadata_prepare_step( state, profile_name, scenario_id, step_index, previous_operation_json, ) .await; } #[tauri::command] async fn demo_execution_metadata_metaplex_token_metadata_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionMetadataMetaplexTokenMetadataRequest, ) -> std::result::Result< crate::DemoExecutionMetadataMetaplexTokenMetadataSummaryPayload, std::string::String, > { return crate::demo_execution_metadata_metaplex_token_metadata_execute( app_handle, state, request, ) .await; } #[tauri::command] fn demo_execution_metadata_solana_program_scenarios() -> std::vec::Vec { return crate::demo_execution_metadata_solana_program_scenarios(); } #[tauri::command] async fn demo_execution_metadata_solana_program_execute_campaign( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionMetadataSolanaProgramCampaignRequest, ) -> std::result::Result< crate::DemoExecutionMetadataSolanaProgramCampaignSummaryPayload, std::string::String, > { return crate::demo_execution_metadata_solana_program_execute_campaign( app_handle, state, request, ) .await; } #[tauri::command] async fn demo_execution_metadata_token_2022_execute_campaign( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionMetadataToken2022CampaignRequest, ) -> std::result::Result< crate::DemoExecutionMetadataToken2022CampaignSummaryPayload, std::string::String, > { return crate::demo_execution_metadata_token_2022_execute_campaign(app_handle, state, request) .await; } #[tauri::command] async fn demo_execution_spl_token_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionSplTokenRequest, ) -> std::result::Result { return crate::demo_execution_spl_token_execute(app_handle, state, request).await; } #[tauri::command] async fn demo_spl_token_journal( state: tauri::State<'_, crate::AppState>, request: crate::DemoSplTokenJournalRequest, ) -> std::result::Result, std::string::String> { return crate::demo_spl_token_journal(state, request).await; } #[tauri::command] async fn demo_spl_ata_derive( state: tauri::State<'_, crate::AppState>, request: crate::DemoSplAtaDerivationRequest, ) -> std::result::Result { return crate::demo_spl_ata_derive(state, request).await; } #[tauri::command] async fn demo_execution_spl_ata_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionSplAtaRequest, ) -> std::result::Result { return crate::demo_execution_spl_ata_execute(app_handle, state, request).await; } #[tauri::command] async fn demo_spl_ata_journal( state: tauri::State<'_, crate::AppState>, request: crate::DemoSplAtaJournalRequest, ) -> std::result::Result, std::string::String> { return crate::demo_spl_ata_journal(state, request).await; } #[tauri::command] async fn demo_execution_spl_token_2022_execute( app_handle: tauri::AppHandle, state: tauri::State<'_, crate::AppState>, request: crate::DemoExecutionSplToken2022Request, ) -> std::result::Result { return crate::demo_execution_spl_token_2022_execute(app_handle, state, request).await; } #[tauri::command] fn demo_spl_token_2022_fixture( state: tauri::State<'_, crate::AppState>, profile_name: std::string::String, ) -> std::result::Result { return crate::demo_spl_token_2022_fixture(state, profile_name); }