This commit is contained in:
2026-04-29 14:32:18 +02:00
parent f0831e4cd4
commit 5813c526ae
15 changed files with 1241 additions and 340 deletions

View File

@@ -8,44 +8,235 @@
#![deny(unreachable_pub)]
#![warn(missing_docs)]
mod constants;
mod error;
mod config;
mod tracing;
mod types;
mod ws_client;
mod json_rpc_ws;
mod solana_pubsub_ws;
mod ws_manager;
mod http_client;
mod http_pool;
mod constants;
mod db;
mod detect;
mod tx_resolution;
mod tx_model;
mod dex;
mod dex_decode;
mod dex_detect;
mod error;
mod http_client;
mod http_pool;
mod json_rpc_ws;
mod launch_origin;
mod pool_origin;
mod solana_pubsub_ws;
mod tracing;
mod tx_model;
mod tx_resolution;
mod types;
mod ws_client;
mod ws_manager;
pub use constants::*;
pub use error::KbError;
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::KbWsEndpointConfig;
pub use config::KbDatabaseConfig;
pub use config::KbSqliteDatabaseConfig;
pub use tracing::KbTracingGuard;
pub use tracing::init_tracing;
pub use types::KbConnectionState;
pub use ws_client::WsClient;
pub use ws_client::WsEvent;
pub use ws_client::WsOutgoingMessage;
pub use ws_client::WsSubscriptionInfo;
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::KbPairDto;
pub use db::KbPairEntity;
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::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_by_pool_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::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_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::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_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 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;
@@ -56,210 +247,27 @@ 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 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 ws_manager::WsManagedEndpointSnapshot;
pub use ws_manager::WsManager;
pub use ws_manager::WsManagerSnapshot;
pub use http_client::HttpClient;
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::KbHttpEndpointStatus;
pub use http_client::KbHttpMethodClass;
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 db::KbDatabase;
pub use db::KbDatabaseBackend;
pub use db::KbDatabaseConnection;
pub use db::KbDbMetadataDto;
pub use db::KbDbMetadataEntity;
pub use db::get_db_metadata;
pub use db::list_db_metadata;
pub use db::upsert_db_metadata;
pub use db::KbDbRuntimeEventDto;
pub use db::KbDbRuntimeEventEntity;
pub use db::KbDbRuntimeEventLevel;
pub use db::KbKnownHttpEndpointDto;
pub use db::KbKnownHttpEndpointEntity;
pub use db::KbKnownWsEndpointDto;
pub use db::KbKnownWsEndpointEntity;
pub use db::KbObservedTokenDto;
pub use db::KbObservedTokenEntity;
pub use db::KbObservedTokenStatus;
pub use db::KbAnalysisSignalDto;
pub use db::KbAnalysisSignalEntity;
pub use db::KbAnalysisSignalSeverity;
pub use db::KbObservationSourceKind;
pub use db::KbOnchainObservationDto;
pub use db::KbOnchainObservationEntity;
pub use db::KbDexDto;
pub use db::KbDexEntity;
pub use db::KbPairDto;
pub use db::KbPairEntity;
pub use db::KbPoolDto;
pub use db::KbPoolEntity;
pub use db::KbPoolKind;
pub use db::KbPoolListingDto;
pub use db::KbPoolListingEntity;
pub use db::KbPoolStatus;
pub use db::KbPoolTokenDto;
pub use db::KbPoolTokenEntity;
pub use db::KbPoolTokenRole;
pub use db::KbTokenDto;
pub use db::KbTokenEntity;
pub use db::KbLiquidityEventDto;
pub use db::KbLiquidityEventEntity;
pub use db::KbLiquidityEventKind;
pub use db::KbSwapDto;
pub use db::KbSwapEntity;
pub use db::KbSwapTradeSide;
pub use db::KbTokenBurnEventDto;
pub use db::KbTokenBurnEventEntity;
pub use db::KbTokenMintEventDto;
pub use db::KbTokenMintEventEntity;
pub use db::KbChainInstructionDto;
pub use db::KbChainSlotDto;
pub use db::KbChainTransactionDto;
pub use db::KbChainInstructionEntity;
pub use db::KbChainSlotEntity;
pub use db::KbChainTransactionEntity;
pub use db::KbDexDecodedEventDto;
pub use db::KbDexDecodedEventEntity;
pub use db::KbLaunchSurfaceDto;
pub use db::KbLaunchSurfaceKeyDto;
pub use db::KbLaunchAttributionDto;
pub use db::KbLaunchSurfaceEntity;
pub use db::KbLaunchSurfaceKeyEntity;
pub use db::KbLaunchAttributionEntity;
pub use db::upsert_launch_surface;
pub use db::get_launch_surface_by_code;
pub use db::list_launch_surfaces;
pub use db::upsert_launch_surface_key;
pub use db::get_launch_surface_key_by_match;
pub use db::list_launch_surface_keys_by_surface_id;
pub use db::upsert_launch_attribution;
pub use db::get_launch_attribution_by_decoded_event_id;
pub use db::list_launch_attributions_by_pool_id;
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::insert_chain_instruction;
pub use db::list_chain_instructions_by_transaction_id;
pub use db::list_recent_chain_slots;
pub use db::list_recent_chain_transactions;
pub use db::upsert_chain_slot;
pub use db::upsert_chain_transaction;
pub use db::list_recent_liquidity_events;
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::upsert_liquidity_event;
pub use db::upsert_swap;
pub use db::upsert_token_burn_event;
pub use db::upsert_token_mint_event;
pub use db::get_token_by_mint;
pub use db::list_dexes;
pub use db::upsert_dex;
pub use db::upsert_pair;
pub use db::upsert_pool;
pub use db::upsert_pool_listing;
pub use db::upsert_pool_token;
pub use db::upsert_token;
pub use db::insert_analysis_signal;
pub use db::insert_onchain_observation;
pub use db::list_recent_analysis_signals;
pub use db::list_recent_onchain_observations;
pub use db::get_observed_token_by_mint;
pub use db::list_observed_tokens;
pub use db::upsert_observed_token;
pub use db::get_known_http_endpoint;
pub use db::get_known_ws_endpoint;
pub use db::insert_db_runtime_event;
pub use db::list_known_http_endpoints;
pub use db::list_known_ws_endpoints;
pub use db::list_recent_db_runtime_events;
pub use db::upsert_known_http_endpoint;
pub use db::upsert_known_ws_endpoint;
pub use db::get_dex_by_code;
pub use db::get_pair_by_pool_id;
pub use db::get_pool_by_address;
pub use db::get_pool_listing_by_pool_id;
pub use db::list_pairs;
pub use db::list_pool_listings;
pub use db::list_pool_tokens_by_pool_id;
pub use db::list_pools;
pub use db::get_dex_decoded_event_by_key;
pub use db::list_dex_decoded_events_by_transaction_id;
pub use db::upsert_dex_decoded_event;
pub use detect::KbDetectionObservationInput;
pub use detect::KbDetectionPersistenceService;
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 detect::KbDetectionPoolCandidateInput;
pub use detect::KbDetectionPoolCandidateResult;
pub use tracing::KbTracingGuard;
pub use tracing::init_tracing;
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 tx_model::KbTransactionModelService;
pub use dex::KB_RAYDIUM_AMM_V4_PROGRAM_ID;
pub use dex::KbRaydiumAmmV4DecodedEvent;
pub use dex::KbRaydiumAmmV4Decoder;
pub use dex::KbRaydiumAmmV4Initialize2PoolDecoded;
pub use dex::KB_PUMP_FUN_PROGRAM_ID;
pub use dex::KbPumpFunCreateV2TokenDecoded;
pub use dex::KbPumpFunDecodedEvent;
pub use dex::KbPumpFunDecoder;
pub use dex::KB_PUMP_SWAP_PROGRAM_ID;
pub use dex::KbPumpSwapDecodedEvent;
pub use dex::KbPumpSwapDecoder;
pub use dex::KbPumpSwapTradeDecoded;
pub use dex::KB_METEORA_DBC_PROGRAM_ID;
pub use dex::KbMeteoraDbcCreatePoolDecoded;
pub use dex::KbMeteoraDbcDecodedEvent;
pub use dex::KbMeteoraDbcDecoder;
pub use dex::KbMeteoraDbcSwapDecoded;
pub use dex::KB_METEORA_DAMM_V1_PROGRAM_ID;
pub use dex::KbMeteoraDammV1CreatePoolDecoded;
pub use dex::KbMeteoraDammV1DecodedEvent;
pub use dex::KbMeteoraDammV1Decoder;
pub use dex::KbMeteoraDammV1SwapDecoded;
pub use dex::KB_METEORA_DAMM_V2_PROGRAM_ID;
pub use dex::KbMeteoraDammV2CreatePoolDecoded;
pub use dex::KbMeteoraDammV2DecodedEvent;
pub use dex::KbMeteoraDammV2Decoder;
pub use dex::KbMeteoraDammV2SwapDecoded;
pub use dex_decode::KbDexDecodeService;
pub use dex_detect::KbDexDetectService;
pub use dex_detect::KbDexPoolDetectionResult;
pub use dex::KB_ORCA_WHIRLPOOLS_PROGRAM_ID;
pub use dex::KbOrcaWhirlpoolsCreatePoolDecoded;
pub use dex::KbOrcaWhirlpoolsDecodedEvent;
pub use dex::KbOrcaWhirlpoolsDecoder;
pub use dex::KbOrcaWhirlpoolsSwapDecoded;
pub use dex::KB_FLUXBEAM_PROGRAM_ID;
pub use dex::KbFluxbeamCreatePoolDecoded;
pub use dex::KbFluxbeamDecodedEvent;
pub use dex::KbFluxbeamDecoder;
pub use dex::KbFluxbeamSwapDecoded;
pub use dex::KB_DEXLAB_PROGRAM_ID;
pub use dex::KbDexlabCreatePoolDecoded;
pub use dex::KbDexlabDecodedEvent;
pub use dex::KbDexlabDecoder;
pub use dex::KbDexlabSwapDecoded;
pub use launch_origin::KbLaunchAttributionResult;
pub use launch_origin::KbLaunchOriginService;
pub use types::KbConnectionState;
pub use ws_client::WsClient;
pub use ws_client::WsEvent;
pub use ws_client::WsOutgoingMessage;
pub use ws_client::WsSubscriptionInfo;
pub use ws_manager::WsManagedEndpointSnapshot;
pub use ws_manager::WsManager;
pub use ws_manager::WsManagerSnapshot;