Skip to main content

ic_query/icrc/
mod.rs

1//! Module: icrc
2//!
3//! Responsibility: expose generic ICRC ledger request and report APIs.
4//! Does not own: SNS lookup, NNS registry cache behavior, or release flow.
5//! Boundary: exposes live read-only token metadata, account balance, allowance,
6//! index discovery, account and ledger transaction history, block type, and archive reports.
7
8#[cfg(feature = "host")]
9mod account_transaction_cache;
10#[cfg(feature = "host")]
11pub(crate) mod ledger;
12#[cfg(feature = "host")]
13mod live;
14mod model;
15mod text;
16
17pub const DEFAULT_ICRC_SOURCE_ENDPOINT: &str = "https://icp-api.io";
18
19#[cfg(feature = "host")]
20pub use account_transaction_cache::{
21    DEFAULT_ICRC_ACCOUNT_TRANSACTION_REFRESH_LOCK_STALE_SECONDS,
22    build_icrc_account_transaction_cache_status_report, build_icrc_account_transaction_list_report,
23    icrc_account_transaction_cache_path, icrc_account_transaction_refresh_attempt_path,
24    icrc_account_transaction_refresh_lock_path, load_cached_icrc_account_transactions,
25    load_or_refresh_missing_icrc_account_transactions,
26    load_or_refresh_missing_icrc_account_transactions_with_source,
27    load_or_refresh_stale_icrc_account_transactions,
28    load_or_refresh_stale_icrc_account_transactions_with_source,
29    refresh_icrc_account_transaction_cache, refresh_icrc_account_transaction_cache_with_progress,
30    refresh_icrc_account_transaction_cache_with_source,
31};
32#[cfg(feature = "host")]
33pub use live::{
34    ICRC_ACCOUNT_TRANSACTION_MAX_PAGE_SIZE, IcrcAccountTransactionCollectionSource,
35    IcrcAccountTransactionPageSource, IcrcAllowanceSource, IcrcArchivesSource, IcrcBalanceSource,
36    IcrcBlockTypesSource, IcrcCapabilitiesSource, IcrcIndexSource, IcrcTipCertificateSource,
37    IcrcTokenSource, IcrcTransactionsSource, LiveIcrcSource,
38    build_icrc_account_transaction_page_report,
39    build_icrc_account_transaction_page_report_with_source, build_icrc_allowance_report,
40    build_icrc_allowance_report_with_source, build_icrc_archives_report,
41    build_icrc_archives_report_with_source, build_icrc_balance_report,
42    build_icrc_balance_report_with_source, build_icrc_block_types_report,
43    build_icrc_block_types_report_with_source, build_icrc_capabilities_report,
44    build_icrc_capabilities_report_with_source, build_icrc_index_report,
45    build_icrc_index_report_with_source, build_icrc_tip_certificate_report,
46    build_icrc_tip_certificate_report_with_source, build_icrc_token_report,
47    build_icrc_token_report_with_source, build_icrc_transactions_report,
48    build_icrc_transactions_report_with_source,
49};
50pub use model::normalize_subaccount_hex;
51#[cfg(feature = "host")]
52pub use model::{
53    CachedIcrcAccountTransactionSnapshot, IcrcAccountTransactionCollectionData,
54    IcrcAccountTransactionPageData, IcrcAllowanceData, IcrcArchivesData, IcrcBalanceData,
55    IcrcBlockTypesData, IcrcCapabilitiesData, IcrcIndexData, IcrcTipCertificateData, IcrcTokenData,
56    IcrcTransactionsData,
57};
58pub use model::{
59    IcrcAccountRow, IcrcAccountTransactionCacheRequest, IcrcAccountTransactionCacheStatusReport,
60    IcrcAccountTransactionCacheSummary, IcrcAccountTransactionCompleteness,
61    IcrcAccountTransactionError, IcrcAccountTransactionListReport,
62    IcrcAccountTransactionListRequest, IcrcAccountTransactionPageReport,
63    IcrcAccountTransactionPageRequest, IcrcAccountTransactionRefreshAttemptStatus,
64    IcrcAccountTransactionRefreshReport, IcrcAccountTransactionRefreshRequest,
65    IcrcAccountTransactionRow, IcrcAccountTransactionSnapshot, IcrcAccountTransactionSort,
66    IcrcAllowanceReport, IcrcAllowanceRequest, IcrcArchiveFollowErrorRow, IcrcArchiveRow,
67    IcrcArchivedBlocksRow, IcrcArchivedRangeRow, IcrcArchivesReport, IcrcArchivesRequest,
68    IcrcBalanceReport, IcrcBalanceRequest, IcrcBlockTypeRow, IcrcBlockTypesReport,
69    IcrcCapabilitiesReport, IcrcCapabilityRow, IcrcError, IcrcFollowedArchiveBlockRow,
70    IcrcIndexReport, IcrcLedgerRequest, IcrcTipCertificateReport, IcrcTokenMetadataRow,
71    IcrcTokenReport, IcrcTokenStandardRow, IcrcTransactionBlockRow, IcrcTransactionsReport,
72    IcrcTransactionsRequest,
73};
74pub use text::{
75    icrc_account_transaction_cache_status_report_text, icrc_account_transaction_list_report_text,
76    icrc_account_transaction_page_report_text, icrc_account_transaction_refresh_report_text,
77    icrc_allowance_report_text, icrc_archives_report_text, icrc_balance_report_text,
78    icrc_block_types_report_text, icrc_capabilities_report_text, icrc_index_report_text,
79    icrc_tip_certificate_report_text, icrc_token_report_text, icrc_transactions_report_text,
80};
81
82#[cfg(all(test, feature = "host"))]
83mod tests;