0.7.46
This commit is contained in:
@@ -435,6 +435,21 @@ pub(crate) struct Demo3OnchainDexDiscoveryRequest {
|
||||
pub signature_source: std::option::Option<std::string::String>,
|
||||
/// Optional source address used when signature_source is `address`.
|
||||
pub source_address: std::option::Option<std::string::String>,
|
||||
/// Optional extra source addresses used for multi-pool discovery.
|
||||
#[serde(default)]
|
||||
pub source_addresses: std::vec::Vec<std::string::String>,
|
||||
/// Optional `before` cursor passed to Solana getSignaturesForAddress.
|
||||
#[serde(default)]
|
||||
pub before_signature: std::option::Option<std::string::String>,
|
||||
/// Optional `until` cursor passed to Solana getSignaturesForAddress.
|
||||
#[serde(default)]
|
||||
pub until_signature: std::option::Option<std::string::String>,
|
||||
/// Maximum number of signature pages to fetch per source address.
|
||||
#[serde(default)]
|
||||
pub max_pages: u32,
|
||||
/// Signature processing order: newest_first or oldest_first.
|
||||
#[serde(default)]
|
||||
pub scan_order: std::option::Option<std::string::String>,
|
||||
/// Optional target event family used to find non-swap signatures.
|
||||
pub target_event: std::option::Option<std::string::String>,
|
||||
/// Whether transactions containing swap-like logs should be skipped.
|
||||
@@ -479,6 +494,16 @@ pub(crate) struct Demo3OnchainDexDiscoveryResult {
|
||||
pub resolved_signature_source: std::string::String,
|
||||
/// Address scanned with getSignaturesForAddress.
|
||||
pub resolved_signature_address: std::string::String,
|
||||
/// All addresses scanned with getSignaturesForAddress.
|
||||
pub resolved_signature_addresses: std::vec::Vec<std::string::String>,
|
||||
/// Cursor hints by scanned address.
|
||||
pub next_before_by_address: std::vec::Vec<Demo3OnchainDexPaginationCursor>,
|
||||
/// Number of signature pages fetched.
|
||||
#[ts(type = "number")]
|
||||
pub fetched_signature_page_count: usize,
|
||||
/// Number of unique fetched signatures after de-duplication.
|
||||
#[ts(type = "number")]
|
||||
pub unique_fetched_signature_count: usize,
|
||||
/// Number of unique candidate signatures.
|
||||
#[ts(type = "number")]
|
||||
pub unique_signature_count: usize,
|
||||
@@ -517,6 +542,23 @@ pub(crate) struct Demo3OnchainDexDiscoveryResult {
|
||||
pub candidates: std::vec::Vec<Demo3OnchainDexPairCandidate>,
|
||||
}
|
||||
|
||||
/// Pagination cursor hint for one scanned source address.
|
||||
#[derive(Clone, Debug, serde::Serialize, TS)]
|
||||
#[ts(export, export_to = "../frontend/ts/bindings/Demo3OnchainDexPaginationCursor.ts")]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub(crate) struct Demo3OnchainDexPaginationCursor {
|
||||
/// Scanned source address.
|
||||
pub address: std::string::String,
|
||||
/// Signature usable as beforeSignature for the next page window.
|
||||
pub next_before_signature: std::option::Option<std::string::String>,
|
||||
/// Raw signature count fetched for this address.
|
||||
#[ts(type = "number")]
|
||||
pub fetched_signature_count: usize,
|
||||
/// Page count fetched for this address.
|
||||
#[ts(type = "number")]
|
||||
pub fetched_page_count: usize,
|
||||
}
|
||||
|
||||
/// Rejected on-chain discovery candidate summary.
|
||||
#[derive(Clone, Debug, serde::Serialize, TS)]
|
||||
#[ts(
|
||||
@@ -685,6 +727,11 @@ fn to_lib_onchain_request(
|
||||
program_id: normalize_optional_text(request.program_id.clone()),
|
||||
signature_source: normalize_optional_text(request.signature_source.clone()),
|
||||
source_address: normalize_optional_text(request.source_address.clone()),
|
||||
source_addresses: request.source_addresses.clone(),
|
||||
before_signature: normalize_optional_text(request.before_signature.clone()),
|
||||
until_signature: normalize_optional_text(request.until_signature.clone()),
|
||||
max_pages: request.max_pages,
|
||||
scan_order: normalize_optional_text(request.scan_order.clone()),
|
||||
target_event: normalize_optional_text(request.target_event.clone()),
|
||||
exclude_swaps: request.exclude_swaps,
|
||||
include_failed: request.include_failed,
|
||||
@@ -708,6 +755,11 @@ fn from_lib_onchain_result(
|
||||
program_id: result.request.program_id,
|
||||
signature_source: result.request.signature_source,
|
||||
source_address: result.request.source_address,
|
||||
source_addresses: result.request.source_addresses,
|
||||
before_signature: result.request.before_signature,
|
||||
until_signature: result.request.until_signature,
|
||||
max_pages: result.request.max_pages,
|
||||
scan_order: result.request.scan_order,
|
||||
target_event: result.request.target_event,
|
||||
exclude_swaps: result.request.exclude_swaps,
|
||||
include_failed: result.request.include_failed,
|
||||
@@ -720,6 +772,10 @@ fn from_lib_onchain_result(
|
||||
resolved_program_id: result.resolved_program_id,
|
||||
resolved_signature_source: result.resolved_signature_source,
|
||||
resolved_signature_address: result.resolved_signature_address,
|
||||
resolved_signature_addresses: result.resolved_signature_addresses,
|
||||
next_before_by_address: from_lib_onchain_pagination_cursors(result.next_before_by_address),
|
||||
fetched_signature_page_count: result.fetched_signature_page_count,
|
||||
unique_fetched_signature_count: result.unique_fetched_signature_count,
|
||||
unique_signature_count: result.unique_signature_count,
|
||||
unique_backfill_signatures: result.unique_backfill_signatures,
|
||||
rejected_candidate_summary: from_lib_rejected_candidate_summary(
|
||||
@@ -738,6 +794,21 @@ fn from_lib_onchain_result(
|
||||
};
|
||||
}
|
||||
|
||||
fn from_lib_onchain_pagination_cursors(
|
||||
values: std::vec::Vec<kb_lib::OnchainDexPaginationCursorDto>,
|
||||
) -> std::vec::Vec<Demo3OnchainDexPaginationCursor> {
|
||||
let mut mapped = std::vec::Vec::new();
|
||||
for value in values {
|
||||
mapped.push(Demo3OnchainDexPaginationCursor {
|
||||
address: value.address,
|
||||
next_before_signature: value.next_before_signature,
|
||||
fetched_signature_count: value.fetched_signature_count,
|
||||
fetched_page_count: value.fetched_page_count,
|
||||
});
|
||||
}
|
||||
return mapped;
|
||||
}
|
||||
|
||||
fn from_lib_rejected_candidate_summary(
|
||||
values: std::vec::Vec<kb_lib::OnchainDexRejectedCandidateSummaryDto>,
|
||||
) -> std::vec::Vec<Demo3OnchainDexRejectedCandidateSummary> {
|
||||
|
||||
Reference in New Issue
Block a user