0.5.1-pre.002

This commit is contained in:
2026-08-09 19:34:08 +02:00
parent 816eee59a9
commit 6a680767ae
767 changed files with 12257 additions and 12195 deletions

View File

@@ -0,0 +1,36 @@
<!-- file: ks-program-ids/CHANGELOG.md -->
<!-- version: 8 -->
# CHANGELOG — ks-program-ids
## `0.5.1-pre.002`
- renomme `kb-program-ids` en `ks-program-ids` et l'identifiant Rust `kb_program_ids` en `ks_program_ids` ;
- met à jour les consommateurs et tests sans modifier le registre des Program IDs.
## 0.4.6
- alignement de la crate sur la version fonctionnelle bot3 `0.4.6` ;
- clôture des tâches de migration applicables et report explicite des évolutions ultérieures dans le TODO.
## 0.1.0-pre.073
- ajout de larchive documentaire bobobot, indexée par [`olddocs/archivekbobobot/001.README.md`](../olddocs/archivekbobobot/001.README.md), comme source historique future pour les Program IDs et IDL ;
## 0.1.0-pre.072
- reclassement du TODO selon les blocants avant `0.4.6`, les travaux `0.4.7`, les versions ultérieures et les dépendances conditionnelles.
## 0.1.0-pre.071
- réécriture du README comme référence de la façade publique bot3 ;
- ajout du TODO, du guide dutilisation et du changelog de crate ;
- clarification de la différence entre Program ID réservé et surface implémentée ;
- documentation du futur registre de sources Program IDs et IDL.
## 0.1.0-pre.062
- migration et consolidation du registre bot2 ;
- conservation des identifiants Solana Core, SPL et des protocoles réservés ;
- maintien de la séparation entre programmes natifs exécutables et comptes connus ;
- adaptation aux normes Rust 2024 et Khadhroony bot3.

12
ks-program-ids/Cargo.toml Normal file
View File

@@ -0,0 +1,12 @@
# file: ks-program-ids/Cargo.toml
# version: 2
[package]
name = "ks-program-ids"
version.workspace = true
edition.workspace = true
license.workspace = true
publish.workspace = true
[lints]
workspace = true

38
ks-program-ids/README.md Normal file
View File

@@ -0,0 +1,38 @@
<!-- file: ks-program-ids/README.md -->
<!-- version: 9 -->
# ks-program-ids
`ks-program-ids` est la source Rust canonique des Program IDs Solana et des comptes connus utilisés par le workspace.
## Responsabilités
- exposer les constantes Base58 canoniques ;
- fournir un registre énumérable et trié ;
- distinguer les programmes natifs exécutables des comptes natifs connus ;
- offrir une recherche exacte par adresse ;
- réserver les identifiants nécessaires aux surfaces futures sans les déclarer implémentées.
La présence dun Program ID dans cette crate ne signifie pas quun décodeur, exécuteur ou matérialisateur existe.
## API publique
- constantes `*_PROGRAM_ID` ;
- `STAKE_CONFIG_ACCOUNT_ID` et alias historique associé ;
- `ProgramIdEntry` ;
- `entries()` ;
- `registered_program_ids()` ;
- `native_program_ids()` ;
- `native_well_known_account_ids()` ;
- `find_registered_program_id()`.
## Sources documentaires
La documentation détaillée des Program IDs, de leur vérification et des IDL sera construite séparément. Elle pourra utiliser les archives bot2 et dautres projets historiques, mais le code de production reste fondé sur les constantes vérifiées de cette crate.
## Documentation
- [USAGE.md](USAGE.md)
- [TODO.md](TODO.md)
- [CHANGELOG.md](CHANGELOG.md)
- [Matrice des surfaces](../docs/architecture/SURFACE_CRATE_MATRIX.md)

16
ks-program-ids/TODO.md Normal file
View File

@@ -0,0 +1,16 @@
<!-- file: ks-program-ids/TODO.md -->
<!-- version: 3 -->
# TODO — ks-program-ids
## Documentation ultérieure nécessitant des sources complémentaires
- [ ] Documentation - produire le registre vérifié des Program IDs et de leurs sources.
- [ ] Documentation - associer chaque IDL archivée à sa provenance vérifiée et à son Program ID.
- [ ] Audit - rescanner les documents historiques bot2 avant de déclarer linventaire complet.
- [ ] Audit - intégrer les sources dun projet antérieur à bot2 lorsquelles seront fournies.
## Versions protocolaires concernées
- [ ] Pump - confirmer la nature de `MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e` avant classement en `0.9.x`.
- [ ] Pump - déterminer si `pumpup_ai` appartient à la famille Pump ou à un protocole distinct avant `0.9.x`.

134
ks-program-ids/USAGE.md Normal file
View File

@@ -0,0 +1,134 @@
<!-- file: ks-program-ids/USAGE.md -->
<!-- version: 2 -->
# Utilisation de ks-program-ids
## Objectif
La crate fournit des identifiants Solana canoniques et un registre public énumérable.
## Utiliser une constante canonique
```rust
let token_program =
ks_program_ids::SPL_TOKEN_PROGRAM_ID;
let token_2022_program =
ks_program_ids::SPL_TOKEN_2022_PROGRAM_ID;
assert_ne!(token_program, token_2022_program);
```
Les constantes sont des chaînes Base58. Le consommateur peut les parser dans le type Solana requis par sa propre API.
## Parser une constante en `Pubkey`
```rust
use std::str::FromStr; // rust-rules: trait-import
let program_id = match solana_pubkey::Pubkey::from_str(
ks_program_ids::SYSTEM_PROGRAM_ID,
) {
std::result::Result::Ok(value) => value,
std::result::Result::Err(error) => {
return std::result::Result::Err(
ks_core::Error::new(
"program_id_invalid",
error.to_string(),
),
);
},
};
```
## Parcourir le registre complet
```rust
for entry in ks_program_ids::registered_program_ids() {
println!(
"{}={}",
entry.code(),
entry.program_id()
);
}
```
`entries()` est un alias de compatibilité de `registered_program_ids()`.
## Rechercher une adresse exacte
```rust
let entry = ks_program_ids::find_registered_program_id(
ks_program_ids::SYSTEM_PROGRAM_ID,
);
match entry {
std::option::Option::Some(value) => {
assert_eq!(value.code(), "system");
},
std::option::Option::None => {
return std::result::Result::Err(
ks_core::Error::new(
"program_id_not_registered",
"system program must be registered",
),
);
},
}
```
## Distinguer programmes natifs et comptes connus
```rust
let native_programs =
ks_program_ids::native_program_ids();
let native_accounts =
ks_program_ids::native_well_known_account_ids();
assert!(native_programs.iter().any(|entry| {
entry.program_id()
== ks_program_ids::SYSTEM_PROGRAM_ID
}));
assert!(native_accounts.iter().any(|entry| {
entry.program_id()
== ks_program_ids::STAKE_CONFIG_ACCOUNT_ID
}));
```
`STAKE_CONFIG_ACCOUNT_ID` désigne un compte connu, pas un programme exécutable. `STAKE_CONFIG_PROGRAM_ID` reste un alias historique de compatibilité.
## Construire un ensemble de filtrage
```rust
let supported = [
ks_program_ids::SPL_MEMO_V4_PROGRAM_ID,
ks_program_ids::SPL_TOKEN_PROGRAM_ID,
ks_program_ids::SPL_TOKEN_2022_PROGRAM_ID,
];
let matches = supported.contains(
&observed_program_id.as_str(),
);
```
## Erreurs et invariants
- les recherches sont exactes et sensibles à la casse ;
- les codes du registre sont stables et triés ;
- une constante réservée ne prouve pas limplémentation dune surface ;
- les comptes connus non exécutables doivent rester séparés des programmes ;
- les sources documentaires futures ne remplacent pas la vérification du code.
## Tests de référence
- `registry_entries_are_unique_and_non_empty` ;
- `native_registry_contains_exactly_every_solana_core_surface` ;
- `stake_config_is_a_well_known_account_not_an_executable_program` ;
- `registry_lookup_finds_system_program` ;
- `protocol_primitives_are_registered_without_joining_native_surfaces`.
## Limites durables
- la crate ne vérifie pas en temps réel le déploiement réseau dun programme ;
- elle ne télécharge pas dIDL ;
- elle ne détermine pas si une surface est décodée, exécutée ou matérialisée.

View File

@@ -0,0 +1,947 @@
// file: ks-program-ids/src/constants.rs
// version: 8
//! Canonical Solana program and well-known account identifiers.
/// Reserved `adapter_spl_token_wrap` program identifier.
pub const ADAPTER_SPL_TOKEN_WRAP_PROGRAM_ID: &str = "TwRapQCDhWkZRrDaHfZGuHxkZ91gHDRkyuzNqeU5MgR";
/// Reserved `adapter_saber_decimal_wrapper` program identifier.
pub const ADAPTER_SABER_DECIMAL_WRAPPER_PROGRAM_ID: &str =
"DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB";
/// Reserved `vesting_jupiter_lock` program identifier.
pub const VESTING_JUPITER_LOCK_PROGRAM_ID: &str = "LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn";
/// Reserved `fees_pump_fees` program identifier.
pub const FEES_PUMP_FEES_PROGRAM_ID: &str = "pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ";
/// Reserved `amm_aldrin_v1` program identifier.
pub const AMM_ALDRIN_V1_PROGRAM_ID: &str = "AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6";
/// Reserved `amm_aldrin_v2` program identifier.
pub const AMM_ALDRIN_V2_PROGRAM_ID: &str = "CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4";
/// Reserved `amm_alphaq` program identifier.
pub const AMM_ALPHAQ_PROGRAM_ID: &str = "ALPHAQmeA7bjrVuccPsYPiCvsi428SNwte66Srvs4pHA";
/// Reserved `amm_believe` program identifier.
pub const AMM_BELIEVE_PROGRAM_ID: &str = "5qWya6UjwWnGVhdSBL3hyZ7B45jbk6Byt1hwd7ohEGXE";
/// Reserved `amm_bonk_swap` program identifier.
pub const AMM_BONK_SWAP_PROGRAM_ID: &str = "BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p";
/// Reserved `amm_fluxbeam` program identifier.
pub const AMM_FLUXBEAM_PROGRAM_ID: &str = "FLUXubRmkEi2q6K3Y9kBPg9248ggaZVsoSFhtJHSrm1X";
/// Reserved `amm_goon_fi` program identifier.
pub const AMM_GOON_FI_PROGRAM_ID: &str = "goonERTdGsjnkZqWuVjs73BZ3Pb9qoCUdBUL17BnS5j";
/// Reserved `amm_goosefx_gamma` program identifier.
pub const AMM_GOOSEFX_GAMMA_PROGRAM_ID: &str = "GAMMA7meSFWaBXF25oSUgmGRwaW6sCMFLmBNiMSdbHVT";
/// Reserved `amm_goosefx_v2` program identifier.
pub const AMM_GOOSEFX_V2_PROGRAM_ID: &str = "GFXsSL5sSaDfNFQUYsHekbWBW1TsFdjDYzACh62tEHxn";
/// Reserved `amm_guac_swap` program identifier.
pub const AMM_GUAC_SWAP_PROGRAM_ID: &str = "Gswppe6ERWKpUTXvRPfXdzHhiCyJvLadVvXGfdpBqcE1";
/// Reserved `amm_lifinity_swap_v2` program identifier.
pub const AMM_LIFINITY_SWAP_V2_PROGRAM_ID: &str = "2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c";
/// Reserved `amm_metadao_v0_5` program identifier.
pub const AMM_METADAO_V0_5_PROGRAM_ID: &str = "AMMJdEiCCa8mdugg6JPF7gFirmmxisTfDJoSNSUi5zDJ";
/// Reserved `amm_meteora_damm_v1` program identifier.
pub const AMM_METEORA_DAMM_V1_PROGRAM_ID: &str = "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB";
/// Reserved `amm_meteora_damm_v2` program identifier.
pub const AMM_METEORA_DAMM_V2_PROGRAM_ID: &str = "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG";
/// Reserved `amm_obric_v2` program identifier.
pub const AMM_OBRIC_V2_PROGRAM_ID: &str = "obriQD1zbpyLz95G5n7nJe6a4DPjpFwa5XYPoNm113y";
/// Reserved `amm_one_dex` program identifier.
pub const AMM_ONE_DEX_PROGRAM_ID: &str = "DEXYosS6oEGvk8uCDayvwEZz4qEyDJRf9nFgYCaqPMTm";
/// Reserved `amm_pump_swap` program identifier.
pub const AMM_PUMP_SWAP_PROGRAM_ID: &str = "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA";
/// Reserved `amm_raydium_lp_v4` program identifier.
pub const AMM_RAYDIUM_LP_V4_PROGRAM_ID: &str = "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8";
/// Reserved `amm_solfi` program identifier.
pub const AMM_SOLFI_PROGRAM_ID: &str = "SoLFiHG9TfgtdUXUjWAxi3LtvYuFyDLVhBWxdMZxyCe";
/// Reserved `amm_solfi_v2` program identifier.
pub const AMM_SOLFI_V2_PROGRAM_ID: &str = "SV2EYYJyRz2YhfXwXnhNAevDEui5Q6yrfyo13WtupPF";
/// Reserved `amm_vertigo` program identifier.
pub const AMM_VERTIGO_PROGRAM_ID: &str = "vrTGoBuy5rYSxAfV3jaRJWHH6nN9WK4NRExGxsk1bCJ";
/// Reserved `launchpad_virtuals` program identifier.
pub const LAUNCHPAD_VIRTUALS_PROGRAM_ID: &str = "5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki";
/// Reserved `amm_woofi` program identifier.
pub const AMM_WOOFI_PROGRAM_ID: &str = "WooFif76YGRNjk1pA8wCsN67aQsD9f9iLsz4NcJ1AVb";
/// Reserved `amm_zero_fi` program identifier.
pub const AMM_ZERO_FI_PROGRAM_ID: &str = "ZERor4xhbUycZ6gb9ntrhqscUcZmAbQDjEAtCf4hbZY";
/// Reserved `amm_zora` program identifier.
pub const AMM_ZORA_PROGRAM_ID: &str = "zoRabwLGd5zXaV7Gxacppw8tcceXEiTrSKyNLSaSTUc";
/// Reserved `bridge_circle_cctp_token_messenger_minter` program identifier.
pub const BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_PROGRAM_ID: &str =
"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3";
/// Reserved `bridge_circle_cctp_token_messenger_minter_v2` program identifier.
pub const BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_PROGRAM_ID: &str =
"CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe";
/// Reserved `bridge_layer_zero_endpoint` program identifier.
pub const BRIDGE_LAYER_ZERO_ENDPOINT_PROGRAM_ID: &str =
"76y77prsiCMvXMjuoZ5VRrhG5qYBrUMYTE5WgHqgjEn6";
/// Reserved `bridge_layer_zero_executor` program identifier.
pub const BRIDGE_LAYER_ZERO_EXECUTOR_PROGRAM_ID: &str =
"6doghB248px58JSSwG4qejQ46kFMW4AMj7vzJnWZHNZn";
/// Reserved `clmm_byreal` program identifier.
pub const CLMM_BYREAL_PROGRAM_ID: &str = "REALQqNEomY6cQGZJUGwywTBD2UmDT32rZcNnfxQ5N2";
/// Reserved `clmm_fusion` program identifier.
pub const CLMM_FUSION_PROGRAM_ID: &str = "fUSioN9YKKSa3CUC2YUc4tPkHJ5Y6XW1yz8y6F7qWz9";
/// Reserved `clmm_orca_whirlpool` program identifier.
pub const CLMM_ORCA_WHIRLPOOL_PROGRAM_ID: &str = "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc";
/// Reserved `clmm_pancake_swap` program identifier.
pub const CLMM_PANCAKE_SWAP_PROGRAM_ID: &str = "HpNfyc2Saw7RKkQd8nEL4khUcuPhQ7WwY1B2qjx8jxFq";
/// Reserved `clmm_raydium` program identifier.
pub const CLMM_RAYDIUM_PROGRAM_ID: &str = "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK";
/// Reserved `clmm_stabble` program identifier.
pub const CLMM_STABBLE_PROGRAM_ID: &str = "6dMXqGZ3ga2dikrYS9ovDXgHGh5RUsb2RTUj6hrQXhk6";
/// Reserved `cpmm_raydium` program identifier.
pub const CPMM_RAYDIUM_PROGRAM_ID: &str = "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C";
/// Reserved `dlmm_meteora` program identifier.
pub const DLMM_METEORA_PROGRAM_ID: &str = "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo";
/// Reserved `fees_bags_fee_share_v1` program identifier.
pub const FEES_BAGS_FEE_SHARE_V1_PROGRAM_ID: &str = "FEEhPbKVKnco9EXnaY3i4R5rQVUx91wgVfu8qokixywi";
/// Reserved `fees_bags_fee_share_v2` program identifier.
pub const FEES_BAGS_FEE_SHARE_V2_PROGRAM_ID: &str = "FEE2tBhCKAt7shrod19QttSVREUYPiyMzoku1mL1gqVK";
/// Reserved `governance_metadao_bid_wall` program identifier.
pub const GOVERNANCE_METADAO_BID_WALL_PROGRAM_ID: &str =
"WALL8ucBuUyL46QYxwYJjidaFYhdvxUFrgvBxPshERx";
/// Reserved `governance_metadao_futarchy` program identifier.
pub const GOVERNANCE_METADAO_FUTARCHY_PROGRAM_ID: &str =
"FUTARELBfJfQ8RDGhg1wdhddq1odMAJUePHFuBYfUxKq";
/// Reserved `governance_squads_multisig` program identifier.
pub const GOVERNANCE_SQUADS_MULTISIG_PROGRAM_ID: &str =
"SQDS4ep65T869zMMBKyuUq6aD6EgTu8psMjkvj52pCf";
/// Reserved `launchpad_boop_fun` program identifier.
pub const LAUNCHPAD_BOOP_FUN_PROGRAM_ID: &str = "boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4";
/// Reserved `launchpad_metadao_ico` program identifier.
pub const LAUNCHPAD_METADAO_ICO_PROGRAM_ID: &str = "moontUzsdepotRGe5xsfip7vLPTJnVuafqdUWexVnPM";
/// Reserved `launchpad_meteora_dbc` program identifier.
pub const LAUNCHPAD_METEORA_DBC_PROGRAM_ID: &str = "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN";
/// Reserved `launchpad_moonit` program identifier.
pub const LAUNCHPAD_MOONIT_PROGRAM_ID: &str = "MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG";
/// Reserved `launchpad_orca_wavebreak` program identifier.
pub const LAUNCHPAD_ORCA_WAVEBREAK_PROGRAM_ID: &str = "waveQX2yP3H1pVU8djGvEHmYg8uamQ84AuyGtpsrXTF";
/// Reserved `launchpad_printr` program identifier.
pub const LAUNCHPAD_PRINTR_PROGRAM_ID: &str = "T8HsGYv7sMk3kTnyaRqZrbRPuntYzdh12evXBkprint";
/// Reserved `launchpad_pump_fun` program identifier.
pub const LAUNCHPAD_PUMP_FUN_PROGRAM_ID: &str = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";
/// Reserved `launchpad_pump_pumpup_ai` program identifier.
pub const LAUNCHPAD_PUMP_PUMPUP_AI_PROGRAM_ID: &str = "PdMDrKEMaX8q7CCJb7NvUCxerBCcsFUa4LjBEynTtEd";
/// Reserved `launchpad_raydium_launchlab` program identifier.
pub const LAUNCHPAD_RAYDIUM_LAUNCHLAB_PROGRAM_ID: &str =
"LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj";
/// Reserved `lending_clone` program identifier.
pub const LENDING_CLONE_PROGRAM_ID: &str = "C1onEW2kPetmHmwe74YC1ESx3LnFEpVau6g2pg4fHycr";
/// Reserved `lending_jupiter_lend_borrow` program identifier.
pub const LENDING_JUPITER_LEND_BORROW_PROGRAM_ID: &str =
"jupr81YtYssSyPt8jbnGuiWon5f6x9TcDEFxYe3Bdzi";
/// Reserved `lending_jupiter_lend_earn` program identifier.
pub const LENDING_JUPITER_LEND_EARN_PROGRAM_ID: &str =
"jup3YeL8QhtSx1e253b2FDvsMNC87fDrgQZivbrndc9";
/// Reserved `lending_jupiter_lend_flash_loan` program identifier.
pub const LENDING_JUPITER_LEND_FLASH_LOAN_PROGRAM_ID: &str =
"jupgfSgfuAXv4B6R2Uxu85Z1qdzgju79s6MfZekN6XS";
/// Reserved `lending_jupiter_lend_liquidity` program identifier.
pub const LENDING_JUPITER_LEND_LIQUIDITY_PROGRAM_ID: &str =
"jupeiUmn818Jg1ekPURTpr4mFo29p46vygyykFJ3wZC";
/// Reserved `lending_kamino` program identifier.
pub const LENDING_KAMINO_PROGRAM_ID: &str = "KLend2g3cP87fffoy8q1mQqGKjrxjC8boSyAYavgmjD";
/// Reserved `lending_marginfi_v2` program identifier.
pub const LENDING_MARGINFI_V2_PROGRAM_ID: &str = "MFv2hWf31Z9kbCa1snEPYctwafyhdvnV7FZnsebVacA";
/// Reserved `lock_raydium_lp` program identifier.
pub const LOCK_RAYDIUM_LP_PROGRAM_ID: &str = "LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE";
/// Metaplex Token Metadata program identifier.
pub const METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID: &str =
"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s";
/// Reserved `metadata_solana_program_metadata` program identifier.
pub const METADATA_SOLANA_PROGRAM_METADATA_PROGRAM_ID: &str =
"ProgM6JCCvbYkfKqJYHePx4xxSUSqJp7rh8Lyv7nk7S";
/// Reserved `nft_metaplex_bubblegum` program identifier.
pub const NFT_METAPLEX_BUBBLEGUM_PROGRAM_ID: &str = "BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY";
/// Reserved `nft_tensor_cnft` program identifier.
pub const NFT_TENSOR_CNFT_PROGRAM_ID: &str = "TCMPhJdwDryooaGtiocG1u3xcYbRpiJzb283XfCZsDp";
/// Reserved `orderbook_jupiter_limit_order` program identifier.
pub const ORDERBOOK_JUPITER_LIMIT_ORDER_PROGRAM_ID: &str =
"jupoNjAxXgZ4rjzxzPMP4oxduvQsQtZzyknqvzYNrNu";
/// Reserved `orderbook_jupiter_limit_order_v2` program identifier.
pub const ORDERBOOK_JUPITER_LIMIT_ORDER_V2_PROGRAM_ID: &str =
"j1o2qRpjcyUwEvwtcfhEQefh773ZgjxcVRry7LDqg5X";
/// Reserved `orderbook_openbook_v2` program identifier.
pub const ORDERBOOK_OPENBOOK_V2_PROGRAM_ID: &str = "opnb2LAfJYbRMAHHvqjCwQxanZn7ReEHp1k81EohpZb";
/// Reserved `perpetuals_drift_v2` program identifier.
pub const PERPETUALS_DRIFT_V2_PROGRAM_ID: &str = "dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH";
/// Reserved `perpetuals_jupiter` program identifier.
pub const PERPETUALS_JUPITER_PROGRAM_ID: &str = "PERPHjGBqRHArX4DySjwM6UJHiR3sWAatqfdBS2qQJu";
/// Reserved `perpetuals_phoenix_eternal` program identifier.
pub const PERPETUALS_PHOENIX_ETERNAL_PROGRAM_ID: &str =
"EtrnLzgbS7nMMy5fbD42kXiUzGg8XQzJ972Xtk1cjWih";
/// Reserved `perpetuals_zeta` program identifier.
pub const PERPETUALS_ZETA_PROGRAM_ID: &str = "ZETAxsqBRek56DhiGXrn75yj2NHU3aYUnxvHXpkf3aD";
/// Reserved `router_dflow_aggregator_v4` program identifier.
pub const ROUTER_DFLOW_AGGREGATOR_V4_PROGRAM_ID: &str =
"DF1ow4tspfHX9WJsAb9epbkA8hmpSEAtxXy1V27QBH";
/// Reserved `router_jupiter_aggregator_v4` program identifier.
pub const ROUTER_JUPITER_AGGREGATOR_V4_PROGRAM_ID: &str =
"JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB";
/// Reserved `router_jupiter_aggregator_v6` program identifier.
pub const ROUTER_JUPITER_AGGREGATOR_V6_PROGRAM_ID: &str =
"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4";
/// Reserved `router_okx_labs_v1` program identifier.
pub const ROUTER_OKX_LABS_V1_PROGRAM_ID: &str = "6m2CDdhRgxpH4WjvdzxAYbGxwdGUz5MziiL5jek2kBma";
/// Reserved `router_okx_labs_v2` program identifier.
pub const ROUTER_OKX_LABS_V2_PROGRAM_ID: &str = "proVF4pMXVaYqmy4NjniPh4pqKNfMmsihgd4wdkCX3u";
/// Reserved `rwa_ondo_global_markets` program identifier.
pub const RWA_ONDO_GLOBAL_MARKETS_PROGRAM_ID: &str = "XzTT4XB8m7sLD2xi6snefSasaswsKCxx5Tifjondogm";
/// Reserved `spl_account_compression` program identifier.
pub const SPL_ACCOUNT_COMPRESSION_PROGRAM_ID: &str = "cmtDvXumGCrqC1Age74AVPhSRVXJMd8PJS91L8KbNCK";
/// Reserved `metadata_spl_name_service` program identifier.
pub const METADATA_SPL_NAME_SERVICE_PROGRAM_ID: &str =
"namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX";
/// Historical SPL Memo v1 program identifier.
pub const SPL_MEMO_V1_PROGRAM_ID: &str = "Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo";
/// Historical SPL Memo v3 program identifier.
pub const SPL_MEMO_V3_PROGRAM_ID: &str = "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr";
/// Current SPL Memo v4 program identifier.
pub const SPL_MEMO_V4_PROGRAM_ID: &str = "Memo4c2pN8afCj432Lb7RMVKi9PbQnnW7ewFFaV3oAH";
/// Reserved `spl_noop` program identifier.
pub const SPL_NOOP_PROGRAM_ID: &str = "noopb9bkMVfRPU8AsbpTUg8AQkHtKwMYZiFUjNRtMmV";
/// Reserved `spl_single_pool` program identifier.
pub const SPL_SINGLE_POOL_PROGRAM_ID: &str = "SVSPxpvHdN29nkVg9rPapPNDddN5DipNLRUFhyjFThE";
/// Reserved `spl_stake_pool` program identifier.
pub const SPL_STAKE_POOL_PROGRAM_ID: &str = "SPoo1Ku8WFXoNDMHPsrGSTSG1Y47rzgn41SLUNakuHy";
/// Classic SPL Token program identifier.
pub const SPL_TOKEN_PROGRAM_ID: &str = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
/// SPL Token-2022 program identifier.
pub const SPL_TOKEN_2022_PROGRAM_ID: &str = "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
/// SPL Token-2022 ElGamal public-key registry program identifier.
pub const SPL_TOKEN_2022_ELGAMAL_REGISTRY_PROGRAM_ID: &str =
"regVYJW7tcT8zipN5YiBvHsvR5jXW1uLFxaHSbugABg";
/// Reserved `stable_swap_hylo_exchange` program identifier.
pub const STABLE_SWAP_HYLO_EXCHANGE_PROGRAM_ID: &str =
"HYEXCHtHkBagdStcJCp3xbbb9B7sdMdWXFNj6mdsG4hn";
/// Reserved `stable_swap_jupiter_stable` program identifier.
pub const STABLE_SWAP_JUPITER_STABLE_PROGRAM_ID: &str =
"JUPUSDecMzAVgztLe6eGhwUBj1Pn3j9WAXwmtHmfbRr";
/// Reserved `stable_swap_numeraire` program identifier.
pub const STABLE_SWAP_NUMERAIRE_PROGRAM_ID: &str = "NUMERUNsFCP3kuNmWZuXtm1AaQCPj9uw6Guv2Ekoi5P";
/// Reserved `stable_swap_stabble` program identifier.
pub const STABLE_SWAP_STABBLE_PROGRAM_ID: &str = "swapNyd8XiQwJ6ianp9snpu4brUqFxadzvHebnAXjJZ";
/// Reserved `staking_jito_tip_distribution` program identifier.
pub const STAKING_JITO_TIP_DISTRIBUTION_PROGRAM_ID: &str =
"4R3gSG8BpU4t19KYj8CfnbtRpnT8gtk4dvTHxVRwc2r7";
/// Reserved `staking_kamino_farm` program identifier.
pub const STAKING_KAMINO_FARM_PROGRAM_ID: &str = "FarmsPZpWu9i7Kky8tPN37rs2TpmMrAZrC7S7vJa91Hr";
/// Reserved `staking_marinade_finance` program identifier.
pub const STAKING_MARINADE_FINANCE_PROGRAM_ID: &str = "MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD";
/// Reserved `staking_solayer` program identifier.
pub const STAKING_SOLAYER_PROGRAM_ID: &str = "sSo1iU21jBrU9VaJ8PJib1MtorefUV4fzC9GURa2KNn";
/// Reserved `storage_solana_record` program identifier.
pub const STORAGE_SOLANA_RECORD_PROGRAM_ID: &str = "recr1L3PCGKLbckBqMNcJhuuyU1zgo8nBhfLVsJNwr5";
/// Reserved `strategy_jupiter_dca` program identifier.
pub const STRATEGY_JUPITER_DCA_PROGRAM_ID: &str = "DCA265Vj8a9CEuX1eb1LWRnDT7uK6q1xMipnNyatn23M";
/// Reserved `treasury_helium_treasury_management` program identifier.
pub const TREASURY_HELIUM_TREASURY_MANAGEMENT_PROGRAM_ID: &str =
"treaf4wWBBty3fHdyBpo35Mz84M8k3heKXmjmi9vFt5";
/// Reserved `vault_carrot_defi` program identifier.
pub const VAULT_CARROT_DEFI_PROGRAM_ID: &str = "CarrotwivhMpDnm27EHmRLeQ683Z1PufuqEmBZvD282s";
/// Reserved `vault_hylo_stability_pool` program identifier.
pub const VAULT_HYLO_STABILITY_POOL_PROGRAM_ID: &str =
"HysTabVUfmQBFcmzu1ctRd1Y1fxd66RBpboy1bmtDSQQ";
/// Reserved `vault_kamino` program identifier.
pub const VAULT_KAMINO_PROGRAM_ID: &str = "kvauTFR8qm1dhniz6pYuBZkuene3Hfrs1VQhVRgCNrr";
/// Reserved `vault_kamino_v2` program identifier.
pub const VAULT_KAMINO_V2_PROGRAM_ID: &str = "KvauGMspG5k6rtzrqqn7WNn3oZdyKqLKwK2XWQ8FLjd";
/// Reserved `vault_kamino_yvaults` program identifier.
pub const VAULT_KAMINO_YVAULTS_PROGRAM_ID: &str = "6LtLpnUFNByNXLyCoK9wA2MykKAmQNZKBdY8s47dehDc";
/// Reserved `vault_meteora` program identifier.
pub const VAULT_METEORA_PROGRAM_ID: &str = "24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi";
/// Reserved `vesting_streamflow` program identifier.
pub const VESTING_STREAMFLOW_PROGRAM_ID: &str = "strmRqUCoQUgGUan5YhzUZa6KqdzwX5L6FpUxfmKg5m";
/// Reserved `wallet_jupiter_apepro_smart_wallet` program identifier.
pub const WALLET_JUPITER_APEPRO_SMART_WALLET_PROGRAM_ID: &str =
"JSW99DKmxNyREQM14SQLDykeBvEUG63TeohrvmofEiw";
/// Reserved `weighted_swap_stabble` program identifier.
pub const WEIGHTED_SWAP_STABBLE_PROGRAM_ID: &str = "swapFpHZwjELNnjvThjajtiVmkz3yPQEHjLtka2fwHW";
/// SPL Associated Token Account program identifier.
pub const ASSOCIATED_TOKEN_PROGRAM_ID: &str = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
/// Address Lookup Table program identifier.
pub const ADDRESS_LOOKUP_TABLE_PROGRAM_ID: &str = "AddressLookupTab1e1111111111111111111111111";
/// Deprecated BPF Loader program identifier.
pub const BPF_LOADER_DEPRECATED_PROGRAM_ID: &str = "BPFLoader1111111111111111111111111111111111";
/// BPF Loader version 2 program identifier.
pub const BPF_LOADER_PROGRAM_ID: &str = "BPFLoader2111111111111111111111111111111111";
/// Upgradeable BPF Loader program identifier.
pub const BPF_LOADER_UPGRADEABLE_PROGRAM_ID: &str = "BPFLoaderUpgradeab1e11111111111111111111111";
/// Compute Budget program identifier.
pub const COMPUTE_BUDGET_PROGRAM_ID: &str = "ComputeBudget111111111111111111111111111111";
/// Config program identifier.
pub const CONFIG_PROGRAM_ID: &str = "Config1111111111111111111111111111111111111";
/// Ed25519 precompile program identifier.
pub const ED25519_PROGRAM_ID: &str = "Ed25519SigVerify111111111111111111111111111";
/// Feature program identifier.
pub const FEATURE_PROGRAM_ID: &str = "Feature111111111111111111111111111111111111";
/// Incinerator well-known account identifier.
pub const INCINERATOR_PROGRAM_ID: &str = "1nc1nerator11111111111111111111111111111111";
/// Loader version 4 program identifier.
pub const LOADER_V4_PROGRAM_ID: &str = "LoaderV411111111111111111111111111111111111";
/// Native Loader program identifier.
pub const NATIVE_LOADER_PROGRAM_ID: &str = "NativeLoader1111111111111111111111111111111";
/// Secp256k1 precompile program identifier.
pub const SECP256K1_PROGRAM_ID: &str = "KeccakSecp256k11111111111111111111111111111";
/// Secp256r1 precompile program identifier.
pub const SECP256R1_PROGRAM_ID: &str = "Secp256r1SigVerify1111111111111111111111111";
/// Enshrined stateless Slashing program identifier.
pub const SLASHING_PROGRAM_ID: &str = "S1ashing11111111111111111111111111111111111";
/// Historical Stake configuration account identifier.
pub const STAKE_CONFIG_ACCOUNT_ID: &str = "StakeConfig11111111111111111111111111111111";
/// Compatibility alias for the historical Stake configuration account identifier.
pub const STAKE_CONFIG_PROGRAM_ID: &str = crate::STAKE_CONFIG_ACCOUNT_ID;
/// Stake program identifier.
pub const STAKE_PROGRAM_ID: &str = "Stake11111111111111111111111111111111111111";
/// System program identifier.
pub const SYSTEM_PROGRAM_ID: &str = "11111111111111111111111111111111";
/// Clock sysvar account identifier.
pub const SYSVAR_CLOCK_PROGRAM_ID: &str = "SysvarC1ock11111111111111111111111111111111";
/// Instructions sysvar account identifier.
pub const SYSVAR_INSTRUCTIONS_PROGRAM_ID: &str = "Sysvar1nstructions1111111111111111111111111";
/// Rent sysvar account identifier.
pub const SYSVAR_RENT_PROGRAM_ID: &str = "SysvarRent111111111111111111111111111111111";
/// Slot Hashes sysvar account identifier.
pub const SYSVAR_SLOT_HASHES_PROGRAM_ID: &str = "SysvarS1otHashes111111111111111111111111111";
/// Stake History sysvar account identifier.
pub const SYSVAR_STAKE_HISTORY_PROGRAM_ID: &str = "SysvarStakeHistory1111111111111111111111111";
/// Vote program identifier.
pub const VOTE_PROGRAM_ID: &str = "Vote111111111111111111111111111111111111111";
/// ZK ElGamal Proof program identifier.
pub const ZK_ELGAMAL_PROOF_PROGRAM_ID: &str = "ZkE1Gama1Proof11111111111111111111111111111";
/// ZK Token Proof program identifier.
pub const ZK_TOKEN_PROOF_PROGRAM_ID: &str = "ZkTokenProof1111111111111111111111111111111";
pub(crate) const NATIVE_PROGRAM_ID_ENTRIES: &[crate::ProgramIdEntry] = &[
crate::ProgramIdEntry {
name: "address_lookup_table",
address: crate::ADDRESS_LOOKUP_TABLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bpf_loader_deprecated",
address: crate::BPF_LOADER_DEPRECATED_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bpf_loader",
address: crate::BPF_LOADER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bpf_loader_upgradeable",
address: crate::BPF_LOADER_UPGRADEABLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "compute_budget",
address: crate::COMPUTE_BUDGET_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "config",
address: crate::CONFIG_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "ed25519",
address: crate::ED25519_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "feature",
address: crate::FEATURE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "loader_v4",
address: crate::LOADER_V4_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "native_loader",
address: crate::NATIVE_LOADER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "secp256k1",
address: crate::SECP256K1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "secp256r1",
address: crate::SECP256R1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "slashing",
address: crate::SLASHING_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stake",
address: crate::STAKE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "system",
address: crate::SYSTEM_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vote",
address: crate::VOTE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "zk_elgamal_proof",
address: crate::ZK_ELGAMAL_PROOF_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "zk_token_proof",
address: crate::ZK_TOKEN_PROOF_PROGRAM_ID,
},
];
pub(crate) const NATIVE_WELL_KNOWN_ACCOUNT_ID_ENTRIES: &[crate::ProgramIdEntry] = &[
crate::ProgramIdEntry {
name: "incinerator",
address: crate::INCINERATOR_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stake_config",
address: crate::STAKE_CONFIG_ACCOUNT_ID,
},
];
pub(crate) const PROGRAM_ID_ENTRIES: &[crate::ProgramIdEntry] = &[
crate::ProgramIdEntry {
name: "adapter_saber_decimal_wrapper",
address: crate::ADAPTER_SABER_DECIMAL_WRAPPER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "adapter_spl_token_wrap",
address: crate::ADAPTER_SPL_TOKEN_WRAP_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "address_lookup_table",
address: crate::ADDRESS_LOOKUP_TABLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_aldrin_v1",
address: crate::AMM_ALDRIN_V1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_aldrin_v2",
address: crate::AMM_ALDRIN_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_alphaq",
address: crate::AMM_ALPHAQ_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_believe",
address: crate::AMM_BELIEVE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_bonk_swap",
address: crate::AMM_BONK_SWAP_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_fluxbeam",
address: crate::AMM_FLUXBEAM_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_goon_fi",
address: crate::AMM_GOON_FI_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_goosefx_gamma",
address: crate::AMM_GOOSEFX_GAMMA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_goosefx_v2",
address: crate::AMM_GOOSEFX_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_guac_swap",
address: crate::AMM_GUAC_SWAP_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_lifinity_swap_v2",
address: crate::AMM_LIFINITY_SWAP_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_metadao_v0_5",
address: crate::AMM_METADAO_V0_5_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_meteora_damm_v1",
address: crate::AMM_METEORA_DAMM_V1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_meteora_damm_v2",
address: crate::AMM_METEORA_DAMM_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_obric_v2",
address: crate::AMM_OBRIC_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_one_dex",
address: crate::AMM_ONE_DEX_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_pump_swap",
address: crate::AMM_PUMP_SWAP_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_raydium_lp_v4",
address: crate::AMM_RAYDIUM_LP_V4_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_solfi",
address: crate::AMM_SOLFI_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_solfi_v2",
address: crate::AMM_SOLFI_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_vertigo",
address: crate::AMM_VERTIGO_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_woofi",
address: crate::AMM_WOOFI_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_zero_fi",
address: crate::AMM_ZERO_FI_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "amm_zora",
address: crate::AMM_ZORA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "associated_token_account",
address: crate::ASSOCIATED_TOKEN_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bpf_loader",
address: crate::BPF_LOADER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bpf_loader_deprecated",
address: crate::BPF_LOADER_DEPRECATED_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bpf_loader_upgradeable",
address: crate::BPF_LOADER_UPGRADEABLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bridge_circle_cctp_token_messenger_minter",
address: crate::BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bridge_circle_cctp_token_messenger_minter_v2",
address: crate::BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bridge_layer_zero_endpoint",
address: crate::BRIDGE_LAYER_ZERO_ENDPOINT_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "bridge_layer_zero_executor",
address: crate::BRIDGE_LAYER_ZERO_EXECUTOR_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "clmm_byreal",
address: crate::CLMM_BYREAL_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "clmm_fusion",
address: crate::CLMM_FUSION_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "clmm_orca_whirlpool",
address: crate::CLMM_ORCA_WHIRLPOOL_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "clmm_pancake_swap",
address: crate::CLMM_PANCAKE_SWAP_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "clmm_raydium",
address: crate::CLMM_RAYDIUM_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "clmm_stabble",
address: crate::CLMM_STABBLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "compute_budget",
address: crate::COMPUTE_BUDGET_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "config",
address: crate::CONFIG_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "cpmm_raydium",
address: crate::CPMM_RAYDIUM_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "dlmm_meteora",
address: crate::DLMM_METEORA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "ed25519",
address: crate::ED25519_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "feature",
address: crate::FEATURE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "fees_bags_fee_share_v1",
address: crate::FEES_BAGS_FEE_SHARE_V1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "fees_bags_fee_share_v2",
address: crate::FEES_BAGS_FEE_SHARE_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "fees_pump_fees",
address: crate::FEES_PUMP_FEES_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "governance_metadao_bid_wall",
address: crate::GOVERNANCE_METADAO_BID_WALL_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "governance_metadao_futarchy",
address: crate::GOVERNANCE_METADAO_FUTARCHY_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "governance_squads_multisig",
address: crate::GOVERNANCE_SQUADS_MULTISIG_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "incinerator",
address: crate::INCINERATOR_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_boop_fun",
address: crate::LAUNCHPAD_BOOP_FUN_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_metadao_ico",
address: crate::LAUNCHPAD_METADAO_ICO_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_meteora_dbc",
address: crate::LAUNCHPAD_METEORA_DBC_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_moonit",
address: crate::LAUNCHPAD_MOONIT_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_orca_wavebreak",
address: crate::LAUNCHPAD_ORCA_WAVEBREAK_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_printr",
address: crate::LAUNCHPAD_PRINTR_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_pump_fun",
address: crate::LAUNCHPAD_PUMP_FUN_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_pump_pumpup_ai",
address: crate::LAUNCHPAD_PUMP_PUMPUP_AI_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_raydium_launchlab",
address: crate::LAUNCHPAD_RAYDIUM_LAUNCHLAB_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "launchpad_virtuals",
address: crate::LAUNCHPAD_VIRTUALS_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lending_clone",
address: crate::LENDING_CLONE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lending_jupiter_lend_borrow",
address: crate::LENDING_JUPITER_LEND_BORROW_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lending_jupiter_lend_earn",
address: crate::LENDING_JUPITER_LEND_EARN_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lending_jupiter_lend_flash_loan",
address: crate::LENDING_JUPITER_LEND_FLASH_LOAN_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lending_jupiter_lend_liquidity",
address: crate::LENDING_JUPITER_LEND_LIQUIDITY_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lending_kamino",
address: crate::LENDING_KAMINO_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lending_marginfi_v2",
address: crate::LENDING_MARGINFI_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "loader_v4",
address: crate::LOADER_V4_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "lock_raydium_lp",
address: crate::LOCK_RAYDIUM_LP_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "metadata_metaplex_token_metadata",
address: crate::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "metadata_solana_program_metadata",
address: crate::METADATA_SOLANA_PROGRAM_METADATA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "metadata_spl_name_service",
address: crate::METADATA_SPL_NAME_SERVICE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "native_loader",
address: crate::NATIVE_LOADER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "nft_metaplex_bubblegum",
address: crate::NFT_METAPLEX_BUBBLEGUM_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "nft_tensor_cnft",
address: crate::NFT_TENSOR_CNFT_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "orderbook_jupiter_limit_order",
address: crate::ORDERBOOK_JUPITER_LIMIT_ORDER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "orderbook_jupiter_limit_order_v2",
address: crate::ORDERBOOK_JUPITER_LIMIT_ORDER_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "orderbook_openbook_v2",
address: crate::ORDERBOOK_OPENBOOK_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "perpetuals_drift_v2",
address: crate::PERPETUALS_DRIFT_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "perpetuals_jupiter",
address: crate::PERPETUALS_JUPITER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "perpetuals_phoenix_eternal",
address: crate::PERPETUALS_PHOENIX_ETERNAL_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "perpetuals_zeta",
address: crate::PERPETUALS_ZETA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "router_dflow_aggregator_v4",
address: crate::ROUTER_DFLOW_AGGREGATOR_V4_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "router_jupiter_aggregator_v4",
address: crate::ROUTER_JUPITER_AGGREGATOR_V4_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "router_jupiter_aggregator_v6",
address: crate::ROUTER_JUPITER_AGGREGATOR_V6_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "router_okx_labs_v1",
address: crate::ROUTER_OKX_LABS_V1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "router_okx_labs_v2",
address: crate::ROUTER_OKX_LABS_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "rwa_ondo_global_markets",
address: crate::RWA_ONDO_GLOBAL_MARKETS_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "secp256k1",
address: crate::SECP256K1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "secp256r1",
address: crate::SECP256R1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "slashing",
address: crate::SLASHING_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_account_compression",
address: crate::SPL_ACCOUNT_COMPRESSION_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_memo_v1",
address: crate::SPL_MEMO_V1_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_memo_v3",
address: crate::SPL_MEMO_V3_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_memo_v4",
address: crate::SPL_MEMO_V4_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_noop",
address: crate::SPL_NOOP_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_single_pool",
address: crate::SPL_SINGLE_POOL_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_stake_pool",
address: crate::SPL_STAKE_POOL_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_token",
address: crate::SPL_TOKEN_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_token_2022",
address: crate::SPL_TOKEN_2022_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "spl_token_2022_elgamal_registry",
address: crate::SPL_TOKEN_2022_ELGAMAL_REGISTRY_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stable_swap_hylo_exchange",
address: crate::STABLE_SWAP_HYLO_EXCHANGE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stable_swap_jupiter_stable",
address: crate::STABLE_SWAP_JUPITER_STABLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stable_swap_numeraire",
address: crate::STABLE_SWAP_NUMERAIRE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stable_swap_stabble",
address: crate::STABLE_SWAP_STABBLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stake",
address: crate::STAKE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "stake_config",
address: crate::STAKE_CONFIG_ACCOUNT_ID,
},
crate::ProgramIdEntry {
name: "staking_jito_tip_distribution",
address: crate::STAKING_JITO_TIP_DISTRIBUTION_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "staking_kamino_farm",
address: crate::STAKING_KAMINO_FARM_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "staking_marinade_finance",
address: crate::STAKING_MARINADE_FINANCE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "staking_solayer",
address: crate::STAKING_SOLAYER_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "storage_solana_record",
address: crate::STORAGE_SOLANA_RECORD_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "strategy_jupiter_dca",
address: crate::STRATEGY_JUPITER_DCA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "system",
address: crate::SYSTEM_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "sysvar_clock",
address: crate::SYSVAR_CLOCK_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "sysvar_instructions",
address: crate::SYSVAR_INSTRUCTIONS_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "sysvar_rent",
address: crate::SYSVAR_RENT_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "sysvar_slot_hashes",
address: crate::SYSVAR_SLOT_HASHES_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "sysvar_stake_history",
address: crate::SYSVAR_STAKE_HISTORY_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "treasury_helium_treasury_management",
address: crate::TREASURY_HELIUM_TREASURY_MANAGEMENT_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vault_carrot_defi",
address: crate::VAULT_CARROT_DEFI_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vault_hylo_stability_pool",
address: crate::VAULT_HYLO_STABILITY_POOL_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vault_kamino",
address: crate::VAULT_KAMINO_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vault_kamino_v2",
address: crate::VAULT_KAMINO_V2_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vault_kamino_yvaults",
address: crate::VAULT_KAMINO_YVAULTS_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vault_meteora",
address: crate::VAULT_METEORA_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vesting_jupiter_lock",
address: crate::VESTING_JUPITER_LOCK_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vesting_streamflow",
address: crate::VESTING_STREAMFLOW_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "vote",
address: crate::VOTE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "wallet_jupiter_apepro_smart_wallet",
address: crate::WALLET_JUPITER_APEPRO_SMART_WALLET_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "weighted_swap_stabble",
address: crate::WEIGHTED_SWAP_STABBLE_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "zk_elgamal_proof",
address: crate::ZK_ELGAMAL_PROOF_PROGRAM_ID,
},
crate::ProgramIdEntry {
name: "zk_token_proof",
address: crate::ZK_TOKEN_PROOF_PROGRAM_ID,
},
];

307
ks-program-ids/src/lib.rs Normal file
View File

@@ -0,0 +1,307 @@
// file: ks-program-ids/src/lib.rs
// version: 12
#![forbid(unsafe_code)]
#![deny(unreachable_pub)]
#![warn(missing_docs)]
//! Shared canonical Solana program identifiers.
mod constants;
mod programs;
/// Reserved `adapter_saber_decimal_wrapper` program identifier.
pub use self::constants::ADAPTER_SABER_DECIMAL_WRAPPER_PROGRAM_ID;
/// Reserved `adapter_spl_token_wrap` program identifier.
pub use self::constants::ADAPTER_SPL_TOKEN_WRAP_PROGRAM_ID;
/// Address Lookup Table program identifier.
pub use self::constants::ADDRESS_LOOKUP_TABLE_PROGRAM_ID;
/// Reserved `amm_aldrin_v1` program identifier.
pub use self::constants::AMM_ALDRIN_V1_PROGRAM_ID;
/// Reserved `amm_aldrin_v2` program identifier.
pub use self::constants::AMM_ALDRIN_V2_PROGRAM_ID;
/// Reserved `amm_alphaq` program identifier.
pub use self::constants::AMM_ALPHAQ_PROGRAM_ID;
/// Reserved `amm_believe` program identifier.
pub use self::constants::AMM_BELIEVE_PROGRAM_ID;
/// Reserved `amm_bonk_swap` program identifier.
pub use self::constants::AMM_BONK_SWAP_PROGRAM_ID;
/// Reserved `amm_fluxbeam` program identifier.
pub use self::constants::AMM_FLUXBEAM_PROGRAM_ID;
/// Reserved `amm_goon_fi` program identifier.
pub use self::constants::AMM_GOON_FI_PROGRAM_ID;
/// Reserved `amm_goosefx_gamma` program identifier.
pub use self::constants::AMM_GOOSEFX_GAMMA_PROGRAM_ID;
/// Reserved `amm_goosefx_v2` program identifier.
pub use self::constants::AMM_GOOSEFX_V2_PROGRAM_ID;
/// Reserved `amm_guac_swap` program identifier.
pub use self::constants::AMM_GUAC_SWAP_PROGRAM_ID;
/// Reserved `amm_lifinity_swap_v2` program identifier.
pub use self::constants::AMM_LIFINITY_SWAP_V2_PROGRAM_ID;
/// Reserved `amm_metadao_v0_5` program identifier.
pub use self::constants::AMM_METADAO_V0_5_PROGRAM_ID;
/// Reserved `amm_meteora_damm_v1` program identifier.
pub use self::constants::AMM_METEORA_DAMM_V1_PROGRAM_ID;
/// Reserved `amm_meteora_damm_v2` program identifier.
pub use self::constants::AMM_METEORA_DAMM_V2_PROGRAM_ID;
/// Reserved `amm_obric_v2` program identifier.
pub use self::constants::AMM_OBRIC_V2_PROGRAM_ID;
/// Reserved `amm_one_dex` program identifier.
pub use self::constants::AMM_ONE_DEX_PROGRAM_ID;
/// Reserved `amm_pump_swap` program identifier.
pub use self::constants::AMM_PUMP_SWAP_PROGRAM_ID;
/// Reserved `amm_raydium_lp_v4` program identifier.
pub use self::constants::AMM_RAYDIUM_LP_V4_PROGRAM_ID;
/// Reserved `amm_solfi` program identifier.
pub use self::constants::AMM_SOLFI_PROGRAM_ID;
/// Reserved `amm_solfi_v2` program identifier.
pub use self::constants::AMM_SOLFI_V2_PROGRAM_ID;
/// Reserved `amm_vertigo` program identifier.
pub use self::constants::AMM_VERTIGO_PROGRAM_ID;
/// Reserved `amm_woofi` program identifier.
pub use self::constants::AMM_WOOFI_PROGRAM_ID;
/// Reserved `amm_zero_fi` program identifier.
pub use self::constants::AMM_ZERO_FI_PROGRAM_ID;
/// Reserved `amm_zora` program identifier.
pub use self::constants::AMM_ZORA_PROGRAM_ID;
/// SPL Associated Token Account program identifier.
pub use self::constants::ASSOCIATED_TOKEN_PROGRAM_ID;
/// Deprecated BPF Loader program identifier.
pub use self::constants::BPF_LOADER_DEPRECATED_PROGRAM_ID;
/// BPF Loader version 2 program identifier.
pub use self::constants::BPF_LOADER_PROGRAM_ID;
/// Upgradeable BPF Loader program identifier.
pub use self::constants::BPF_LOADER_UPGRADEABLE_PROGRAM_ID;
/// Reserved `bridge_circle_cctp_token_messenger_minter` program identifier.
pub use self::constants::BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_PROGRAM_ID;
/// Reserved `bridge_circle_cctp_token_messenger_minter_v2` program identifier.
pub use self::constants::BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_PROGRAM_ID;
/// Reserved `bridge_layer_zero_endpoint` program identifier.
pub use self::constants::BRIDGE_LAYER_ZERO_ENDPOINT_PROGRAM_ID;
/// Reserved `bridge_layer_zero_executor` program identifier.
pub use self::constants::BRIDGE_LAYER_ZERO_EXECUTOR_PROGRAM_ID;
/// Reserved `clmm_byreal` program identifier.
pub use self::constants::CLMM_BYREAL_PROGRAM_ID;
/// Reserved `clmm_fusion` program identifier.
pub use self::constants::CLMM_FUSION_PROGRAM_ID;
/// Reserved `clmm_orca_whirlpool` program identifier.
pub use self::constants::CLMM_ORCA_WHIRLPOOL_PROGRAM_ID;
/// Reserved `clmm_pancake_swap` program identifier.
pub use self::constants::CLMM_PANCAKE_SWAP_PROGRAM_ID;
/// Reserved `clmm_raydium` program identifier.
pub use self::constants::CLMM_RAYDIUM_PROGRAM_ID;
/// Reserved `clmm_stabble` program identifier.
pub use self::constants::CLMM_STABBLE_PROGRAM_ID;
/// Compute Budget program identifier.
pub use self::constants::COMPUTE_BUDGET_PROGRAM_ID;
/// Config program identifier.
pub use self::constants::CONFIG_PROGRAM_ID;
/// Reserved `cpmm_raydium` program identifier.
pub use self::constants::CPMM_RAYDIUM_PROGRAM_ID;
/// Reserved `dlmm_meteora` program identifier.
pub use self::constants::DLMM_METEORA_PROGRAM_ID;
/// Ed25519 precompile program identifier.
pub use self::constants::ED25519_PROGRAM_ID;
/// Feature program identifier.
pub use self::constants::FEATURE_PROGRAM_ID;
/// Reserved `fees_bags_fee_share_v1` program identifier.
pub use self::constants::FEES_BAGS_FEE_SHARE_V1_PROGRAM_ID;
/// Reserved `fees_bags_fee_share_v2` program identifier.
pub use self::constants::FEES_BAGS_FEE_SHARE_V2_PROGRAM_ID;
/// Reserved `fees_pump_fees` program identifier.
pub use self::constants::FEES_PUMP_FEES_PROGRAM_ID;
/// Reserved `governance_metadao_bid_wall` program identifier.
pub use self::constants::GOVERNANCE_METADAO_BID_WALL_PROGRAM_ID;
/// Reserved `governance_metadao_futarchy` program identifier.
pub use self::constants::GOVERNANCE_METADAO_FUTARCHY_PROGRAM_ID;
/// Reserved `governance_squads_multisig` program identifier.
pub use self::constants::GOVERNANCE_SQUADS_MULTISIG_PROGRAM_ID;
/// Incinerator well-known account identifier.
pub use self::constants::INCINERATOR_PROGRAM_ID;
/// Reserved `launchpad_boop_fun` program identifier.
pub use self::constants::LAUNCHPAD_BOOP_FUN_PROGRAM_ID;
/// Reserved `launchpad_metadao_ico` program identifier.
pub use self::constants::LAUNCHPAD_METADAO_ICO_PROGRAM_ID;
/// Reserved `launchpad_meteora_dbc` program identifier.
pub use self::constants::LAUNCHPAD_METEORA_DBC_PROGRAM_ID;
/// Reserved `launchpad_moonit` program identifier.
pub use self::constants::LAUNCHPAD_MOONIT_PROGRAM_ID;
/// Reserved `launchpad_orca_wavebreak` program identifier.
pub use self::constants::LAUNCHPAD_ORCA_WAVEBREAK_PROGRAM_ID;
/// Reserved `launchpad_printr` program identifier.
pub use self::constants::LAUNCHPAD_PRINTR_PROGRAM_ID;
/// Reserved `launchpad_pump_fun` program identifier.
pub use self::constants::LAUNCHPAD_PUMP_FUN_PROGRAM_ID;
/// Reserved `launchpad_pump_pumpup_ai` program identifier.
pub use self::constants::LAUNCHPAD_PUMP_PUMPUP_AI_PROGRAM_ID;
/// Reserved `launchpad_raydium_launchlab` program identifier.
pub use self::constants::LAUNCHPAD_RAYDIUM_LAUNCHLAB_PROGRAM_ID;
/// Reserved `launchpad_virtuals` program identifier.
pub use self::constants::LAUNCHPAD_VIRTUALS_PROGRAM_ID;
/// Reserved `lending_clone` program identifier.
pub use self::constants::LENDING_CLONE_PROGRAM_ID;
/// Reserved `lending_jupiter_lend_borrow` program identifier.
pub use self::constants::LENDING_JUPITER_LEND_BORROW_PROGRAM_ID;
/// Reserved `lending_jupiter_lend_earn` program identifier.
pub use self::constants::LENDING_JUPITER_LEND_EARN_PROGRAM_ID;
/// Reserved `lending_jupiter_lend_flash_loan` program identifier.
pub use self::constants::LENDING_JUPITER_LEND_FLASH_LOAN_PROGRAM_ID;
/// Reserved `lending_jupiter_lend_liquidity` program identifier.
pub use self::constants::LENDING_JUPITER_LEND_LIQUIDITY_PROGRAM_ID;
/// Reserved `lending_kamino` program identifier.
pub use self::constants::LENDING_KAMINO_PROGRAM_ID;
/// Reserved `lending_marginfi_v2` program identifier.
pub use self::constants::LENDING_MARGINFI_V2_PROGRAM_ID;
/// Loader version 4 program identifier.
pub use self::constants::LOADER_V4_PROGRAM_ID;
/// Reserved `lock_raydium_lp` program identifier.
pub use self::constants::LOCK_RAYDIUM_LP_PROGRAM_ID;
/// Metaplex Token Metadata program identifier.
pub use self::constants::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID;
/// Reserved `metadata_solana_program_metadata` program identifier.
pub use self::constants::METADATA_SOLANA_PROGRAM_METADATA_PROGRAM_ID;
/// Reserved `metadata_spl_name_service` program identifier.
pub use self::constants::METADATA_SPL_NAME_SERVICE_PROGRAM_ID;
/// Native Loader program identifier.
pub use self::constants::NATIVE_LOADER_PROGRAM_ID;
/// Reserved `nft_metaplex_bubblegum` program identifier.
pub use self::constants::NFT_METAPLEX_BUBBLEGUM_PROGRAM_ID;
/// Reserved `nft_tensor_cnft` program identifier.
pub use self::constants::NFT_TENSOR_CNFT_PROGRAM_ID;
/// Reserved `orderbook_jupiter_limit_order` program identifier.
pub use self::constants::ORDERBOOK_JUPITER_LIMIT_ORDER_PROGRAM_ID;
/// Reserved `orderbook_jupiter_limit_order_v2` program identifier.
pub use self::constants::ORDERBOOK_JUPITER_LIMIT_ORDER_V2_PROGRAM_ID;
/// Reserved `orderbook_openbook_v2` program identifier.
pub use self::constants::ORDERBOOK_OPENBOOK_V2_PROGRAM_ID;
/// Reserved `perpetuals_drift_v2` program identifier.
pub use self::constants::PERPETUALS_DRIFT_V2_PROGRAM_ID;
/// Reserved `perpetuals_jupiter` program identifier.
pub use self::constants::PERPETUALS_JUPITER_PROGRAM_ID;
/// Reserved `perpetuals_phoenix_eternal` program identifier.
pub use self::constants::PERPETUALS_PHOENIX_ETERNAL_PROGRAM_ID;
/// Reserved `perpetuals_zeta` program identifier.
pub use self::constants::PERPETUALS_ZETA_PROGRAM_ID;
/// Reserved `router_dflow_aggregator_v4` program identifier.
pub use self::constants::ROUTER_DFLOW_AGGREGATOR_V4_PROGRAM_ID;
/// Reserved `router_jupiter_aggregator_v4` program identifier.
pub use self::constants::ROUTER_JUPITER_AGGREGATOR_V4_PROGRAM_ID;
/// Reserved `router_jupiter_aggregator_v6` program identifier.
pub use self::constants::ROUTER_JUPITER_AGGREGATOR_V6_PROGRAM_ID;
/// Reserved `router_okx_labs_v1` program identifier.
pub use self::constants::ROUTER_OKX_LABS_V1_PROGRAM_ID;
/// Reserved `router_okx_labs_v2` program identifier.
pub use self::constants::ROUTER_OKX_LABS_V2_PROGRAM_ID;
/// Reserved `rwa_ondo_global_markets` program identifier.
pub use self::constants::RWA_ONDO_GLOBAL_MARKETS_PROGRAM_ID;
/// Secp256k1 precompile program identifier.
pub use self::constants::SECP256K1_PROGRAM_ID;
/// Secp256r1 precompile program identifier.
pub use self::constants::SECP256R1_PROGRAM_ID;
/// Enshrined stateless Slashing program identifier.
pub use self::constants::SLASHING_PROGRAM_ID;
/// Reserved `spl_account_compression` program identifier.
pub use self::constants::SPL_ACCOUNT_COMPRESSION_PROGRAM_ID;
/// Historical SPL Memo v1 program identifier.
pub use self::constants::SPL_MEMO_V1_PROGRAM_ID;
/// Historical SPL Memo v3 program identifier.
pub use self::constants::SPL_MEMO_V3_PROGRAM_ID;
/// Current SPL Memo v4 program identifier.
pub use self::constants::SPL_MEMO_V4_PROGRAM_ID;
/// Reserved `spl_noop` program identifier.
pub use self::constants::SPL_NOOP_PROGRAM_ID;
/// Reserved `spl_single_pool` program identifier.
pub use self::constants::SPL_SINGLE_POOL_PROGRAM_ID;
/// Reserved `spl_stake_pool` program identifier.
pub use self::constants::SPL_STAKE_POOL_PROGRAM_ID;
/// SPL Token-2022 ElGamal public-key registry program identifier.
pub use self::constants::SPL_TOKEN_2022_ELGAMAL_REGISTRY_PROGRAM_ID;
/// SPL Token-2022 program identifier.
pub use self::constants::SPL_TOKEN_2022_PROGRAM_ID;
/// Classic SPL Token program identifier.
pub use self::constants::SPL_TOKEN_PROGRAM_ID;
/// Reserved `stable_swap_hylo_exchange` program identifier.
pub use self::constants::STABLE_SWAP_HYLO_EXCHANGE_PROGRAM_ID;
/// Reserved `stable_swap_jupiter_stable` program identifier.
pub use self::constants::STABLE_SWAP_JUPITER_STABLE_PROGRAM_ID;
/// Reserved `stable_swap_numeraire` program identifier.
pub use self::constants::STABLE_SWAP_NUMERAIRE_PROGRAM_ID;
/// Reserved `stable_swap_stabble` program identifier.
pub use self::constants::STABLE_SWAP_STABBLE_PROGRAM_ID;
/// Historical Stake configuration account identifier.
pub use self::constants::STAKE_CONFIG_ACCOUNT_ID;
/// Compatibility alias for the historical Stake configuration account identifier.
pub use self::constants::STAKE_CONFIG_PROGRAM_ID;
/// Stake program identifier.
pub use self::constants::STAKE_PROGRAM_ID;
/// Reserved `staking_jito_tip_distribution` program identifier.
pub use self::constants::STAKING_JITO_TIP_DISTRIBUTION_PROGRAM_ID;
/// Reserved `staking_kamino_farm` program identifier.
pub use self::constants::STAKING_KAMINO_FARM_PROGRAM_ID;
/// Reserved `staking_marinade_finance` program identifier.
pub use self::constants::STAKING_MARINADE_FINANCE_PROGRAM_ID;
/// Reserved `staking_solayer` program identifier.
pub use self::constants::STAKING_SOLAYER_PROGRAM_ID;
/// Reserved `storage_solana_record` program identifier.
pub use self::constants::STORAGE_SOLANA_RECORD_PROGRAM_ID;
/// Reserved `strategy_jupiter_dca` program identifier.
pub use self::constants::STRATEGY_JUPITER_DCA_PROGRAM_ID;
/// System program identifier.
pub use self::constants::SYSTEM_PROGRAM_ID;
/// Clock sysvar account identifier.
pub use self::constants::SYSVAR_CLOCK_PROGRAM_ID;
/// Instructions sysvar account identifier.
pub use self::constants::SYSVAR_INSTRUCTIONS_PROGRAM_ID;
/// Rent sysvar account identifier.
pub use self::constants::SYSVAR_RENT_PROGRAM_ID;
/// Slot Hashes sysvar account identifier.
pub use self::constants::SYSVAR_SLOT_HASHES_PROGRAM_ID;
/// Stake History sysvar account identifier.
pub use self::constants::SYSVAR_STAKE_HISTORY_PROGRAM_ID;
/// Reserved `treasury_helium_treasury_management` program identifier.
pub use self::constants::TREASURY_HELIUM_TREASURY_MANAGEMENT_PROGRAM_ID;
/// Reserved `vault_carrot_defi` program identifier.
pub use self::constants::VAULT_CARROT_DEFI_PROGRAM_ID;
/// Reserved `vault_hylo_stability_pool` program identifier.
pub use self::constants::VAULT_HYLO_STABILITY_POOL_PROGRAM_ID;
/// Reserved `vault_kamino` program identifier.
pub use self::constants::VAULT_KAMINO_PROGRAM_ID;
/// Reserved `vault_kamino_v2` program identifier.
pub use self::constants::VAULT_KAMINO_V2_PROGRAM_ID;
/// Reserved `vault_kamino_yvaults` program identifier.
pub use self::constants::VAULT_KAMINO_YVAULTS_PROGRAM_ID;
/// Reserved `vault_meteora` program identifier.
pub use self::constants::VAULT_METEORA_PROGRAM_ID;
/// Reserved `vesting_jupiter_lock` program identifier.
pub use self::constants::VESTING_JUPITER_LOCK_PROGRAM_ID;
/// Reserved `vesting_streamflow` program identifier.
pub use self::constants::VESTING_STREAMFLOW_PROGRAM_ID;
/// Vote program identifier.
pub use self::constants::VOTE_PROGRAM_ID;
/// Reserved `wallet_jupiter_apepro_smart_wallet` program identifier.
pub use self::constants::WALLET_JUPITER_APEPRO_SMART_WALLET_PROGRAM_ID;
/// Reserved `weighted_swap_stabble` program identifier.
pub use self::constants::WEIGHTED_SWAP_STABBLE_PROGRAM_ID;
/// ZK ElGamal Proof program identifier.
pub use self::constants::ZK_ELGAMAL_PROOF_PROGRAM_ID;
/// ZK Token Proof program identifier.
pub use self::constants::ZK_TOKEN_PROOF_PROGRAM_ID;
/// One enumerable program identifier entry.
pub use self::programs::ProgramIdEntry;
/// Returns every program identifier currently registered by this crate.
pub use self::programs::entries;
/// Finds one registered program or well-known account by exact Base58 identifier.
pub use self::programs::find_registered_program_id;
/// Returns every executable runtime-native, loader, precompile and historical native program identifier.
pub use self::programs::native_program_ids;
/// Returns native well-known accounts that are not executable programs.
pub use self::programs::native_well_known_account_ids;
/// Returns every program identifier currently registered by this crate.
pub use self::programs::registered_program_ids;
/// Internal list of executable native programs.
pub(crate) use self::constants::NATIVE_PROGRAM_ID_ENTRIES;
/// Internal list of native well-known accounts.
pub(crate) use self::constants::NATIVE_WELL_KNOWN_ACCOUNT_ID_ENTRIES;
/// Internal list of currently registered identifiers.
pub(crate) use self::constants::PROGRAM_ID_ENTRIES;

View File

@@ -0,0 +1,148 @@
// file: ks-program-ids/src/programs.rs
// version: 5
//! Enumerable canonical program registry.
/// One enumerable program identifier entry.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ProgramIdEntry {
/// Stable lower snake case registry code.
pub name: &'static str,
/// Base58 Solana program identifier.
pub address: &'static str,
}
impl ProgramIdEntry {
/// Returns the stable lower snake case registry code.
pub const fn code(&self) -> &'static str {
return self.name;
}
/// Returns the Base58 Solana program identifier.
pub const fn program_id(&self) -> &'static str {
return self.address;
}
}
/// Returns every program identifier currently registered by this crate.
pub fn entries() -> &'static [crate::ProgramIdEntry] {
return crate::PROGRAM_ID_ENTRIES;
}
/// Returns every program identifier currently registered by this crate.
pub fn registered_program_ids() -> &'static [crate::ProgramIdEntry] {
return crate::PROGRAM_ID_ENTRIES;
}
/// Returns every executable runtime-native, loader, precompile and historical native program identifier.
pub fn native_program_ids() -> &'static [crate::ProgramIdEntry] {
return crate::NATIVE_PROGRAM_ID_ENTRIES;
}
/// Returns native well-known accounts that are not executable programs.
pub fn native_well_known_account_ids() -> &'static [crate::ProgramIdEntry] {
return crate::NATIVE_WELL_KNOWN_ACCOUNT_ID_ENTRIES;
}
/// Finds one registered program or well-known account by exact Base58 identifier.
pub fn find_registered_program_id(
program_id: &str,
) -> std::option::Option<&'static crate::ProgramIdEntry> {
return crate::PROGRAM_ID_ENTRIES
.iter()
.find(|entry| return entry.address == program_id);
}
#[cfg(test)]
mod tests {
#[test]
fn registry_entries_are_unique_and_non_empty() {
let mut codes = std::collections::BTreeSet::new();
let mut program_ids = std::collections::BTreeSet::new();
for entry in crate::registered_program_ids() {
assert!(!entry.code().is_empty());
assert!(!entry.program_id().is_empty());
assert!(codes.insert(entry.code()));
assert!(program_ids.insert(entry.program_id()));
}
for window in crate::registered_program_ids().windows(2) {
assert!(window[0].code() < window[1].code());
}
assert_eq!(crate::registered_program_ids().len(), 137);
}
#[test]
fn native_registry_contains_exactly_every_solana_core_surface() {
let codes = crate::native_program_ids()
.iter()
.map(crate::ProgramIdEntry::code)
.collect::<std::collections::BTreeSet<_>>();
assert!(codes.contains("vote"));
assert!(codes.contains("slashing"));
assert!(codes.contains("bpf_loader_deprecated"));
assert!(codes.contains("bpf_loader"));
assert!(codes.contains("bpf_loader_upgradeable"));
assert!(codes.contains("loader_v4"));
assert_eq!(codes.len(), 18);
assert_eq!(codes.len(), crate::native_program_ids().len());
}
#[test]
fn stake_config_is_a_well_known_account_not_an_executable_program() {
assert!(crate::native_well_known_account_ids().iter().any(|entry| {
return entry.program_id() == crate::STAKE_CONFIG_ACCOUNT_ID;
}));
assert!(!crate::native_program_ids().iter().any(|entry| {
return entry.program_id() == crate::STAKE_CONFIG_ACCOUNT_ID;
}));
}
#[test]
fn registry_lookup_finds_system_program() {
let entry = crate::find_registered_program_id(crate::SYSTEM_PROGRAM_ID);
assert_eq!(entry.map(crate::ProgramIdEntry::code), std::option::Option::Some("system"));
}
#[test]
fn compatibility_api_and_core_constants_are_complete() {
assert_eq!(crate::entries(), crate::registered_program_ids());
assert_eq!(crate::STAKE_CONFIG_PROGRAM_ID, crate::STAKE_CONFIG_ACCOUNT_ID);
let expected = [
crate::ADDRESS_LOOKUP_TABLE_PROGRAM_ID,
crate::COMPUTE_BUDGET_PROGRAM_ID,
crate::CONFIG_PROGRAM_ID,
crate::FEATURE_PROGRAM_ID,
crate::SYSTEM_PROGRAM_ID,
crate::VOTE_PROGRAM_ID,
crate::STAKE_PROGRAM_ID,
crate::SLASHING_PROGRAM_ID,
crate::ZK_ELGAMAL_PROOF_PROGRAM_ID,
crate::ZK_TOKEN_PROOF_PROGRAM_ID,
];
for program_id in expected {
assert!(crate::find_registered_program_id(program_id).is_some());
}
}
#[test]
fn protocol_primitives_are_registered_without_joining_native_surfaces() {
let protocol_program_ids = [
crate::SPL_MEMO_V1_PROGRAM_ID,
crate::SPL_MEMO_V3_PROGRAM_ID,
crate::SPL_MEMO_V4_PROGRAM_ID,
crate::SPL_TOKEN_PROGRAM_ID,
crate::SPL_TOKEN_2022_PROGRAM_ID,
crate::SPL_TOKEN_2022_ELGAMAL_REGISTRY_PROGRAM_ID,
crate::ASSOCIATED_TOKEN_PROGRAM_ID,
crate::METADATA_METAPLEX_TOKEN_METADATA_PROGRAM_ID,
];
for program_id in protocol_program_ids {
assert!(crate::find_registered_program_id(program_id).is_some());
assert!(
!crate::native_program_ids()
.iter()
.any(|entry| return entry.program_id() == program_id)
);
}
}
}