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 = "icrc-host")]
9mod account_transaction_cache;
10#[cfg(any(feature = "icrc-host", feature = "sns-host"))]
11pub(crate) mod ledger;
12#[cfg(feature = "icrc-host")]
13mod live;
14mod model;
15mod text;
16
17pub const DEFAULT_ICRC_SOURCE_ENDPOINT: &str = "https://icp-api.io";
18
19#[cfg(feature = "icrc-host")]
20pub use account_transaction_cache::{
21    build_icrc_account_transaction_cache_status_report, build_icrc_account_transaction_list_report,
22    icrc_account_transaction_cache_path, icrc_account_transaction_refresh_attempt_path,
23    icrc_account_transaction_refresh_lock_path, load_cached_icrc_account_transactions,
24    load_or_refresh_missing_icrc_account_transactions,
25    load_or_refresh_missing_icrc_account_transactions_with_source,
26    load_or_refresh_stale_icrc_account_transactions,
27    load_or_refresh_stale_icrc_account_transactions_with_source,
28    refresh_icrc_account_transaction_cache, refresh_icrc_account_transaction_cache_with_progress,
29    refresh_icrc_account_transaction_cache_with_source,
30};
31#[cfg(feature = "icrc-host")]
32pub use live::{
33    ICRC_ACCOUNT_TRANSACTION_MAX_PAGE_SIZE,
34    build::{
35        build_icrc_account_transaction_page_report,
36        build_icrc_account_transaction_page_report_with_source, build_icrc_allowance_report,
37        build_icrc_allowance_report_with_source, build_icrc_archives_report,
38        build_icrc_archives_report_with_source, build_icrc_balance_report,
39        build_icrc_balance_report_with_source, build_icrc_block_types_report,
40        build_icrc_block_types_report_with_source, build_icrc_capabilities_report,
41        build_icrc_capabilities_report_with_source, build_icrc_index_report,
42        build_icrc_index_report_with_source, build_icrc_tip_certificate_report,
43        build_icrc_tip_certificate_report_with_source, build_icrc_token_report,
44        build_icrc_token_report_with_source, build_icrc_transactions_report,
45        build_icrc_transactions_report_with_source,
46    },
47    source::{
48        IcrcAccountTransactionCollectionSource, IcrcAccountTransactionPageSource,
49        IcrcAllowanceSource, IcrcArchivesSource, IcrcBalanceSource, IcrcBlockTypesSource,
50        IcrcCapabilitiesSource, IcrcIndexSource, IcrcTipCertificateSource, IcrcTokenSource,
51        IcrcTransactionsSource, LiveIcrcSource,
52    },
53};
54pub use model::normalize_subaccount_hex;
55#[cfg(feature = "icrc-host")]
56pub use model::{
57    CachedIcrcAccountTransactionSnapshot, IcrcAccountTransactionCollectionData,
58    IcrcCapabilitiesData, IcrcIndexData, IcrcTransactionsData,
59};
60pub use model::{
61    IcrcAccountRow, IcrcAccountTransactionCacheRequest, IcrcAccountTransactionCacheStatusReport,
62    IcrcAccountTransactionCacheSummary, IcrcAccountTransactionError,
63    IcrcAccountTransactionListReport, IcrcAccountTransactionListRequest,
64    IcrcAccountTransactionPageData, IcrcAccountTransactionPageReport,
65    IcrcAccountTransactionPageRequest, IcrcAccountTransactionRefreshAttemptStatus,
66    IcrcAccountTransactionRefreshReport, IcrcAccountTransactionRefreshRequest,
67    IcrcAccountTransactionRow, IcrcAccountTransactionSnapshot, IcrcAccountTransactionSort,
68    IcrcAllowanceData, IcrcAllowanceReport, IcrcAllowanceRequest, IcrcArchiveFollowErrorRow,
69    IcrcArchiveRow, IcrcArchivedBlocksRow, IcrcArchivedRangeRow, IcrcArchivesReport,
70    IcrcArchivesRequest, IcrcBalanceData, IcrcBalanceReport, IcrcBalanceRequest, IcrcBlockTypeRow,
71    IcrcBlockTypesReport, IcrcCapabilitiesReport, IcrcCapabilityRow, IcrcCapabilityStatus,
72    IcrcError, IcrcFollowedArchiveBlockRow, IcrcIndexReport, IcrcLedgerRequest,
73    IcrcMetadataValueKind, IcrcTipCertificateReport, IcrcTokenData, IcrcTokenMetadataRow,
74    IcrcTokenReport, IcrcTokenStandardRow, IcrcTransactionBlockRow, IcrcTransactionsReport,
75    IcrcTransactionsRequest,
76};
77pub use text::{
78    icrc_account_transaction_cache_status_report_text, icrc_account_transaction_list_report_text,
79    icrc_account_transaction_page_report_text, icrc_account_transaction_refresh_report_text,
80    icrc_allowance_report_text, icrc_archives_report_text, icrc_balance_report_text,
81    icrc_block_types_report_text, icrc_capabilities_report_text, icrc_index_report_text,
82    icrc_tip_certificate_report_text, icrc_token_report_text, icrc_transactions_report_text,
83};
84
85#[cfg(all(test, feature = "icrc-host"))]
86mod tests;