341 lines
12 KiB
Rust
341 lines
12 KiB
Rust
// file: kb_lib/src/lib.rs
|
|
|
|
//! Core library of the `khadhroony-bobobot` workspace.
|
|
//!
|
|
//! This crate contains the reusable backend logic shared by the desktop
|
|
//! application and future clients.
|
|
|
|
#![deny(unreachable_pub)]
|
|
#![warn(missing_docs)]
|
|
|
|
mod config;
|
|
mod constants;
|
|
mod db;
|
|
mod detect;
|
|
mod dex;
|
|
mod dex_decode;
|
|
mod dex_detect;
|
|
mod error;
|
|
mod http_client;
|
|
mod http_pool;
|
|
mod json_rpc_ws;
|
|
mod launch_origin;
|
|
mod pair_analytic_signal;
|
|
mod pair_candle_aggregation;
|
|
mod pair_candle_query;
|
|
mod pool_origin;
|
|
mod solana_pubsub_ws;
|
|
mod token_backfill;
|
|
mod tracing;
|
|
mod trade_aggregation;
|
|
mod tx_model;
|
|
mod tx_resolution;
|
|
mod types;
|
|
mod wallet_holding_observation;
|
|
mod wallet_observation;
|
|
mod ws_client;
|
|
mod ws_hybrid_observation;
|
|
mod ws_hybrid_runtime;
|
|
mod ws_hybrid_watch;
|
|
mod ws_manager;
|
|
|
|
pub use config::KbAppConfig;
|
|
pub use config::KbConfig;
|
|
pub use config::KbDataConfig;
|
|
pub use config::KbDatabaseConfig;
|
|
pub use config::KbHttpEndpointConfig;
|
|
pub use config::KbLoggingConfig;
|
|
pub use config::KbSolanaConfig;
|
|
pub use config::KbSqliteDatabaseConfig;
|
|
pub use config::KbWsEndpointConfig;
|
|
pub use constants::*;
|
|
pub use db::KbAnalysisSignalDto;
|
|
pub use db::KbAnalysisSignalEntity;
|
|
pub use db::KbAnalysisSignalSeverity;
|
|
pub use db::KbChainInstructionDto;
|
|
pub use db::KbChainInstructionEntity;
|
|
pub use db::KbChainSlotDto;
|
|
pub use db::KbChainSlotEntity;
|
|
pub use db::KbChainTransactionDto;
|
|
pub use db::KbChainTransactionEntity;
|
|
pub use db::KbDatabase;
|
|
pub use db::KbDatabaseBackend;
|
|
pub use db::KbDatabaseConnection;
|
|
pub use db::KbDbMetadataDto;
|
|
pub use db::KbDbMetadataEntity;
|
|
pub use db::KbDbRuntimeEventDto;
|
|
pub use db::KbDbRuntimeEventEntity;
|
|
pub use db::KbDbRuntimeEventLevel;
|
|
pub use db::KbDexDecodedEventDto;
|
|
pub use db::KbDexDecodedEventEntity;
|
|
pub use db::KbDexDto;
|
|
pub use db::KbDexEntity;
|
|
pub use db::KbKnownHttpEndpointDto;
|
|
pub use db::KbKnownHttpEndpointEntity;
|
|
pub use db::KbKnownWsEndpointDto;
|
|
pub use db::KbKnownWsEndpointEntity;
|
|
pub use db::KbLaunchAttributionDto;
|
|
pub use db::KbLaunchAttributionEntity;
|
|
pub use db::KbLaunchSurfaceDto;
|
|
pub use db::KbLaunchSurfaceEntity;
|
|
pub use db::KbLaunchSurfaceKeyDto;
|
|
pub use db::KbLaunchSurfaceKeyEntity;
|
|
pub use db::KbLiquidityEventDto;
|
|
pub use db::KbLiquidityEventEntity;
|
|
pub use db::KbLiquidityEventKind;
|
|
pub use db::KbObservationSourceKind;
|
|
pub use db::KbObservedTokenDto;
|
|
pub use db::KbObservedTokenEntity;
|
|
pub use db::KbObservedTokenStatus;
|
|
pub use db::KbOnchainObservationDto;
|
|
pub use db::KbOnchainObservationEntity;
|
|
pub use db::KbPairAnalyticSignalDto;
|
|
pub use db::KbPairAnalyticSignalEntity;
|
|
pub use db::KbPairCandleDto;
|
|
pub use db::KbPairCandleEntity;
|
|
pub use db::KbPairDto;
|
|
pub use db::KbPairEntity;
|
|
pub use db::KbPairMetricDto;
|
|
pub use db::KbPairMetricEntity;
|
|
pub use db::KbPoolDto;
|
|
pub use db::KbPoolEntity;
|
|
pub use db::KbPoolKind;
|
|
pub use db::KbPoolListingDto;
|
|
pub use db::KbPoolListingEntity;
|
|
pub use db::KbPoolOriginDto;
|
|
pub use db::KbPoolOriginEntity;
|
|
pub use db::KbPoolStatus;
|
|
pub use db::KbPoolTokenDto;
|
|
pub use db::KbPoolTokenEntity;
|
|
pub use db::KbPoolTokenRole;
|
|
pub use db::KbSwapDto;
|
|
pub use db::KbSwapEntity;
|
|
pub use db::KbSwapTradeSide;
|
|
pub use db::KbTokenBurnEventDto;
|
|
pub use db::KbTokenBurnEventEntity;
|
|
pub use db::KbTokenDto;
|
|
pub use db::KbTokenEntity;
|
|
pub use db::KbTokenMintEventDto;
|
|
pub use db::KbTokenMintEventEntity;
|
|
pub use db::KbTradeEventDto;
|
|
pub use db::KbTradeEventEntity;
|
|
pub use db::KbWalletDto;
|
|
pub use db::KbWalletEntity;
|
|
pub use db::KbWalletHoldingDto;
|
|
pub use db::KbWalletHoldingEntity;
|
|
pub use db::KbWalletParticipationDto;
|
|
pub use db::KbWalletParticipationEntity;
|
|
pub use db::delete_chain_instructions_by_transaction_id;
|
|
pub use db::get_chain_slot;
|
|
pub use db::get_chain_transaction_by_signature;
|
|
pub use db::get_db_metadata;
|
|
pub use db::get_dex_by_code;
|
|
pub use db::get_dex_decoded_event_by_key;
|
|
pub use db::get_known_http_endpoint;
|
|
pub use db::get_known_ws_endpoint;
|
|
pub use db::get_launch_attribution_by_decoded_event_id;
|
|
pub use db::get_launch_surface_by_code;
|
|
pub use db::get_launch_surface_key_by_match;
|
|
pub use db::get_observed_token_by_mint;
|
|
pub use db::get_pair_analytic_signal_by_key;
|
|
pub use db::get_pair_by_pool_id;
|
|
pub use db::get_pair_candle_by_key;
|
|
pub use db::get_pair_metric_by_pair_id;
|
|
pub use db::get_pool_by_address;
|
|
pub use db::get_pool_listing_by_pool_id;
|
|
pub use db::get_pool_origin_by_pool_id;
|
|
pub use db::get_token_by_mint;
|
|
pub use db::get_trade_event_by_decoded_event_id;
|
|
pub use db::get_wallet_by_address;
|
|
pub use db::get_wallet_holding_by_wallet_and_token;
|
|
pub use db::get_wallet_participation_by_unique_key;
|
|
pub use db::insert_analysis_signal;
|
|
pub use db::insert_chain_instruction;
|
|
pub use db::insert_db_runtime_event;
|
|
pub use db::insert_onchain_observation;
|
|
pub use db::list_chain_instructions_by_transaction_id;
|
|
pub use db::list_db_metadata;
|
|
pub use db::list_dex_decoded_events_by_transaction_id;
|
|
pub use db::list_dexes;
|
|
pub use db::list_known_http_endpoints;
|
|
pub use db::list_known_ws_endpoints;
|
|
pub use db::list_launch_attributions_by_pool_id;
|
|
pub use db::list_launch_surface_keys_by_surface_id;
|
|
pub use db::list_launch_surfaces;
|
|
pub use db::list_observed_tokens;
|
|
pub use db::list_pair_analytic_signals_by_pair_id;
|
|
pub use db::list_pair_candles_by_pair_and_timeframe;
|
|
pub use db::list_pair_metrics;
|
|
pub use db::list_pairs;
|
|
pub use db::list_pool_listings;
|
|
pub use db::list_pool_origins;
|
|
pub use db::list_pool_tokens_by_pool_id;
|
|
pub use db::list_pools;
|
|
pub use db::list_recent_analysis_signals;
|
|
pub use db::list_recent_chain_slots;
|
|
pub use db::list_recent_chain_transactions;
|
|
pub use db::list_recent_db_runtime_events;
|
|
pub use db::list_recent_liquidity_events;
|
|
pub use db::list_recent_onchain_observations;
|
|
pub use db::list_recent_swaps;
|
|
pub use db::list_recent_token_burn_events;
|
|
pub use db::list_recent_token_mint_events;
|
|
pub use db::list_trade_events_by_pair_id;
|
|
pub use db::list_trade_events_by_transaction_id;
|
|
pub use db::list_wallet_holdings_by_wallet_id;
|
|
pub use db::list_wallet_participations_by_pool_id;
|
|
pub use db::list_wallet_participations_by_wallet_id;
|
|
pub use db::list_wallets;
|
|
pub use db::upsert_chain_slot;
|
|
pub use db::upsert_chain_transaction;
|
|
pub use db::upsert_db_metadata;
|
|
pub use db::upsert_dex;
|
|
pub use db::upsert_dex_decoded_event;
|
|
pub use db::upsert_known_http_endpoint;
|
|
pub use db::upsert_known_ws_endpoint;
|
|
pub use db::upsert_launch_attribution;
|
|
pub use db::upsert_launch_surface;
|
|
pub use db::upsert_launch_surface_key;
|
|
pub use db::upsert_liquidity_event;
|
|
pub use db::upsert_observed_token;
|
|
pub use db::upsert_pair;
|
|
pub use db::upsert_pair_analytic_signal;
|
|
pub use db::upsert_pair_candle;
|
|
pub use db::upsert_pair_metric;
|
|
pub use db::upsert_pool;
|
|
pub use db::upsert_pool_listing;
|
|
pub use db::upsert_pool_origin;
|
|
pub use db::upsert_pool_token;
|
|
pub use db::upsert_swap;
|
|
pub use db::upsert_token;
|
|
pub use db::upsert_token_burn_event;
|
|
pub use db::upsert_token_mint_event;
|
|
pub use db::upsert_trade_event;
|
|
pub use db::upsert_wallet;
|
|
pub use db::upsert_wallet_holding;
|
|
pub use db::upsert_wallet_participation;
|
|
pub use detect::KbDetectionObservationInput;
|
|
pub use detect::KbDetectionPersistenceService;
|
|
pub use detect::KbDetectionPoolCandidateInput;
|
|
pub use detect::KbDetectionPoolCandidateResult;
|
|
pub use detect::KbDetectionSignalInput;
|
|
pub use detect::KbDetectionTokenCandidateInput;
|
|
pub use detect::KbDetectionTokenCandidateResult;
|
|
pub use detect::KbSolanaWsDetectionOutcome;
|
|
pub use detect::KbSolanaWsDetectionService;
|
|
pub use detect::KbWsDetectionNotificationEnvelope;
|
|
pub use detect::KbWsDetectionRelay;
|
|
pub use detect::KbWsDetectionRelayStats;
|
|
pub use dex::KB_DEXLAB_PROGRAM_ID;
|
|
pub use dex::KB_FLUXBEAM_PROGRAM_ID;
|
|
pub use dex::KB_METEORA_DAMM_V1_PROGRAM_ID;
|
|
pub use dex::KB_METEORA_DAMM_V2_PROGRAM_ID;
|
|
pub use dex::KB_METEORA_DBC_PROGRAM_ID;
|
|
pub use dex::KB_ORCA_WHIRLPOOLS_PROGRAM_ID;
|
|
pub use dex::KB_PUMP_FUN_PROGRAM_ID;
|
|
pub use dex::KB_PUMP_SWAP_PROGRAM_ID;
|
|
pub use dex::KB_RAYDIUM_AMM_V4_PROGRAM_ID;
|
|
pub use dex::KbDexlabCreatePoolDecoded;
|
|
pub use dex::KbDexlabDecodedEvent;
|
|
pub use dex::KbDexlabDecoder;
|
|
pub use dex::KbDexlabSwapDecoded;
|
|
pub use dex::KbFluxbeamCreatePoolDecoded;
|
|
pub use dex::KbFluxbeamDecodedEvent;
|
|
pub use dex::KbFluxbeamDecoder;
|
|
pub use dex::KbFluxbeamSwapDecoded;
|
|
pub use dex::KbMeteoraDammV1CreatePoolDecoded;
|
|
pub use dex::KbMeteoraDammV1DecodedEvent;
|
|
pub use dex::KbMeteoraDammV1Decoder;
|
|
pub use dex::KbMeteoraDammV1SwapDecoded;
|
|
pub use dex::KbMeteoraDammV2CreatePoolDecoded;
|
|
pub use dex::KbMeteoraDammV2DecodedEvent;
|
|
pub use dex::KbMeteoraDammV2Decoder;
|
|
pub use dex::KbMeteoraDammV2SwapDecoded;
|
|
pub use dex::KbMeteoraDbcCreatePoolDecoded;
|
|
pub use dex::KbMeteoraDbcDecodedEvent;
|
|
pub use dex::KbMeteoraDbcDecoder;
|
|
pub use dex::KbMeteoraDbcSwapDecoded;
|
|
pub use dex::KbOrcaWhirlpoolsCreatePoolDecoded;
|
|
pub use dex::KbOrcaWhirlpoolsDecodedEvent;
|
|
pub use dex::KbOrcaWhirlpoolsDecoder;
|
|
pub use dex::KbOrcaWhirlpoolsSwapDecoded;
|
|
pub use dex::KbPumpFunCreateV2TokenDecoded;
|
|
pub use dex::KbPumpFunDecodedEvent;
|
|
pub use dex::KbPumpFunDecoder;
|
|
pub use dex::KbPumpSwapDecodedEvent;
|
|
pub use dex::KbPumpSwapDecoder;
|
|
pub use dex::KbPumpSwapTradeDecoded;
|
|
pub use dex::KbRaydiumAmmV4DecodedEvent;
|
|
pub use dex::KbRaydiumAmmV4Decoder;
|
|
pub use dex::KbRaydiumAmmV4Initialize2PoolDecoded;
|
|
pub use dex_decode::KbDexDecodeService;
|
|
pub use dex_detect::KbDexDetectService;
|
|
pub use dex_detect::KbDexPoolDetectionResult;
|
|
pub use error::KbError;
|
|
pub use http_client::HttpClient;
|
|
pub use http_client::KbHttpEndpointStatus;
|
|
pub use http_client::KbHttpMethodClass;
|
|
pub use http_client::KbJsonRpcHttpErrorObject;
|
|
pub use http_client::KbJsonRpcHttpErrorResponse;
|
|
pub use http_client::KbJsonRpcHttpRequest;
|
|
pub use http_client::KbJsonRpcHttpResponse;
|
|
pub use http_client::KbJsonRpcHttpSuccessResponse;
|
|
pub use http_client::parse_kb_json_rpc_http_response_text;
|
|
pub use http_client::parse_kb_json_rpc_http_response_value;
|
|
pub use http_pool::HttpEndpointPool;
|
|
pub use http_pool::KbHttpPoolClientSnapshot;
|
|
pub use json_rpc_ws::KbJsonRpcWsErrorObject;
|
|
pub use json_rpc_ws::KbJsonRpcWsErrorResponse;
|
|
pub use json_rpc_ws::KbJsonRpcWsIncomingMessage;
|
|
pub use json_rpc_ws::KbJsonRpcWsNotification;
|
|
pub use json_rpc_ws::KbJsonRpcWsNotificationParams;
|
|
pub use json_rpc_ws::KbJsonRpcWsRequest;
|
|
pub use json_rpc_ws::KbJsonRpcWsSuccessResponse;
|
|
pub use json_rpc_ws::kb_is_probable_json_rpc_object_text;
|
|
pub use json_rpc_ws::parse_kb_json_rpc_ws_incoming_text;
|
|
pub use json_rpc_ws::parse_kb_json_rpc_ws_incoming_value;
|
|
pub use launch_origin::KbLaunchAttributionResult;
|
|
pub use launch_origin::KbLaunchOriginService;
|
|
pub use pair_analytic_signal::KbPairAnalyticSignalResult;
|
|
pub use pair_analytic_signal::KbPairAnalyticSignalService;
|
|
pub use pair_candle_aggregation::KbPairCandleAggregationResult;
|
|
pub use pair_candle_aggregation::KbPairCandleAggregationService;
|
|
pub use pair_candle_query::KbPairCandleQueryService;
|
|
pub use pool_origin::KbPoolOriginResult;
|
|
pub use pool_origin::KbPoolOriginService;
|
|
pub use solana_pubsub_ws::KbSolanaWsTypedNotification;
|
|
pub use solana_pubsub_ws::parse_kb_solana_ws_typed_notification;
|
|
pub use solana_pubsub_ws::parse_kb_solana_ws_typed_notification_from_event;
|
|
pub use token_backfill::KbTokenBackfillResult;
|
|
pub use token_backfill::KbTokenBackfillService;
|
|
pub use tracing::KbTracingGuard;
|
|
pub use tracing::init_tracing;
|
|
pub use trade_aggregation::KbTradeAggregationResult;
|
|
pub use trade_aggregation::KbTradeAggregationService;
|
|
pub use tx_model::KbTransactionModelService;
|
|
pub use tx_resolution::KbTransactionResolutionOutcome;
|
|
pub use tx_resolution::KbTransactionResolutionRequest;
|
|
pub use tx_resolution::KbTransactionResolutionService;
|
|
pub use tx_resolution::KbWsTransactionResolutionEnvelope;
|
|
pub use tx_resolution::KbWsTransactionResolutionRelay;
|
|
pub use tx_resolution::KbWsTransactionResolutionRelayStats;
|
|
pub use types::KbConnectionState;
|
|
pub use wallet_holding_observation::KbWalletHoldingObservationResult;
|
|
pub use wallet_holding_observation::KbWalletHoldingObservationService;
|
|
pub use wallet_observation::KbWalletObservationResult;
|
|
pub use wallet_observation::KbWalletObservationService;
|
|
pub use ws_client::WsClient;
|
|
pub use ws_client::WsEvent;
|
|
pub use ws_client::WsOutgoingMessage;
|
|
pub use ws_client::WsSubscriptionInfo;
|
|
pub use ws_hybrid_observation::KbWsHybridObservationResult;
|
|
pub use ws_hybrid_observation::KbWsHybridObservationService;
|
|
pub use ws_hybrid_runtime::KbWsHybridRuntimeService;
|
|
pub use ws_hybrid_watch::KbWsHybridWatchService;
|
|
pub use ws_hybrid_watch::KbWsHybridWatchSnapshot;
|
|
pub use ws_hybrid_watch::KbWsWatchTarget;
|
|
pub use ws_hybrid_watch::KbWsWatchTargetKind;
|
|
pub use ws_manager::WsManagedEndpointSnapshot;
|
|
pub use ws_manager::WsManager;
|
|
pub use ws_manager::WsManagerSnapshot;
|