v0.1.0-pre.012

This commit is contained in:
2026-07-24 15:59:00 +02:00
parent 60660ca555
commit e753a80c3a
179 changed files with 5653 additions and 10813 deletions

View File

@@ -1,5 +1,5 @@
<!-- file: README.md --> <!-- file: README.md -->
<!-- version: 8 --> <!-- version: 9 -->
# Khadhroony Bot3 # Khadhroony Bot3
@@ -59,6 +59,8 @@ cargo clippy --workspace --all-targets
`0.1.0-pre.009` porte le décodeur indépendant Metaplex Token Metadata. Il couvre les 58 discriminateurs dinstructions publiés `0..=57`, les 15 variantes de comptes `Key 0..=14`, les PDA officiels et les layouts courants, expérimentaux et historiques. Les metadata externes Metaplex restent séparées des metadata incorporées de Token2022, de Metaplex Core et de Bubblegum. `0.1.0-pre.009` porte le décodeur indépendant Metaplex Token Metadata. Il couvre les 58 discriminateurs dinstructions publiés `0..=57`, les 15 variantes de comptes `Key 0..=14`, les PDA officiels et les layouts courants, expérimentaux et historiques. Les metadata externes Metaplex restent séparées des metadata incorporées de Token2022, de Metaplex Core et de Bubblegum.
`0.1.0-pre.012` restaure les 98 squelettes de décodeurs réservés sous forme de types `Dc*Decoder` implémentant `DcApiProtocolDecoder`. Les 97 surfaces identifiables déclarent leur Program ID exact dans `kb-program-ids`; Anchor reste volontairement sans identifiant statique. Ces squelettes répondent `Maybe` sans produire de faux événement et sont exposés uniquement par la façade `kb_lib`.
## Matérialisateurs consolidés ## Matérialisateurs consolidés
`0.1.0-pre.010` porte les quatre matérialisateurs Solana natifs dans `kb-lib` : `0.1.0-pre.010` porte les quatre matérialisateurs Solana natifs dans `kb-lib` :

View File

@@ -1,5 +1,5 @@
<!-- file: ROADMAP.md --> <!-- file: ROADMAP.md -->
<!-- version: 10 --> <!-- version: 11 -->
# ROADMAP — khadhroony-bot3 # ROADMAP — khadhroony-bot3
@@ -141,4 +141,16 @@
- [x] Restaurer les 98 scaffolds de décodeurs avec des constantes `DC_*` uniques et réellement référencées. - [x] Restaurer les 98 scaffolds de décodeurs avec des constantes `DC_*` uniques et réellement référencées.
- [x] Étendre laudit aux façades privées, aux réexports transitifs `self::`, aux alias interdits et à la complétude des APIs externes. - [x] Étendre laudit aux façades privées, aux réexports transitifs `self::`, aux alias interdits et à la complétude des APIs externes.
- [ ] Valider les 415 tests unitaires et les trois tests dintégration de `kb-lib`, Clippy et le workspace avec Cargo sur la machine de développement. - [ ] Valider les 415 tests unitaires et les trois tests dintégration de `kb-lib`, Clippy et le workspace avec Cargo sur la machine de développement.
- [ ] Poursuivre avec les exécuteurs déjà implémentés dans bot2.
### 0.1.0-pre.012 — Squelettes des décodeurs réservés
- [x] Remplacer les 98 frontières `LEGACY_CRATE`/`MIGRATION_STATUS` par des types `Dc*Decoder` concrets.
- [x] Implémenter `DcApiProtocolDecoder` avec une compatibilité `Maybe` et un résultat vide sans faux événement.
- [x] Conserver Anchor sans Program ID statique et rattacher les 97 autres squelettes à une surface exacte.
- [x] Ajouter les 97 Program IDs correspondants à `kb-program-ids` et porter le registre total à 130 entrées uniques.
- [x] Exposer tous les types exclusivement par la façade `kb-lib/src/lib.rs`.
- [x] Supprimer `DC_MIGRATION_BOUNDARIES`, `*_LEGACY_CRATE` et `*_MIGRATION_STATUS` de larborescence des décodeurs.
- [x] Ajouter un test central de contrat pour les 98 squelettes et étendre laudit contre le retour des marqueurs temporaires.
- [ ] Valider le nouveau test unitaire, les 130 Program IDs, Clippy et le workspace avec Cargo sur la machine de développement.
- [ ] Vérifier puis restaurer les squelettes des familles de matérialisation encore vides.
- [ ] Passer ensuite à lAPI des exécuteurs, à leurs squelettes puis au port des exécuteurs déjà implémentés dans bot2.

View File

@@ -1,5 +1,5 @@
<!-- file: RULES.md --> <!-- file: RULES.md -->
<!-- version: 20 --> <!-- version: 21 -->
# Règles spécifiques à `khadhroony-bot3` # Règles spécifiques à `khadhroony-bot3`
@@ -20,6 +20,7 @@ Toute livraison doit exécuter l'audit `python3 scripts/audit_rust_workspace_rul
- Les blocs consécutifs de réexports `pub use` et `pub(crate) use` ne contiennent aucune ligne vide interne et restent ordonnés alphabétiquement lorsque `cargo fmt` ne les réordonne pas. - Les blocs consécutifs de réexports `pub use` et `pub(crate) use` ne contiennent aucune ligne vide interne et restent ordonnés alphabétiquement lorsque `cargo fmt` ne les réordonne pas.
- Les familles de symboles consolidées dans `kb-lib` utilisent les préfixes `DC_`/`Dc`/`decoder_` pour les décodeurs, `MT_`/`Mt`/`materializer_` pour les matérialisateurs, `EX_`/`Ex`/`executor_` pour les exécuteurs et `MD_`/`Md`/`model_` pour les modèles. - Les familles de symboles consolidées dans `kb-lib` utilisent les préfixes `DC_`/`Dc`/`decoder_` pour les décodeurs, `MT_`/`Mt`/`materializer_` pour les matérialisateurs, `EX_`/`Ex`/`executor_` pour les exécuteurs et `MD_`/`Md`/`model_` pour les modèles.
- Les méthodes inhérentes et helpers strictement privés peuvent conserver un nom local court ; les préfixes sappliquent aux constantes, types, traits et fonctions libres exposés à la crate ou hors de la crate. - Les méthodes inhérentes et helpers strictement privés peuvent conserver un nom local court ; les préfixes sappliquent aux constantes, types, traits et fonctions libres exposés à la crate ou hors de la crate.
- Les constantes temporaires `*_LEGACY_CRATE`, `*_MIGRATION_STATUS` et `*_MIGRATION_BOUNDARIES` doivent disparaître dune famille dès que ses squelettes typés sont restaurés ; elles ne constituent jamais une API durable.
## Règles Tauri et TypeScript ## Règles Tauri et TypeScript
@@ -83,21 +84,23 @@ Les nouvelles surfaces de programmes doivent utiliser un nom canonique basé sur
<function_code>_<family_code>_<identifier_code>[_vN] <function_code>_<family_code>_<identifier_code>[_vN]
``` ```
Les modules de décodage doivent utiliser : Les modules internes de décodage doivent utiliser la hiérarchie de fichiers :
```text ```text
kb_lib::decoder::<function_code>::<family_code>_<identifier_code>[_vN] kb-lib/src/decoder/<function_code>/<family_code>_<identifier_code>[_vN].rs
``` ```
Exemples : Exemples :
- `kb_lib::decoder::amm::raydium_cpmm` ; - `kb-lib/src/decoder/amm/raydium_cpmm.rs` ;
- `kb_lib::decoder::clmm::raydium` ; - `kb-lib/src/decoder/clmm/raydium.rs` ;
- `kb_lib::decoder::dlmm::meteora` ; - `kb-lib/src/decoder/dlmm/meteora.rs` ;
- `kb_lib::decoder::router::jupiter_aggregator_v6` ; - `kb-lib/src/decoder/router/jupiter_aggregator_v6.rs` ;
- `kb_lib::decoder::orderbook::openbook_v2` ; - `kb-lib/src/decoder/orderbook/openbook_v2.rs` ;
- `kb_lib::decoder::metadata::metaplex_token_metadata` ; - `kb-lib/src/decoder/metadata/metaplex_token_metadata.rs` ;
- `kb_lib::decoder::nft::metaplex_bubblegum`. - `kb-lib/src/decoder/nft/metaplex_bubblegum.rs`.
Ces modules restent privés. Les consommateurs externes utilisent exclusivement les types et fonctions réexportés directement par `kb_lib`.
Les noms historiques ou issus d'IDL doivent être conservés dans le registre, mais ne doivent pas créer de nouveau module si un module canonique existe déjà. Les noms historiques ou issus d'IDL doivent être conservés dans le registre, mais ne doivent pas créer de nouveau module si un module canonique existe déjà.
@@ -181,7 +184,7 @@ Aucun renommage massif de modules n'est autorisé sans étape de contrôle dédi
- Les exécuteurs résident dans `kb_lib::executor`. - Les exécuteurs résident dans `kb_lib::executor`.
- Une surface classifiée peut avoir un module décodeur et un module exécuteur distincts dans `kb-lib`. - Une surface classifiée peut avoir un module décodeur et un module exécuteur distincts dans `kb-lib`.
- Les exécuteurs ne doivent pas dépendre des décodeurs. - Les exécuteurs ne doivent pas dépendre des décodeurs.
- Les exécuteurs doivent passer par `kb_lib::executor::api` pour leur contrat public. - Les exécuteurs utilisent les contrats `ExApi*` réexportés directement par la façade `kb_lib`.
- Les garde-fous communs doivent être placés dans les modules de sécurité partagés de `kb-lib`. - Les garde-fous communs doivent être placés dans les modules de sécurité partagés de `kb-lib`.
- Aucun exécuteur ne doit envoyer de transaction sans simulation et validation explicite. - Aucun exécuteur ne doit envoyer de transaction sans simulation et validation explicite.
- Les surfaces non classifiées ne doivent pas avoir de crate exécuteur. - Les surfaces non classifiées ne doivent pas avoir de crate exécuteur.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/PROGRAM_NAMING.md --> <!-- file: docs/PROGRAM_NAMING.md -->
<!-- version: 1 --> <!-- version: 2 -->
# Nommage canonique des programmes et surfaces # Nommage canonique des programmes et surfaces
@@ -94,22 +94,22 @@ Le registre ne doit pas perdre les anciens noms. Chaque programme doit conserver
## Exceptions conservées ## Exceptions conservées
Les programmes Solana/SPL de base restent groupés dans des crates techniques déjà lisibles : Les programmes Solana/SPL de base restent groupés dans des modules techniques privés et des types publics explicites :
- `kb_decoder_solana_core` ; - `DcSolanaCoreDecoder` ;
- `kb_decoder_spl_token` ; - `DcSplTokenDecoder` ;
- `kb_decoder_spl_token_2022` ; - `DcSplToken2022Decoder` ;
- `kb_decoder_spl_associated_token_account`. - `DcSplAssociatedTokenAccountDecoder`.
Ces crates ne sont pas renommées en `kb_decoder_core_*` ou `kb_decoder_token_*`, car elles servent de couche primitive avant les surfaces DEX/router. Ces types restent dans la façade `kb_lib`, car ils servent de couche primitive avant les surfaces DEX/router.
## Politique de migration ## Politique de migration
La migration physique des dossiers ne doit pas être faite en masse. Pour chaque rename : La migration physique des dossiers ne doit pas être faite en masse. Pour chaque rename :
1. prouver que le `program_id` correspond à la surface ; 1. prouver que le `program_id` correspond à la surface ;
2. créer ou renommer une seule crate ; 2. créer ou renommer un seul module privé ;
3. mettre à jour `Cargo.toml` ; 3. mettre à jour la façade `kb-lib/src/lib.rs` ;
4. mettre à jour le registre ; 4. mettre à jour le registre ;
5. exécuter `cargo build` ; 5. exécuter `cargo build` ;
6. supprimer lancien alias seulement après validation. 6. supprimer lancien alias seulement après validation.

View File

@@ -1,5 +1,5 @@
<!-- file: docs/PROGRAM_REGISTRY_CONTROL.md --> <!-- file: docs/PROGRAM_REGISTRY_CONTROL.md -->
<!-- version: 6 --> <!-- version: 7 -->
# Contrôle du registre des programmes # Contrôle du registre des programmes
@@ -250,7 +250,7 @@ Ces identifiants sont détaillés dans `docs/CORE_PROGRAM_IDS.md`. Ils sont couv
| `lock_raydium_lp` | `LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE` | `raydium_lock_lp` | `raydium_lock_lp` | `-` | `kb_decoder_lock_raydium_lp` | `reserved_missing` | | `lock_raydium_lp` | `LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE` | `raydium_lock_lp` | `raydium_lock_lp` | `-` | `kb_decoder_lock_raydium_lp` | `reserved_missing` |
| `admin_jupiter_lock` | `LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn` | `jupiter_lock` | `jupiter_lock` | `-` | `kb_decoder_admin_jupiter_lock` | `reserved_missing` | | `admin_jupiter_lock` | `LocpQgucEQHbqNABEYvBvwoxCPsSbG91A1QaQhQQqjn` | `jupiter_lock` | `jupiter_lock` | `-` | `kb_decoder_admin_jupiter_lock` | `reserved_missing` |
| `admin_pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | `pump_fees` | `pump_fees` | `kb_decoder_pump_fees` | `kb_decoder_admin_pump_fees` | `current_alias` | | `admin_pump_fees` | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | `pump_fees` | `pump_fees` | `kb_decoder_pump_fees` | `kb_decoder_admin_pump_fees` | `current_alias` |
| `metadata_metaplex_token_metadata` | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | `metaplex_token_metadata` | `metaplex_token_metadata` | `-` | `kb_lib::decoder::metadata::metaplex_token_metadata` | `current_migrated` | | `metadata_metaplex_token_metadata` | `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s` | `metaplex_token_metadata` | `metaplex_token_metadata` | `-` | `kb_lib::DcMetadataMetaplexTokenMetadataDecoder` | `current_migrated` |
| `metadata_name_service` | `namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX` | `name_service` | `name_service` | `-` | `kb_decoder_metadata_spl_name_service` | `reserved_missing` | | `metadata_name_service` | `namesLPneVptA9Z5rqUDD9tMTWEJwofgaYwp8cawRkX` | `name_service` | `name_service` | `-` | `kb_decoder_metadata_spl_name_service` | `reserved_missing` |
| `nft_metaplex_bubblegum` | `BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY` | `bubblegum` | `bubblegum` | `-` | `kb_decoder_nft_metaplex_bubblegum` | `reserved_missing` | | `nft_metaplex_bubblegum` | `BGUMAp9Gq7iTEuizy4pqaxsTyUCBK68MDfK752saRPUY` | `bubblegum` | `bubblegum` | `-` | `kb_decoder_nft_metaplex_bubblegum` | `reserved_missing` |
| `nft_metaplex_mpl_core` | `CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d` | `mpl_core` | `mpl_core` | `-` | `kb_decoder_nft_metaplex_mpl_core` | `reserved_missing` | | `nft_metaplex_mpl_core` | `CoREENxT6tW1HoK8ypY1SxRMZTcVPm7R94rH4PZNhX7d` | `mpl_core` | `mpl_core` | `-` | `kb_decoder_nft_metaplex_mpl_core` | `reserved_missing` |

View File

@@ -1,5 +1,5 @@
<!-- file: docs/SOLANA_INTERFACE_DEPENDENCIES.md --> <!-- file: docs/SOLANA_INTERFACE_DEPENDENCIES.md -->
<!-- version: 31 --> <!-- version: 32 -->
# Dépendances dinterfaces Solana et SPL # Dépendances dinterfaces Solana et SPL
@@ -213,9 +213,9 @@ ni discriminant, ni builder : elle ajoute seulement, avant Borsh, une validation
longueurs de chaînes de `Initialize`, `UpdateField` et `RemoveKey`. Cette garde plus sûre devient longueurs de chaînes de `Initialize`, `UpdateField` et `RemoveKey`. Cette garde plus sûre devient
normative pour le décodeur ; `UpdateAuthority` et `Emit` restent sans chaîne. normative pour le décodeur ; `UpdateAuthority` et `Emit` restent sans chaîne.
La migration `0.1.0-pre.008` conserve ces contrats dans La migration `0.1.0-pre.008` conserve ces contrats dans le type public
`kb_lib::decoder::spl::token2022` et isole le registre dans `kb_lib::DcSplToken2022Decoder` et isole le registre dans
`kb_lib::decoder::spl::elgamal_registry`. Les targets de tracing, matrices et Program IDs restent `kb_lib::DcSplElgamalRegistryDecoder`. Les targets de tracing, matrices et Program IDs restent
distincts ; aucun pointeur TLV nest interprété comme une preuve de létat du programme externe distincts ; aucun pointeur TLV nest interprété comme une preuve de létat du programme externe
pointé. pointé.
@@ -287,7 +287,7 @@ Le catalogue workspace déclare `mpl-token-metadata ^5.1` avec la seule feature
Le dépôt officiel `metaplex-foundation/mpl-token-metadata` confirme le Program ID `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s`. LIDL officiel audité porte la version `1.14.0` et le blob `5df4a24f62c2743125be096cc174680790c92c18`; linventaire Rust généré des instructions porte le blob `3c42eec629f82e44ba690a7c4bd2177cc78f1d49`. Le dépôt officiel `metaplex-foundation/mpl-token-metadata` confirme le Program ID `metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s`. LIDL officiel audité porte la version `1.14.0` et le blob `5df4a24f62c2743125be096cc174680790c92c18`; linventaire Rust généré des instructions porte le blob `3c42eec629f82e44ba690a7c4bd2177cc78f1d49`.
`kb_lib::decoder::metadata::metaplex_token_metadata` implémente désormais la couverture exhaustive des `kb_lib::DcMetadataMetaplexTokenMetadataDecoder` implémente désormais la couverture exhaustive des
58 discriminateurs `0..=57`. Les arguments sont lus avec les types Borsh officiels lorsque le SDK 58 discriminateurs `0..=57`. Les arguments sont lus avec les types Borsh officiels lorsque le SDK
les expose, ou avec un miroir local borné du wire publié pour les variantes historiques. Les les expose, ou avec un miroir local borné du wire publié pour les variantes historiques. Les
payloads, chaînes, créateurs, frais, comptes et suffixes sont bornés. payloads, chaînes, créateurs, frais, comptes et suffixes sont bornés.

View File

@@ -1,13 +1,13 @@
{ {
"file": "docs/SPL_MEMO_MATRIX.json", "file": "docs/SPL_MEMO_MATRIX.json",
"version": 10, "version": 11,
"matrixVersion": 4, "matrixVersion": 4,
"scope": "SPL Memo v1, v3 et v4", "scope": "SPL Memo v1, v3 et v4",
"bot3Migration": { "bot3Migration": {
"decoderModule": "kb_lib::decoder::spl::memo", "decoderModule": "kb-lib/src/decoder/spl/memo",
"publicDecoder": "kb_lib::SplMemoDecoder", "publicDecoder": "kb_lib::DcSplMemoDecoder",
"decoderStatus": "ported_in_0.1.0-pre.005", "decoderStatus": "ported_in_0.1.0-pre.005",
"publicMaterializer": "kb_lib::TransactionAnnotationMaterializer", "publicMaterializer": "kb_lib::MtTransactionAnnotationMaterializer",
"materializerStatus": "ported_in_0.1.0-pre.011", "materializerStatus": "ported_in_0.1.0-pre.011",
"executorStatus": "pending_later_tranche" "executorStatus": "pending_later_tranche"
}, },

View File

@@ -1,5 +1,5 @@
<!-- file: kb-lib/README.md --> <!-- file: kb-lib/README.md -->
<!-- version: 8 --> <!-- version: 9 -->
# kb-lib # kb-lib
@@ -88,9 +88,8 @@ discriminateurs `0..=57`, conserve les arguments Borsh, les comptes positionnels
les placeholders optionnels, les chemins outer/CPI et les transactions échouées les placeholders optionnels, les chemins outer/CPI et les transactions échouées
comme intentions non commitées. comme intentions non commitées.
Le module public La façade `kb_lib` expose aussi les parseurs bornés des 15 variantes
`kb_lib::decoder::metadata::metaplex_token_metadata` expose aussi les parseurs `Key 0..=14` : Metadata, Edition et Master Edition,
bornés des 15 variantes `Key 0..=14` : Metadata, Edition et Master Edition,
Edition Marker V1/V2, Token Record, records de délégation et dautorité, Token Edition Marker V1/V2, Token Record, records de délégation et dautorité, Token
Owned Escrow et Reservation List historiques. Chaque parseur vérifie lowner, Owned Escrow et Reservation List historiques. Chaque parseur vérifie lowner,
le PDA, le bump, la longueur et les suffixes avant projection. Les comptes le PDA, le bump, la longueur et les suffixes avant projection. Les comptes
@@ -111,7 +110,8 @@ politique dexécution définitivement interdite. La matrice normative est
- `DcToken2022State`, `DcToken2022StateKind`, `DcToken2022TlvEntry` et `decoder_spl_token2022_token2022_state()` : API publique de lecture détat Token2022 ; - `DcToken2022State`, `DcToken2022StateKind`, `DcToken2022TlvEntry` et `decoder_spl_token2022_token2022_state()` : API publique de lecture détat Token2022 ;
- `DcSplElgamalRegistryDecoder`, `DcSplElGamalRegistryState` et `decoder_spl_elgamal_registry_parse_elgamal_registry_state()` : API publique du registre ElGamal ; - `DcSplElgamalRegistryDecoder`, `DcSplElGamalRegistryState` et `decoder_spl_elgamal_registry_parse_elgamal_registry_state()` : API publique du registre ElGamal ;
- `DcMetadataMetaplexTokenMetadataDecoder` : décodeur exact du programme Metaplex Token Metadata ; - `DcMetadataMetaplexTokenMetadataDecoder` : décodeur exact du programme Metaplex Token Metadata ;
- `kb_lib::decoder::metadata::metaplex_token_metadata` : parseurs et snapshots publics des comptes Metaplex ; - les fonctions `decoder_metadata_metaplex_token_metadata_*` et les types `DcMetadataMtm*` : parseurs et snapshots publics des comptes Metaplex ;
- les 98 types réservés `Dc*Decoder` : squelettes compatibles avec `DcApiProtocolDecoder`, exposant 97 Program IDs enregistrés et la frontière générique Anchor sans Program ID ;
- `DcApiInstructionDecoder` : contrat de reconnaissance, couverture et décodage contextualisé ; - `DcApiInstructionDecoder` : contrat de reconnaissance, couverture et décodage contextualisé ;
- `DcApiProtocolDecoder` : contrat de compatibilité avec les observations historiques ; - `DcApiProtocolDecoder` : contrat de compatibilité avec les observations historiques ;
- `MdCoreInstructionReplayInput` : input source-neutral produit par lextraction core ; - `MdCoreInstructionReplayInput` : input source-neutral produit par lextraction core ;
@@ -123,11 +123,11 @@ Les helpers, constantes wire et types intermédiaires de chaque composant resten
## Exemple ## Exemple
```rust ```rust
let decoder = kb_lib::SolanaCoreDecoder; let decoder = kb_lib::DcSolanaCoreDecoder;
let recognition = kb_lib::InstructionDecoder::recognize(&decoder, &input); let recognition = kb_lib::DcApiInstructionDecoder::recognize(&decoder, &input);
``` ```
Lappel de décodage complet utilise `InstructionDecoder::decode` après une reconnaissance compatible. Le pipeline demeure responsable de la sélection du décodeur et de la persistance du résultat. Lappel de décodage complet utilise `DcApiInstructionDecoder::decode` après une reconnaissance compatible. Le pipeline demeure responsable de la sélection du décodeur et de la persistance du résultat.
## Frontières ## Frontières
@@ -135,4 +135,5 @@ Lappel de décodage complet utilise `InstructionDecoder::decode` après une r
- Les décodeurs ne lisent pas un état RPC courant pour reconstruire une transaction historique. - Les décodeurs ne lisent pas un état RPC courant pour reconstruire une transaction historique.
- Une transaction échouée peut produire une intention structurée, jamais une mutation commitée. - Une transaction échouée peut produire une intention structurée, jamais une mutation commitée.
- Un matérialiseur externe dépend uniquement des contrats et modèles publics de `kb-lib`, jamais dun décodeur concret. - Un matérialiseur externe dépend uniquement des contrats et modèles publics de `kb-lib`, jamais dun décodeur concret.
- Les autres matérialisateurs et les exécuteurs sont portés dans des tranches séparées. - Les squelettes réservés répondent uniquement `Maybe` pour leur Program ID et retournent une liste vide ; ils ne prétendent pas décoder une surface avant son port fonctionnel.
- Les exécuteurs sont portés dans des tranches séparées.

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder.rs // file: kb-lib/src/decoder.rs
// version: 7 // version: 8
//! Consolidated decoder modules. //! Consolidated decoder modules.
@@ -33,37 +33,338 @@ mod vesting;
mod wallet; mod wallet;
mod weighted; mod weighted;
/// Internal inventory of pending decoder migration boundaries. /// Reserved `kb_decoder_adapter_saber_decimal_wrapper` decoder.
#[allow(dead_code)] pub use self::adapter::DcAdapterSaberDecimalWrapperDecoder;
pub(crate) const DC_MIGRATION_BOUNDARIES: &[&[(&str, &str)]] = &[ /// Reserved `kb_decoder_admin_jupiter_lock` decoder.
self::adapter::DC_ADAPTER_MIGRATION_BOUNDARIES, pub use self::admin::DcAdminJupiterLockDecoder;
self::admin::DC_ADMIN_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_admin_pump_fees` decoder.
self::amm::DC_AMM_MIGRATION_BOUNDARIES, pub use self::admin::DcAdminPumpFeesDecoder;
self::anchor::DC_ANCHOR_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_aldrin_v1` decoder.
self::bridge::DC_BRIDGE_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmAldrinV1Decoder;
self::clmm::DC_CLMM_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_aldrin_v2` decoder.
self::cpmm::DC_CPMM_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmAldrinV2Decoder;
self::dlmm::DC_DLMM_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_alphaq` decoder.
self::fees::DC_FEES_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmAlphaqDecoder;
self::governance::DC_GOVERNANCE_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_believe` decoder.
self::launchpad::DC_LAUNCHPAD_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmBelieveDecoder;
self::lending::DC_LENDING_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_bonk_swap` decoder.
self::lock::DC_LOCK_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmBonkSwapDecoder;
self::metadata::DC_METADATA_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_fluxbeam` decoder.
self::nft::DC_NFT_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmFluxbeamDecoder;
self::orderbook::DC_ORDERBOOK_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_goon_fi` decoder.
self::perpetuals::DC_PERPETUALS_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmGoonFiDecoder;
self::router::DC_ROUTER_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_goosefx_gamma` decoder.
self::rwa::DC_RWA_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmGoosefxGammaDecoder;
self::spl::DC_SPL_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_goosefx_v2` decoder.
self::stable::DC_STABLE_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmGoosefxV2Decoder;
self::staking::DC_STAKING_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_guac_swap` decoder.
self::treasury::DC_TREASURY_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmGuacSwapDecoder;
self::vault::DC_VAULT_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_lifinity_swap_v2` decoder.
self::vesting::DC_VESTING_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmLifinitySwapV2Decoder;
self::wallet::DC_WALLET_MIGRATION_BOUNDARIES, /// Reserved `kb_decoder_amm_metadao_futarchy_amm` decoder.
self::weighted::DC_WEIGHTED_MIGRATION_BOUNDARIES, pub use self::amm::DcAmmMetadaoFutarchyAmmDecoder;
]; /// Reserved `kb_decoder_amm_metadao_v0_5` decoder.
pub use self::amm::DcAmmMetadaoV05Decoder;
/// Reserved `kb_decoder_amm_meteora_damm_v1` decoder.
pub use self::amm::DcAmmMeteoraDammV1Decoder;
/// Reserved `kb_decoder_amm_meteora_damm_v2` decoder.
pub use self::amm::DcAmmMeteoraDammV2Decoder;
/// Reserved `kb_decoder_amm_obric_v2` decoder.
pub use self::amm::DcAmmObricV2Decoder;
/// Reserved `kb_decoder_amm_one_dex` decoder.
pub use self::amm::DcAmmOneDexDecoder;
/// Reserved `kb_decoder_amm_pump_swap` decoder.
pub use self::amm::DcAmmPumpSwapDecoder;
/// Reserved `kb_decoder_amm_raydium_lp_v4` decoder.
pub use self::amm::DcAmmRaydiumLpV4Decoder;
/// Reserved `kb_decoder_amm_solfi` decoder.
pub use self::amm::DcAmmSolfiDecoder;
/// Reserved `kb_decoder_amm_solfi_v2` decoder.
pub use self::amm::DcAmmSolfiV2Decoder;
/// Reserved `kb_decoder_amm_vertigo` decoder.
pub use self::amm::DcAmmVertigoDecoder;
/// Reserved `kb_decoder_amm_virtuals` decoder.
pub use self::amm::DcAmmVirtualsDecoder;
/// Reserved `kb_decoder_amm_woofi` decoder.
pub use self::amm::DcAmmWoofiDecoder;
/// Reserved `kb_decoder_amm_zero_fi` decoder.
pub use self::amm::DcAmmZeroFiDecoder;
/// Reserved `kb_decoder_amm_zora` decoder.
pub use self::amm::DcAmmZoraDecoder;
/// Reserved `kb_decoder_anchor` decoder.
pub use self::anchor::DcAnchorDecoder;
/// Current contextual core instruction input contract version.
pub use self::api::DC_API_CORE_INSTRUCTION_INPUT_CONTRACT_VERSION;
/// Stable contextual decoded observation.
pub use self::api::DcApiDecodedObservation;
/// Machine-readable decoder coverage declaration.
pub use self::api::DcApiDecoderCoverageDeclaration;
/// Declared decoder coverage entry kind.
pub use self::api::DcApiDecoderCoverageEntryKind;
/// Structured decoder diagnostic.
pub use self::api::DcApiDecoderDiagnostic;
/// Complete decoder execution result.
pub use self::api::DcApiDecoderExecutionResult;
/// Stable decoder identity.
pub use self::api::DcApiDecoderIdentity;
/// Decoder terminal result status.
pub use self::api::DcApiDecoderOutcomeStatus;
/// Explicit decoding proof.
pub use self::api::DcApiDecoderProof;
/// Decoding proof category.
pub use self::api::DcApiDecoderProofKind;
/// Deterministic decoder recognition result.
pub use self::api::DcApiDecoderRecognition;
/// Exposes the decoder support level.
pub use self::api::DcApiDecoderSupport;
/// One statically declared decoder surface.
pub use self::api::DcApiDecoderSurface;
/// Initial decoder implementation placeholder for API-level tests.
pub use self::api::DcApiInitialDecoder;
/// Contextual instruction decoder contract.
pub use self::api::DcApiInstructionDecoder;
/// Exposes the common protocol decoder trait.
pub use self::api::DcApiProtocolDecoder;
/// Computes the deterministic contextual input hash.
pub use self::api::decoder_api_decoder_api_contextual_input_hash;
/// Returns true when a decoder declares the exact program id.
pub use self::api::decoder_api_decoder_handles_program_id;
/// Computes a deterministic lowercase SHA-256 hash for one JSON value.
pub use self::api::decoder_api_deterministic_json_hash;
/// Extracts the first eight payload bytes as hexadecimal when available.
pub use self::api::decoder_api_discriminator_8_hex;
/// Reserved `kb_decoder_bridge_circle_cctp_token_messenger_minter` decoder.
pub use self::bridge::DcBridgeCircleCctpTokenMessengerMinterDecoder;
/// Reserved `kb_decoder_bridge_circle_cctp_token_messenger_minter_v2` decoder.
pub use self::bridge::DcBridgeCircleCctpTokenMessengerMinterV2Decoder;
/// Reserved `kb_decoder_bridge_layer_zero_endpoint` decoder.
pub use self::bridge::DcBridgeLayerZeroEndpointDecoder;
/// Reserved `kb_decoder_bridge_layer_zero_executor` decoder.
pub use self::bridge::DcBridgeLayerZeroExecutorDecoder;
/// Reserved `kb_decoder_clmm_byreal` decoder.
pub use self::clmm::DcClmmByrealDecoder;
/// Reserved `kb_decoder_clmm_fusion` decoder.
pub use self::clmm::DcClmmFusionDecoder;
/// Reserved `kb_decoder_clmm_orca_whirlpool` decoder.
pub use self::clmm::DcClmmOrcaWhirlpoolDecoder;
/// Reserved `kb_decoder_clmm_pancake_swap` decoder.
pub use self::clmm::DcClmmPancakeSwapDecoder;
/// Reserved `kb_decoder_clmm_raydium` decoder.
pub use self::clmm::DcClmmRaydiumDecoder;
/// Reserved `kb_decoder_clmm_stabble` decoder.
pub use self::clmm::DcClmmStabbleDecoder;
/// Reserved `kb_decoder_cpmm_raydium` decoder.
pub use self::cpmm::DcCpmmRaydiumDecoder;
/// Reserved `kb_decoder_dlmm_meteora` decoder.
pub use self::dlmm::DcDlmmMeteoraDecoder;
/// Reserved `kb_decoder_fees_bags_fee_share_v1` decoder.
pub use self::fees::DcFeesBagsFeeShareV1Decoder;
/// Reserved `kb_decoder_fees_bags_fee_share_v2` decoder.
pub use self::fees::DcFeesBagsFeeShareV2Decoder;
/// Reserved `kb_decoder_governance_metadao_bid_wall` decoder.
pub use self::governance::DcGovernanceMetadaoBidWallDecoder;
/// Reserved `kb_decoder_launchpad_boop_fun` decoder.
pub use self::launchpad::DcLaunchpadBoopFunDecoder;
/// Reserved `kb_decoder_launchpad_metadao_ico` decoder.
pub use self::launchpad::DcLaunchpadMetadaoIcoDecoder;
/// Reserved `kb_decoder_launchpad_meteora_dbc` decoder.
pub use self::launchpad::DcLaunchpadMeteoraDbcDecoder;
/// Reserved `kb_decoder_launchpad_moonit` decoder.
pub use self::launchpad::DcLaunchpadMoonitDecoder;
/// Reserved `kb_decoder_launchpad_orca_wavebreak` decoder.
pub use self::launchpad::DcLaunchpadOrcaWavebreakDecoder;
/// Reserved `kb_decoder_launchpad_printr` decoder.
pub use self::launchpad::DcLaunchpadPrintrDecoder;
/// Reserved `kb_decoder_launchpad_pump_fun` decoder.
pub use self::launchpad::DcLaunchpadPumpFunDecoder;
/// Reserved `kb_decoder_launchpad_pump_pumpup_ai` decoder.
pub use self::launchpad::DcLaunchpadPumpPumpupAiDecoder;
/// Reserved `kb_decoder_launchpad_raydium_launchlab` decoder.
pub use self::launchpad::DcLaunchpadRaydiumLaunchlabDecoder;
/// Reserved `kb_decoder_lending_clone` decoder.
pub use self::lending::DcLendingCloneDecoder;
/// Reserved `kb_decoder_lending_jupiter_lend_borrow` decoder.
pub use self::lending::DcLendingJupiterLendBorrowDecoder;
/// Reserved `kb_decoder_lending_jupiter_lend_earn` decoder.
pub use self::lending::DcLendingJupiterLendEarnDecoder;
/// Reserved `kb_decoder_lending_jupiter_lend_flash_loan` decoder.
pub use self::lending::DcLendingJupiterLendFlashLoanDecoder;
/// Reserved `kb_decoder_lending_jupiter_lend_liquidity` decoder.
pub use self::lending::DcLendingJupiterLendLiquidityDecoder;
/// Reserved `kb_decoder_lending_kamino` decoder.
pub use self::lending::DcLendingKaminoDecoder;
/// Reserved `kb_decoder_lending_marginfi_v2` decoder.
pub use self::lending::DcLendingMarginfiV2Decoder;
/// Reserved `kb_decoder_lock_raydium_lp` decoder.
pub use self::lock::DcLockRaydiumLpDecoder;
/// Exhaustive published Metaplex account-key inventory.
pub use self::metadata::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
/// Exact decoder for the Metaplex Token Metadata program.
pub use self::metadata::DcMetadataMetaplexTokenMetadataDecoder;
/// Canonical projection shared by Collection and Use Authority records.
pub use self::metadata::DcMetadataMtmAuthorityRecordAccountSnapshot;
/// Stable identity and policy of one canonical account snapshot.
pub use self::metadata::DcMetadataMtmCanonicalAccountIdentity;
/// Lifecycle class of one canonical account layout.
pub use self::metadata::DcMetadataMtmCanonicalAccountLifecycle;
/// Provenance retained for one canonical account observation.
pub use self::metadata::DcMetadataMtmCanonicalAccountProvenance;
/// Execution policy separated from historical materialization.
pub use self::metadata::DcMetadataMtmCanonicalExecutionPolicy;
/// Materialization policy for active or historical state.
pub use self::metadata::DcMetadataMtmCanonicalMaterializationPolicy;
/// Canonical account envelope used by materializers and replay.
pub use self::metadata::DcMetadataMtmCanonicalMetadataAccountSnapshot;
/// Typed canonical Metaplex account state.
pub use self::metadata::DcMetadataMtmCanonicalMetadataAccountState;
/// Origin of one canonical account observation.
pub use self::metadata::DcMetadataMtmCanonicalObservationSource;
/// Canonical projection shared by Metadata and Holder delegate records.
pub use self::metadata::DcMetadataMtmDelegateRecordAccountSnapshot;
/// Supported edition account layout.
pub use self::metadata::DcMetadataMtmEditionAccountKind;
/// Canonical bounded projection of one edition or master-edition account.
pub use self::metadata::DcMetadataMtmEditionAccountSnapshot;
/// Supported Edition Marker account layout.
pub use self::metadata::DcMetadataMtmEditionMarkerAccountKind;
/// Canonical bounded projection of one Edition Marker account.
pub use self::metadata::DcMetadataMtmEditionMarkerAccountSnapshot;
/// Bounded error returned while decoding a Metadata account.
pub use self::metadata::DcMetadataMtmMetadataAccountDecodeError;
/// One entry in the exhaustive published account-key audit.
pub use self::metadata::DcMetadataMtmMetadataAccountLayoutAuditEntry;
/// Canonical bounded projection of one Metadata account.
pub use self::metadata::DcMetadataMtmMetadataAccountSnapshot;
/// One bounded historical reservation entry.
pub use self::metadata::DcMetadataMtmReservationEntrySnapshot;
/// Historical Reservation List account generation.
pub use self::metadata::DcMetadataMtmReservationListAccountKind;
/// Canonical decode-only projection of a historical Reservation List account.
pub use self::metadata::DcMetadataMtmReservationListAccountSnapshot;
/// Canonical projection of one Token Owned Escrow account.
pub use self::metadata::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
/// Authority form used by one Token Owned Escrow account.
pub use self::metadata::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
/// Canonical bounded projection of one programmable Token Record account.
pub use self::metadata::DcMetadataMtmTokenRecordAccountSnapshot;
/// Reserved `kb_decoder_metadata_spl_name_service` decoder.
pub use self::metadata::DcMetadataSplNameServiceDecoder;
/// Decodes one Collection Authority Record account.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
/// Decodes and validates one edition or master-edition account snapshot.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_edition_account;
/// Decodes and validates one Edition Marker account snapshot.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
/// Decodes one Holder Delegate Record account.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
/// Decodes and validates one canonical Metadata account snapshot.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
/// Decodes one Metadata Delegate Record account.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
/// Decodes one historical Reservation List V1 or V2 account.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
/// Decodes one Token Owned Escrow account.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
/// Decodes and validates one programmable Token Record account snapshot.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
/// Decodes one Use Authority Record account.
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;
/// Reserved `kb_decoder_nft_metaplex_bubblegum` decoder.
pub use self::nft::DcNftMetaplexBubblegumDecoder;
/// Reserved `kb_decoder_orderbook_jupiter_limit_order` decoder.
pub use self::orderbook::DcOrderbookJupiterLimitOrderDecoder;
/// Reserved `kb_decoder_orderbook_jupiter_limit_order_v2` decoder.
pub use self::orderbook::DcOrderbookJupiterLimitOrderV2Decoder;
/// Reserved `kb_decoder_orderbook_openbook_v2` decoder.
pub use self::orderbook::DcOrderbookOpenbookV2Decoder;
/// Reserved `kb_decoder_perpetuals_drift_v2` decoder.
pub use self::perpetuals::DcPerpetualsDriftV2Decoder;
/// Reserved `kb_decoder_perpetuals_jupiter` decoder.
pub use self::perpetuals::DcPerpetualsJupiterDecoder;
/// Reserved `kb_decoder_perpetuals_zeta` decoder.
pub use self::perpetuals::DcPerpetualsZetaDecoder;
/// Reserved `kb_decoder_router_dflow_aggregator_v4` decoder.
pub use self::router::DcRouterDflowAggregatorV4Decoder;
/// Reserved `kb_decoder_router_jupiter_aggregator_v4` decoder.
pub use self::router::DcRouterJupiterAggregatorV4Decoder;
/// Reserved `kb_decoder_router_jupiter_aggregator_v6` decoder.
pub use self::router::DcRouterJupiterAggregatorV6Decoder;
/// Reserved `kb_decoder_router_jupiter_dca` decoder.
pub use self::router::DcRouterJupiterDcaDecoder;
/// Reserved `kb_decoder_router_okx_labs_v1` decoder.
pub use self::router::DcRouterOkxLabsV1Decoder;
/// Reserved `kb_decoder_router_okx_labs_v2` decoder.
pub use self::router::DcRouterOkxLabsV2Decoder;
pub use self::rwa::DcRwaOndoGlobalMarketsDecoder;
/// Runtime-native Solana decoder with phased maximal native coverage.
pub use self::solana::DcSolanaCoreDecoder;
/// Exact byte length of one SPL ElGamal registry account.
pub use self::spl::DC_SPL_ELGAMAL_REGISTRY_ACCOUNT_LEN;
/// Reserved `kb_decoder_rwa_ondo_global_markets` decoder.
/// Reserved `kb_decoder_spl_account_compression` decoder.
pub use self::spl::DcSplAccountCompressionDecoder;
/// Exact decoder for the SPL Associated Token Account program.
pub use self::spl::DcSplAssociatedTokenAccountDecoder;
/// Parsed SPL ElGamal public-key registry account.
pub use self::spl::DcSplElGamalRegistryState;
/// Exact decoder for the SPL ElGamal registry program.
pub use self::spl::DcSplElgamalRegistryDecoder;
/// Exact decoder for the three registered SPL Memo generations.
pub use self::spl::DcSplMemoDecoder;
/// Reserved `kb_decoder_spl_noop` decoder.
pub use self::spl::DcSplNoopDecoder;
/// Reserved `kb_decoder_spl_single_pool` decoder.
pub use self::spl::DcSplSinglePoolDecoder;
/// Reserved `kb_decoder_spl_stake_pool` decoder.
pub use self::spl::DcSplStakePoolDecoder;
/// Exact decoder for the Token-2022 program.
pub use self::spl::DcSplToken2022Decoder;
/// Exact decoder for the classic SPL Token program.
pub use self::spl::DcSplTokenDecoder;
/// Parsed Token-2022 Mint, Account, or Multisig state.
pub use self::spl::DcToken2022State;
/// Exact Token-2022 base account state kind.
pub use self::spl::DcToken2022StateKind;
/// One exact Token-2022 TLV entry.
pub use self::spl::DcToken2022TlvEntry;
/// Parses one exact SPL ElGamal registry account.
pub use self::spl::decoder_spl_elgamal_registry_parse_elgamal_registry_state;
/// Parses one Token-2022 Mint, Account, or Multisig state.
pub use self::spl::decoder_spl_token2022_parse_token2022_state;
/// Reserved `kb_decoder_stable_swap_hylo_exchange` decoder.
pub use self::stable::DcStableSwapHyloExchangeDecoder;
/// Reserved `kb_decoder_stable_swap_jupiter_stable` decoder.
pub use self::stable::DcStableSwapJupiterStableDecoder;
/// Reserved `kb_decoder_stable_swap_numeraire` decoder.
pub use self::stable::DcStableSwapNumeraireDecoder;
/// Reserved `kb_decoder_stable_swap_stabble` decoder.
pub use self::stable::DcStableSwapStabbleDecoder;
/// Reserved `kb_decoder_staking_kamino_farm` decoder.
pub use self::staking::DcStakingKaminoFarmDecoder;
/// Reserved `kb_decoder_staking_marinade_finance` decoder.
pub use self::staking::DcStakingMarinadeFinanceDecoder;
/// Reserved `kb_decoder_staking_solayer` decoder.
pub use self::staking::DcStakingSolayerDecoder;
/// Reserved `kb_decoder_treasury_helium_treasury_management` decoder.
pub use self::treasury::DcTreasuryHeliumTreasuryManagementDecoder;
/// Reserved `kb_decoder_vault_carrot_defi` decoder.
pub use self::vault::DcVaultCarrotDefiDecoder;
/// Reserved `kb_decoder_vault_hylo_stability_pool` decoder.
pub use self::vault::DcVaultHyloStabilityPoolDecoder;
/// Reserved `kb_decoder_vault_kamino` decoder.
pub use self::vault::DcVaultKaminoDecoder;
/// Reserved `kb_decoder_vault_kamino_v2` decoder.
pub use self::vault::DcVaultKaminoV2Decoder;
/// Reserved `kb_decoder_vault_kamino_yvaults` decoder.
pub use self::vault::DcVaultKaminoYvaultsDecoder;
/// Reserved `kb_decoder_vault_meteora` decoder.
pub use self::vault::DcVaultMeteoraDecoder;
/// Reserved `kb_decoder_vesting_streamflow` decoder.
pub use self::vesting::DcVestingStreamflowDecoder;
/// Reserved `kb_decoder_wallet_jupiter_apepro_smart_wallet` decoder.
pub use self::wallet::DcWalletJupiterApeproSmartWalletDecoder;
/// Reserved `kb_decoder_weighted_swap_stabble` decoder.
pub use self::weighted::DcWeightedSwapStabbleDecoder;
/// Approve Collection Authority discriminator. /// Approve Collection Authority discriminator.
pub(crate) use self::metadata::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR; pub(crate) use self::metadata::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
@@ -393,139 +694,139 @@ pub(crate) use self::spl::decoder_spl_token2022_entry_for_tag;
/// Returns the first byte of one retained Token-2022 payload. /// Returns the first byte of one retained Token-2022 payload.
pub(crate) use self::spl::decoder_spl_token2022_payload_tag; pub(crate) use self::spl::decoder_spl_token2022_payload_tag;
/// Current contextual core instruction input contract version. #[cfg(test)]
pub use self::api::DC_API_CORE_INSTRUCTION_INPUT_CONTRACT_VERSION; mod reserved_decoder_tests {
/// Stable contextual decoded observation. #[test]
pub use self::api::DcApiDecodedObservation; fn every_reserved_decoder_exposes_only_registered_program_ids() {
/// Machine-readable decoder coverage declaration. let decoders: [&dyn crate::DcApiProtocolDecoder; 98] = [
pub use self::api::DcApiDecoderCoverageDeclaration; &crate::DcAdapterSaberDecimalWrapperDecoder,
/// Declared decoder coverage entry kind. &crate::DcAdminJupiterLockDecoder,
pub use self::api::DcApiDecoderCoverageEntryKind; &crate::DcAdminPumpFeesDecoder,
/// Structured decoder diagnostic. &crate::DcAmmAldrinV1Decoder,
pub use self::api::DcApiDecoderDiagnostic; &crate::DcAmmAldrinV2Decoder,
/// Complete decoder execution result. &crate::DcAmmAlphaqDecoder,
pub use self::api::DcApiDecoderExecutionResult; &crate::DcAmmBelieveDecoder,
/// Stable decoder identity. &crate::DcAmmBonkSwapDecoder,
pub use self::api::DcApiDecoderIdentity; &crate::DcAmmFluxbeamDecoder,
/// Decoder terminal result status. &crate::DcAmmGoonFiDecoder,
pub use self::api::DcApiDecoderOutcomeStatus; &crate::DcAmmGoosefxGammaDecoder,
/// Explicit decoding proof. &crate::DcAmmGoosefxV2Decoder,
pub use self::api::DcApiDecoderProof; &crate::DcAmmGuacSwapDecoder,
/// Decoding proof category. &crate::DcAmmLifinitySwapV2Decoder,
pub use self::api::DcApiDecoderProofKind; &crate::DcAmmMetadaoFutarchyAmmDecoder,
/// Deterministic decoder recognition result. &crate::DcAmmMetadaoV05Decoder,
pub use self::api::DcApiDecoderRecognition; &crate::DcAmmMeteoraDammV1Decoder,
/// Exposes the decoder support level. &crate::DcAmmMeteoraDammV2Decoder,
pub use self::api::DcApiDecoderSupport; &crate::DcAmmObricV2Decoder,
/// One statically declared decoder surface. &crate::DcAmmOneDexDecoder,
pub use self::api::DcApiDecoderSurface; &crate::DcAmmPumpSwapDecoder,
/// Initial decoder implementation placeholder for API-level tests. &crate::DcAmmRaydiumLpV4Decoder,
pub use self::api::DcApiInitialDecoder; &crate::DcAmmSolfiDecoder,
/// Contextual instruction decoder contract. &crate::DcAmmSolfiV2Decoder,
pub use self::api::DcApiInstructionDecoder; &crate::DcAmmVertigoDecoder,
/// Exposes the common protocol decoder trait. &crate::DcAmmVirtualsDecoder,
pub use self::api::DcApiProtocolDecoder; &crate::DcAmmWoofiDecoder,
/// Computes the deterministic contextual input hash. &crate::DcAmmZeroFiDecoder,
pub use self::api::decoder_api_decoder_api_contextual_input_hash; &crate::DcAmmZoraDecoder,
/// Returns true when a decoder declares the exact program id. &crate::DcAnchorDecoder,
pub use self::api::decoder_api_decoder_handles_program_id; &crate::DcBridgeCircleCctpTokenMessengerMinterDecoder,
/// Computes a deterministic lowercase SHA-256 hash for one JSON value. &crate::DcBridgeCircleCctpTokenMessengerMinterV2Decoder,
pub use self::api::decoder_api_deterministic_json_hash; &crate::DcBridgeLayerZeroEndpointDecoder,
/// Extracts the first eight payload bytes as hexadecimal when available. &crate::DcBridgeLayerZeroExecutorDecoder,
pub use self::api::decoder_api_discriminator_8_hex; &crate::DcClmmByrealDecoder,
/// Exhaustive published Metaplex account-key inventory. &crate::DcClmmFusionDecoder,
pub use self::metadata::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT; &crate::DcClmmOrcaWhirlpoolDecoder,
/// Exact decoder for the Metaplex Token Metadata program. &crate::DcClmmPancakeSwapDecoder,
pub use self::metadata::DcMetadataMetaplexTokenMetadataDecoder; &crate::DcClmmRaydiumDecoder,
/// Canonical projection shared by Collection and Use Authority records. &crate::DcClmmStabbleDecoder,
pub use self::metadata::DcMetadataMtmAuthorityRecordAccountSnapshot; &crate::DcCpmmRaydiumDecoder,
/// Stable identity and policy of one canonical account snapshot. &crate::DcDlmmMeteoraDecoder,
pub use self::metadata::DcMetadataMtmCanonicalAccountIdentity; &crate::DcFeesBagsFeeShareV1Decoder,
/// Lifecycle class of one canonical account layout. &crate::DcFeesBagsFeeShareV2Decoder,
pub use self::metadata::DcMetadataMtmCanonicalAccountLifecycle; &crate::DcGovernanceMetadaoBidWallDecoder,
/// Provenance retained for one canonical account observation. &crate::DcLaunchpadBoopFunDecoder,
pub use self::metadata::DcMetadataMtmCanonicalAccountProvenance; &crate::DcLaunchpadMetadaoIcoDecoder,
/// Execution policy separated from historical materialization. &crate::DcLaunchpadMeteoraDbcDecoder,
pub use self::metadata::DcMetadataMtmCanonicalExecutionPolicy; &crate::DcLaunchpadMoonitDecoder,
/// Materialization policy for active or historical state. &crate::DcLaunchpadOrcaWavebreakDecoder,
pub use self::metadata::DcMetadataMtmCanonicalMaterializationPolicy; &crate::DcLaunchpadPrintrDecoder,
/// Canonical account envelope used by materializers and replay. &crate::DcLaunchpadPumpFunDecoder,
pub use self::metadata::DcMetadataMtmCanonicalMetadataAccountSnapshot; &crate::DcLaunchpadPumpPumpupAiDecoder,
/// Typed canonical Metaplex account state. &crate::DcLaunchpadRaydiumLaunchlabDecoder,
pub use self::metadata::DcMetadataMtmCanonicalMetadataAccountState; &crate::DcLendingCloneDecoder,
/// Origin of one canonical account observation. &crate::DcLendingJupiterLendBorrowDecoder,
pub use self::metadata::DcMetadataMtmCanonicalObservationSource; &crate::DcLendingJupiterLendEarnDecoder,
/// Canonical projection shared by Metadata and Holder delegate records. &crate::DcLendingJupiterLendFlashLoanDecoder,
pub use self::metadata::DcMetadataMtmDelegateRecordAccountSnapshot; &crate::DcLendingJupiterLendLiquidityDecoder,
/// Supported edition account layout. &crate::DcLendingKaminoDecoder,
pub use self::metadata::DcMetadataMtmEditionAccountKind; &crate::DcLendingMarginfiV2Decoder,
/// Canonical bounded projection of one edition or master-edition account. &crate::DcLockRaydiumLpDecoder,
pub use self::metadata::DcMetadataMtmEditionAccountSnapshot; &crate::DcMetadataSplNameServiceDecoder,
/// Supported Edition Marker account layout. &crate::DcNftMetaplexBubblegumDecoder,
pub use self::metadata::DcMetadataMtmEditionMarkerAccountKind; &crate::DcOrderbookJupiterLimitOrderDecoder,
/// Canonical bounded projection of one Edition Marker account. &crate::DcOrderbookJupiterLimitOrderV2Decoder,
pub use self::metadata::DcMetadataMtmEditionMarkerAccountSnapshot; &crate::DcOrderbookOpenbookV2Decoder,
/// Bounded error returned while decoding a Metadata account. &crate::DcPerpetualsDriftV2Decoder,
pub use self::metadata::DcMetadataMtmMetadataAccountDecodeError; &crate::DcPerpetualsJupiterDecoder,
/// One entry in the exhaustive published account-key audit. &crate::DcPerpetualsZetaDecoder,
pub use self::metadata::DcMetadataMtmMetadataAccountLayoutAuditEntry; &crate::DcRouterDflowAggregatorV4Decoder,
/// Canonical bounded projection of one Metadata account. &crate::DcRouterJupiterAggregatorV4Decoder,
pub use self::metadata::DcMetadataMtmMetadataAccountSnapshot; &crate::DcRouterJupiterAggregatorV6Decoder,
/// One bounded historical reservation entry. &crate::DcRouterJupiterDcaDecoder,
pub use self::metadata::DcMetadataMtmReservationEntrySnapshot; &crate::DcRouterOkxLabsV1Decoder,
/// Historical Reservation List account generation. &crate::DcRouterOkxLabsV2Decoder,
pub use self::metadata::DcMetadataMtmReservationListAccountKind; &crate::DcRwaOndoGlobalMarketsDecoder,
/// Canonical decode-only projection of a historical Reservation List account. &crate::DcSplAccountCompressionDecoder,
pub use self::metadata::DcMetadataMtmReservationListAccountSnapshot; &crate::DcSplNoopDecoder,
/// Canonical projection of one Token Owned Escrow account. &crate::DcSplSinglePoolDecoder,
pub use self::metadata::DcMetadataMtmTokenOwnedEscrowAccountSnapshot; &crate::DcSplStakePoolDecoder,
/// Authority form used by one Token Owned Escrow account. &crate::DcStableSwapHyloExchangeDecoder,
pub use self::metadata::DcMetadataMtmTokenOwnedEscrowAuthorityKind; &crate::DcStableSwapJupiterStableDecoder,
/// Canonical bounded projection of one programmable Token Record account. &crate::DcStableSwapNumeraireDecoder,
pub use self::metadata::DcMetadataMtmTokenRecordAccountSnapshot; &crate::DcStableSwapStabbleDecoder,
/// Decodes one Collection Authority Record account. &crate::DcStakingKaminoFarmDecoder,
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account; &crate::DcStakingMarinadeFinanceDecoder,
/// Decodes and validates one edition or master-edition account snapshot. &crate::DcStakingSolayerDecoder,
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_edition_account; &crate::DcTreasuryHeliumTreasuryManagementDecoder,
/// Decodes and validates one Edition Marker account snapshot. &crate::DcVaultCarrotDefiDecoder,
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account; &crate::DcVaultHyloStabilityPoolDecoder,
/// Decodes one Holder Delegate Record account. &crate::DcVaultKaminoDecoder,
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account; &crate::DcVaultKaminoV2Decoder,
/// Decodes and validates one canonical Metadata account snapshot. &crate::DcVaultKaminoYvaultsDecoder,
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_account; &crate::DcVaultMeteoraDecoder,
/// Decodes one Metadata Delegate Record account. &crate::DcVestingStreamflowDecoder,
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account; &crate::DcWalletJupiterApeproSmartWalletDecoder,
/// Decodes one historical Reservation List V1 or V2 account. &crate::DcWeightedSwapStabbleDecoder,
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account; ];
/// Decodes one Token Owned Escrow account. let mut names = std::collections::BTreeSet::new();
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account; for decoder in decoders {
/// Decodes and validates one programmable Token Record account snapshot. assert!(names.insert(decoder.decoder_name()));
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_token_record_account; if decoder.decoder_name() == "kb_decoder_anchor" {
/// Decodes one Use Authority Record account. assert!(decoder.program_ids().is_empty());
pub use self::metadata::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account; continue;
/// Runtime-native Solana decoder with phased maximal native coverage. }
pub use self::solana::DcSolanaCoreDecoder; assert_eq!(decoder.program_ids().len(), 1);
/// Exact byte length of one SPL ElGamal registry account. for program_id in decoder.program_ids() {
pub use self::spl::DC_SPL_ELGAMAL_REGISTRY_ACCOUNT_LEN; assert!(kb_program_ids::find_registered_program_id(program_id).is_some());
/// Exact decoder for the SPL Associated Token Account program. let observation = crate::MdProgramObservation {
pub use self::spl::DcSplAssociatedTokenAccountDecoder; signature: crate::MdSignature("signature".to_string()),
/// Parsed SPL ElGamal public-key registry account. slot: crate::MdSlot(1),
pub use self::spl::DcSplElGamalRegistryState; instruction_path: crate::MdInstructionPath("0".to_string()),
/// Exact decoder for the SPL ElGamal registry program. program_id: crate::MdProgramId((*program_id).to_string()),
pub use self::spl::DcSplElgamalRegistryDecoder; discriminator_8: std::option::Option::None,
/// Exact decoder for the three registered SPL Memo generations. data_len: 0,
pub use self::spl::DcSplMemoDecoder; accounts_len: 0,
/// Exact decoder for the Token-2022 program. failed: false,
pub use self::spl::DcSplToken2022Decoder; };
/// Exact decoder for the classic SPL Token program. assert_eq!(
pub use self::spl::DcSplTokenDecoder; decoder.supports_observation(&observation),
/// Parsed Token-2022 Mint, Account, or Multisig state. crate::DcApiDecoderSupport::Maybe
pub use self::spl::DcToken2022State; );
/// Exact Token-2022 base account state kind. let decode_result = decoder.decode_observation(&observation);
pub use self::spl::DcToken2022StateKind; assert!(decode_result.is_ok());
/// One exact Token-2022 TLV entry. assert!(decode_result.is_ok_and(|events| return events.is_empty()));
pub use self::spl::DcToken2022TlvEntry; }
/// Parses one exact SPL ElGamal registry account. }
pub use self::spl::decoder_spl_elgamal_registry_parse_elgamal_registry_state; assert_eq!(names.len(), 98);
/// Parses one Token-2022 Mint, Account, or Multisig state. }
pub use self::spl::decoder_spl_token2022_parse_token2022_state; }

View File

@@ -1,12 +1,9 @@
// file: kb-lib/src/decoder/adapter.rs // file: kb-lib/src/decoder/adapter.rs
// version: 2 // version: 3
//! `adapter` decoder family. //! `adapter` decoder family.
mod saber_decimal_wrapper; mod saber_decimal_wrapper;
/// Pending `adapter` decoder migration boundaries. /// Reserved `kb_decoder_adapter_saber_decimal_wrapper` decoder.
pub(crate) const DC_ADAPTER_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::saber_decimal_wrapper::DcAdapterSaberDecimalWrapperDecoder;
self::saber_decimal_wrapper::DC_ADAPTER_SABER_DECIMAL_WRAPPER_LEGACY_CRATE,
self::saber_decimal_wrapper::DC_ADAPTER_SABER_DECIMAL_WRAPPER_MIGRATION_STATUS,
)];

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/adapter/saber_decimal_wrapper.rs // file: kb-lib/src/decoder/adapter/saber_decimal_wrapper.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_adapter_saber_decimal_wrapper`. //! Reserved protocol decoder for `adapter_saber_decimal_wrapper`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `adapter_saber_decimal_wrapper` program surface.
pub(crate) const DC_ADAPTER_SABER_DECIMAL_WRAPPER_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_adapter_saber_decimal_wrapper"; pub struct DcAdapterSaberDecimalWrapperDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAdapterSaberDecimalWrapperDecoder {
pub(crate) const DC_ADAPTER_SABER_DECIMAL_WRAPPER_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_adapter_saber_decimal_wrapper";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::ADAPTER_SABER_DECIMAL_WRAPPER_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,19 +1,12 @@
// file: kb-lib/src/decoder/admin.rs // file: kb-lib/src/decoder/admin.rs
// version: 2 // version: 3
//! `admin` decoder family. //! `admin` decoder family.
mod jupiter_lock; mod jupiter_lock;
mod pump_fees; mod pump_fees;
/// Pending `admin` decoder migration boundaries. /// Reserved `kb_decoder_admin_jupiter_lock` decoder.
pub(crate) const DC_ADMIN_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::jupiter_lock::DcAdminJupiterLockDecoder;
( /// Reserved `kb_decoder_admin_pump_fees` decoder.
self::jupiter_lock::DC_ADMIN_JUPITER_LOCK_LEGACY_CRATE, pub use self::pump_fees::DcAdminPumpFeesDecoder;
self::jupiter_lock::DC_ADMIN_JUPITER_LOCK_MIGRATION_STATUS,
),
(
self::pump_fees::DC_ADMIN_PUMP_FEES_LEGACY_CRATE,
self::pump_fees::DC_ADMIN_PUMP_FEES_MIGRATION_STATUS,
),
];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/admin/jupiter_lock.rs // file: kb-lib/src/decoder/admin/jupiter_lock.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_admin_jupiter_lock`. //! Reserved protocol decoder for `admin_jupiter_lock`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `admin_jupiter_lock` program surface.
pub(crate) const DC_ADMIN_JUPITER_LOCK_LEGACY_CRATE: &str = "kb_decoder_admin_jupiter_lock"; #[derive(Clone, Debug, Default)]
pub struct DcAdminJupiterLockDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAdminJupiterLockDecoder {
pub(crate) const DC_ADMIN_JUPITER_LOCK_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_admin_jupiter_lock";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::ADMIN_JUPITER_LOCK_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/admin/pump_fees.rs // file: kb-lib/src/decoder/admin/pump_fees.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_admin_pump_fees`. //! Reserved protocol decoder for `admin_pump_fees`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `admin_pump_fees` program surface.
pub(crate) const DC_ADMIN_PUMP_FEES_LEGACY_CRATE: &str = "kb_decoder_admin_pump_fees"; #[derive(Clone, Debug, Default)]
pub struct DcAdminPumpFeesDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAdminPumpFeesDecoder {
pub(crate) const DC_ADMIN_PUMP_FEES_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_admin_pump_fees";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::ADMIN_PUMP_FEES_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/amm.rs // file: kb-lib/src/decoder/amm.rs
// version: 2 // version: 3
//! `amm` decoder family. //! `amm` decoder family.
@@ -30,107 +30,55 @@ mod woofi;
mod zero_fi; mod zero_fi;
mod zora; mod zora;
/// Pending `amm` decoder migration boundaries. /// Reserved `kb_decoder_amm_aldrin_v1` decoder.
pub(crate) const DC_AMM_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::aldrin_v1::DcAmmAldrinV1Decoder;
( /// Reserved `kb_decoder_amm_aldrin_v2` decoder.
self::aldrin_v1::DC_AMM_ALDRIN_V1_LEGACY_CRATE, pub use self::aldrin_v2::DcAmmAldrinV2Decoder;
self::aldrin_v1::DC_AMM_ALDRIN_V1_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_alphaq` decoder.
), pub use self::alphaq::DcAmmAlphaqDecoder;
( /// Reserved `kb_decoder_amm_believe` decoder.
self::aldrin_v2::DC_AMM_ALDRIN_V2_LEGACY_CRATE, pub use self::believe::DcAmmBelieveDecoder;
self::aldrin_v2::DC_AMM_ALDRIN_V2_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_bonk_swap` decoder.
), pub use self::bonk_swap::DcAmmBonkSwapDecoder;
( /// Reserved `kb_decoder_amm_fluxbeam` decoder.
self::alphaq::DC_AMM_ALPHAQ_LEGACY_CRATE, pub use self::fluxbeam::DcAmmFluxbeamDecoder;
self::alphaq::DC_AMM_ALPHAQ_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_goon_fi` decoder.
), pub use self::goon_fi::DcAmmGoonFiDecoder;
( /// Reserved `kb_decoder_amm_goosefx_gamma` decoder.
self::believe::DC_AMM_BELIEVE_LEGACY_CRATE, pub use self::goosefx_gamma::DcAmmGoosefxGammaDecoder;
self::believe::DC_AMM_BELIEVE_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_goosefx_v2` decoder.
), pub use self::goosefx_v2::DcAmmGoosefxV2Decoder;
( /// Reserved `kb_decoder_amm_guac_swap` decoder.
self::bonk_swap::DC_AMM_BONK_SWAP_LEGACY_CRATE, pub use self::guac_swap::DcAmmGuacSwapDecoder;
self::bonk_swap::DC_AMM_BONK_SWAP_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_lifinity_swap_v2` decoder.
), pub use self::lifinity_swap_v2::DcAmmLifinitySwapV2Decoder;
( /// Reserved `kb_decoder_amm_metadao_futarchy_amm` decoder.
self::fluxbeam::DC_AMM_FLUXBEAM_LEGACY_CRATE, pub use self::metadao_futarchy_amm::DcAmmMetadaoFutarchyAmmDecoder;
self::fluxbeam::DC_AMM_FLUXBEAM_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_metadao_v0_5` decoder.
), pub use self::metadao_v0_5::DcAmmMetadaoV05Decoder;
( /// Reserved `kb_decoder_amm_meteora_damm_v1` decoder.
self::goon_fi::DC_AMM_GOON_FI_LEGACY_CRATE, pub use self::meteora_damm_v1::DcAmmMeteoraDammV1Decoder;
self::goon_fi::DC_AMM_GOON_FI_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_meteora_damm_v2` decoder.
), pub use self::meteora_damm_v2::DcAmmMeteoraDammV2Decoder;
( /// Reserved `kb_decoder_amm_obric_v2` decoder.
self::goosefx_gamma::DC_AMM_GOOSEFX_GAMMA_LEGACY_CRATE, pub use self::obric_v2::DcAmmObricV2Decoder;
self::goosefx_gamma::DC_AMM_GOOSEFX_GAMMA_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_one_dex` decoder.
), pub use self::one_dex::DcAmmOneDexDecoder;
( /// Reserved `kb_decoder_amm_pump_swap` decoder.
self::goosefx_v2::DC_AMM_GOOSEFX_V2_LEGACY_CRATE, pub use self::pump_swap::DcAmmPumpSwapDecoder;
self::goosefx_v2::DC_AMM_GOOSEFX_V2_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_raydium_lp_v4` decoder.
), pub use self::raydium_lp_v4::DcAmmRaydiumLpV4Decoder;
( /// Reserved `kb_decoder_amm_solfi` decoder.
self::guac_swap::DC_AMM_GUAC_SWAP_LEGACY_CRATE, pub use self::solfi::DcAmmSolfiDecoder;
self::guac_swap::DC_AMM_GUAC_SWAP_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_solfi_v2` decoder.
), pub use self::solfi_v2::DcAmmSolfiV2Decoder;
( /// Reserved `kb_decoder_amm_vertigo` decoder.
self::lifinity_swap_v2::DC_AMM_LIFINITY_SWAP_V2_LEGACY_CRATE, pub use self::vertigo::DcAmmVertigoDecoder;
self::lifinity_swap_v2::DC_AMM_LIFINITY_SWAP_V2_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_virtuals` decoder.
), pub use self::virtuals::DcAmmVirtualsDecoder;
( /// Reserved `kb_decoder_amm_woofi` decoder.
self::metadao_futarchy_amm::DC_AMM_METADAO_FUTARCHY_AMM_LEGACY_CRATE, pub use self::woofi::DcAmmWoofiDecoder;
self::metadao_futarchy_amm::DC_AMM_METADAO_FUTARCHY_AMM_MIGRATION_STATUS, /// Reserved `kb_decoder_amm_zero_fi` decoder.
), pub use self::zero_fi::DcAmmZeroFiDecoder;
( /// Reserved `kb_decoder_amm_zora` decoder.
self::metadao_v0_5::DC_AMM_METADAO_V0_5_LEGACY_CRATE, pub use self::zora::DcAmmZoraDecoder;
self::metadao_v0_5::DC_AMM_METADAO_V0_5_MIGRATION_STATUS,
),
(
self::meteora_damm_v1::DC_AMM_METEORA_DAMM_V1_LEGACY_CRATE,
self::meteora_damm_v1::DC_AMM_METEORA_DAMM_V1_MIGRATION_STATUS,
),
(
self::meteora_damm_v2::DC_AMM_METEORA_DAMM_V2_LEGACY_CRATE,
self::meteora_damm_v2::DC_AMM_METEORA_DAMM_V2_MIGRATION_STATUS,
),
(
self::obric_v2::DC_AMM_OBRIC_V2_LEGACY_CRATE,
self::obric_v2::DC_AMM_OBRIC_V2_MIGRATION_STATUS,
),
(
self::one_dex::DC_AMM_ONE_DEX_LEGACY_CRATE,
self::one_dex::DC_AMM_ONE_DEX_MIGRATION_STATUS,
),
(
self::pump_swap::DC_AMM_PUMP_SWAP_LEGACY_CRATE,
self::pump_swap::DC_AMM_PUMP_SWAP_MIGRATION_STATUS,
),
(
self::raydium_lp_v4::DC_AMM_RAYDIUM_LP_V4_LEGACY_CRATE,
self::raydium_lp_v4::DC_AMM_RAYDIUM_LP_V4_MIGRATION_STATUS,
),
(
self::solfi::DC_AMM_SOLFI_LEGACY_CRATE,
self::solfi::DC_AMM_SOLFI_MIGRATION_STATUS,
),
(
self::solfi_v2::DC_AMM_SOLFI_V2_LEGACY_CRATE,
self::solfi_v2::DC_AMM_SOLFI_V2_MIGRATION_STATUS,
),
(
self::vertigo::DC_AMM_VERTIGO_LEGACY_CRATE,
self::vertigo::DC_AMM_VERTIGO_MIGRATION_STATUS,
),
(
self::virtuals::DC_AMM_VIRTUALS_LEGACY_CRATE,
self::virtuals::DC_AMM_VIRTUALS_MIGRATION_STATUS,
),
(
self::woofi::DC_AMM_WOOFI_LEGACY_CRATE,
self::woofi::DC_AMM_WOOFI_MIGRATION_STATUS,
),
(
self::zero_fi::DC_AMM_ZERO_FI_LEGACY_CRATE,
self::zero_fi::DC_AMM_ZERO_FI_MIGRATION_STATUS,
),
(self::zora::DC_AMM_ZORA_LEGACY_CRATE, self::zora::DC_AMM_ZORA_MIGRATION_STATUS),
];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/aldrin_v1.rs // file: kb-lib/src/decoder/amm/aldrin_v1.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_aldrin_v1`. //! Reserved protocol decoder for `amm_aldrin_v1`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_aldrin_v1` program surface.
pub(crate) const DC_AMM_ALDRIN_V1_LEGACY_CRATE: &str = "kb_decoder_amm_aldrin_v1"; #[derive(Clone, Debug, Default)]
pub struct DcAmmAldrinV1Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmAldrinV1Decoder {
pub(crate) const DC_AMM_ALDRIN_V1_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_aldrin_v1";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_ALDRIN_V1_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/aldrin_v2.rs // file: kb-lib/src/decoder/amm/aldrin_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_aldrin_v2`. //! Reserved protocol decoder for `amm_aldrin_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_aldrin_v2` program surface.
pub(crate) const DC_AMM_ALDRIN_V2_LEGACY_CRATE: &str = "kb_decoder_amm_aldrin_v2"; #[derive(Clone, Debug, Default)]
pub struct DcAmmAldrinV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmAldrinV2Decoder {
pub(crate) const DC_AMM_ALDRIN_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_aldrin_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_ALDRIN_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/alphaq.rs // file: kb-lib/src/decoder/amm/alphaq.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_alphaq`. //! Reserved protocol decoder for `amm_alphaq`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_alphaq` program surface.
pub(crate) const DC_AMM_ALPHAQ_LEGACY_CRATE: &str = "kb_decoder_amm_alphaq"; #[derive(Clone, Debug, Default)]
pub struct DcAmmAlphaqDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmAlphaqDecoder {
pub(crate) const DC_AMM_ALPHAQ_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_alphaq";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_ALPHAQ_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/believe.rs // file: kb-lib/src/decoder/amm/believe.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_believe`. //! Reserved protocol decoder for `amm_believe`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_believe` program surface.
pub(crate) const DC_AMM_BELIEVE_LEGACY_CRATE: &str = "kb_decoder_amm_believe"; #[derive(Clone, Debug, Default)]
pub struct DcAmmBelieveDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmBelieveDecoder {
pub(crate) const DC_AMM_BELIEVE_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_believe";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_BELIEVE_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/bonk_swap.rs // file: kb-lib/src/decoder/amm/bonk_swap.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_bonk_swap`. //! Reserved protocol decoder for `amm_bonk_swap`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_bonk_swap` program surface.
pub(crate) const DC_AMM_BONK_SWAP_LEGACY_CRATE: &str = "kb_decoder_amm_bonk_swap"; #[derive(Clone, Debug, Default)]
pub struct DcAmmBonkSwapDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmBonkSwapDecoder {
pub(crate) const DC_AMM_BONK_SWAP_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_bonk_swap";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_BONK_SWAP_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/fluxbeam.rs // file: kb-lib/src/decoder/amm/fluxbeam.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_fluxbeam`. //! Reserved protocol decoder for `amm_fluxbeam`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_fluxbeam` program surface.
pub(crate) const DC_AMM_FLUXBEAM_LEGACY_CRATE: &str = "kb_decoder_amm_fluxbeam"; #[derive(Clone, Debug, Default)]
pub struct DcAmmFluxbeamDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmFluxbeamDecoder {
pub(crate) const DC_AMM_FLUXBEAM_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_fluxbeam";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_FLUXBEAM_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/goon_fi.rs // file: kb-lib/src/decoder/amm/goon_fi.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_goon_fi`. //! Reserved protocol decoder for `amm_goon_fi`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_goon_fi` program surface.
pub(crate) const DC_AMM_GOON_FI_LEGACY_CRATE: &str = "kb_decoder_amm_goon_fi"; #[derive(Clone, Debug, Default)]
pub struct DcAmmGoonFiDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmGoonFiDecoder {
pub(crate) const DC_AMM_GOON_FI_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_goon_fi";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_GOON_FI_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/goosefx_gamma.rs // file: kb-lib/src/decoder/amm/goosefx_gamma.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_goosefx_gamma`. //! Reserved protocol decoder for `amm_goosefx_gamma`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_goosefx_gamma` program surface.
pub(crate) const DC_AMM_GOOSEFX_GAMMA_LEGACY_CRATE: &str = "kb_decoder_amm_goosefx_gamma"; #[derive(Clone, Debug, Default)]
pub struct DcAmmGoosefxGammaDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmGoosefxGammaDecoder {
pub(crate) const DC_AMM_GOOSEFX_GAMMA_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_goosefx_gamma";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_GOOSEFX_GAMMA_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/goosefx_v2.rs // file: kb-lib/src/decoder/amm/goosefx_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_goosefx_v2`. //! Reserved protocol decoder for `amm_goosefx_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_goosefx_v2` program surface.
pub(crate) const DC_AMM_GOOSEFX_V2_LEGACY_CRATE: &str = "kb_decoder_amm_goosefx_v2"; #[derive(Clone, Debug, Default)]
pub struct DcAmmGoosefxV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmGoosefxV2Decoder {
pub(crate) const DC_AMM_GOOSEFX_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_goosefx_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_GOOSEFX_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/guac_swap.rs // file: kb-lib/src/decoder/amm/guac_swap.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_guac_swap`. //! Reserved protocol decoder for `amm_guac_swap`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_guac_swap` program surface.
pub(crate) const DC_AMM_GUAC_SWAP_LEGACY_CRATE: &str = "kb_decoder_amm_guac_swap"; #[derive(Clone, Debug, Default)]
pub struct DcAmmGuacSwapDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmGuacSwapDecoder {
pub(crate) const DC_AMM_GUAC_SWAP_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_guac_swap";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_GUAC_SWAP_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/lifinity_swap_v2.rs // file: kb-lib/src/decoder/amm/lifinity_swap_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_lifinity_swap_v2`. //! Reserved protocol decoder for `amm_lifinity_swap_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_lifinity_swap_v2` program surface.
pub(crate) const DC_AMM_LIFINITY_SWAP_V2_LEGACY_CRATE: &str = "kb_decoder_amm_lifinity_swap_v2"; #[derive(Clone, Debug, Default)]
pub struct DcAmmLifinitySwapV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmLifinitySwapV2Decoder {
pub(crate) const DC_AMM_LIFINITY_SWAP_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_lifinity_swap_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_LIFINITY_SWAP_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/amm/metadao_futarchy_amm.rs // file: kb-lib/src/decoder/amm/metadao_futarchy_amm.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_metadao_futarchy_amm`. //! Reserved protocol decoder for `amm_metadao_futarchy_amm`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_metadao_futarchy_amm` program surface.
pub(crate) const DC_AMM_METADAO_FUTARCHY_AMM_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_amm_metadao_futarchy_amm"; pub struct DcAmmMetadaoFutarchyAmmDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmMetadaoFutarchyAmmDecoder {
pub(crate) const DC_AMM_METADAO_FUTARCHY_AMM_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_amm_metadao_futarchy_amm";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_METADAO_FUTARCHY_AMM_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/metadao_v0_5.rs // file: kb-lib/src/decoder/amm/metadao_v0_5.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_metadao_v0_5`. //! Reserved protocol decoder for `amm_metadao_v0_5`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_metadao_v0_5` program surface.
pub(crate) const DC_AMM_METADAO_V0_5_LEGACY_CRATE: &str = "kb_decoder_amm_metadao_v0_5"; #[derive(Clone, Debug, Default)]
pub struct DcAmmMetadaoV05Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmMetadaoV05Decoder {
pub(crate) const DC_AMM_METADAO_V0_5_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_metadao_v0_5";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_METADAO_V0_5_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/meteora_damm_v1.rs // file: kb-lib/src/decoder/amm/meteora_damm_v1.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_meteora_damm_v1`. //! Reserved protocol decoder for `amm_meteora_damm_v1`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_meteora_damm_v1` program surface.
pub(crate) const DC_AMM_METEORA_DAMM_V1_LEGACY_CRATE: &str = "kb_decoder_amm_meteora_damm_v1"; #[derive(Clone, Debug, Default)]
pub struct DcAmmMeteoraDammV1Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmMeteoraDammV1Decoder {
pub(crate) const DC_AMM_METEORA_DAMM_V1_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_meteora_damm_v1";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_METEORA_DAMM_V1_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/meteora_damm_v2.rs // file: kb-lib/src/decoder/amm/meteora_damm_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_meteora_damm_v2`. //! Reserved protocol decoder for `amm_meteora_damm_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_meteora_damm_v2` program surface.
pub(crate) const DC_AMM_METEORA_DAMM_V2_LEGACY_CRATE: &str = "kb_decoder_amm_meteora_damm_v2"; #[derive(Clone, Debug, Default)]
pub struct DcAmmMeteoraDammV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmMeteoraDammV2Decoder {
pub(crate) const DC_AMM_METEORA_DAMM_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_meteora_damm_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_METEORA_DAMM_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/obric_v2.rs // file: kb-lib/src/decoder/amm/obric_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_obric_v2`. //! Reserved protocol decoder for `amm_obric_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_obric_v2` program surface.
pub(crate) const DC_AMM_OBRIC_V2_LEGACY_CRATE: &str = "kb_decoder_amm_obric_v2"; #[derive(Clone, Debug, Default)]
pub struct DcAmmObricV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmObricV2Decoder {
pub(crate) const DC_AMM_OBRIC_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_obric_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_OBRIC_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/one_dex.rs // file: kb-lib/src/decoder/amm/one_dex.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_one_dex`. //! Reserved protocol decoder for `amm_one_dex`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_one_dex` program surface.
pub(crate) const DC_AMM_ONE_DEX_LEGACY_CRATE: &str = "kb_decoder_amm_one_dex"; #[derive(Clone, Debug, Default)]
pub struct DcAmmOneDexDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmOneDexDecoder {
pub(crate) const DC_AMM_ONE_DEX_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_one_dex";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_ONE_DEX_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/pump_swap.rs // file: kb-lib/src/decoder/amm/pump_swap.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_pump_swap`. //! Reserved protocol decoder for `amm_pump_swap`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_pump_swap` program surface.
pub(crate) const DC_AMM_PUMP_SWAP_LEGACY_CRATE: &str = "kb_decoder_amm_pump_swap"; #[derive(Clone, Debug, Default)]
pub struct DcAmmPumpSwapDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmPumpSwapDecoder {
pub(crate) const DC_AMM_PUMP_SWAP_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_pump_swap";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_PUMP_SWAP_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/raydium_lp_v4.rs // file: kb-lib/src/decoder/amm/raydium_lp_v4.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_raydium_lp_v4`. //! Reserved protocol decoder for `amm_raydium_lp_v4`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_raydium_lp_v4` program surface.
pub(crate) const DC_AMM_RAYDIUM_LP_V4_LEGACY_CRATE: &str = "kb_decoder_amm_raydium_lp_v4"; #[derive(Clone, Debug, Default)]
pub struct DcAmmRaydiumLpV4Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmRaydiumLpV4Decoder {
pub(crate) const DC_AMM_RAYDIUM_LP_V4_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_raydium_lp_v4";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_RAYDIUM_LP_V4_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/solfi.rs // file: kb-lib/src/decoder/amm/solfi.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_solfi`. //! Reserved protocol decoder for `amm_solfi`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_solfi` program surface.
pub(crate) const DC_AMM_SOLFI_LEGACY_CRATE: &str = "kb_decoder_amm_solfi"; #[derive(Clone, Debug, Default)]
pub struct DcAmmSolfiDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmSolfiDecoder {
pub(crate) const DC_AMM_SOLFI_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_solfi";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_SOLFI_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/solfi_v2.rs // file: kb-lib/src/decoder/amm/solfi_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_solfi_v2`. //! Reserved protocol decoder for `amm_solfi_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_solfi_v2` program surface.
pub(crate) const DC_AMM_SOLFI_V2_LEGACY_CRATE: &str = "kb_decoder_amm_solfi_v2"; #[derive(Clone, Debug, Default)]
pub struct DcAmmSolfiV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmSolfiV2Decoder {
pub(crate) const DC_AMM_SOLFI_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_solfi_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_SOLFI_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/vertigo.rs // file: kb-lib/src/decoder/amm/vertigo.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_vertigo`. //! Reserved protocol decoder for `amm_vertigo`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_vertigo` program surface.
pub(crate) const DC_AMM_VERTIGO_LEGACY_CRATE: &str = "kb_decoder_amm_vertigo"; #[derive(Clone, Debug, Default)]
pub struct DcAmmVertigoDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmVertigoDecoder {
pub(crate) const DC_AMM_VERTIGO_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_vertigo";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_VERTIGO_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/virtuals.rs // file: kb-lib/src/decoder/amm/virtuals.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_virtuals`. //! Reserved protocol decoder for `amm_virtuals`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_virtuals` program surface.
pub(crate) const DC_AMM_VIRTUALS_LEGACY_CRATE: &str = "kb_decoder_amm_virtuals"; #[derive(Clone, Debug, Default)]
pub struct DcAmmVirtualsDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmVirtualsDecoder {
pub(crate) const DC_AMM_VIRTUALS_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_virtuals";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_VIRTUALS_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/woofi.rs // file: kb-lib/src/decoder/amm/woofi.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_woofi`. //! Reserved protocol decoder for `amm_woofi`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_woofi` program surface.
pub(crate) const DC_AMM_WOOFI_LEGACY_CRATE: &str = "kb_decoder_amm_woofi"; #[derive(Clone, Debug, Default)]
pub struct DcAmmWoofiDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmWoofiDecoder {
pub(crate) const DC_AMM_WOOFI_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_woofi";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_WOOFI_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/zero_fi.rs // file: kb-lib/src/decoder/amm/zero_fi.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_zero_fi`. //! Reserved protocol decoder for `amm_zero_fi`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_zero_fi` program surface.
pub(crate) const DC_AMM_ZERO_FI_LEGACY_CRATE: &str = "kb_decoder_amm_zero_fi"; #[derive(Clone, Debug, Default)]
pub struct DcAmmZeroFiDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmZeroFiDecoder {
pub(crate) const DC_AMM_ZERO_FI_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_zero_fi";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_ZERO_FI_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/amm/zora.rs // file: kb-lib/src/decoder/amm/zora.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_amm_zora`. //! Reserved protocol decoder for `amm_zora`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `amm_zora` program surface.
pub(crate) const DC_AMM_ZORA_LEGACY_CRATE: &str = "kb_decoder_amm_zora"; #[derive(Clone, Debug, Default)]
pub struct DcAmmZoraDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAmmZoraDecoder {
pub(crate) const DC_AMM_ZORA_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_amm_zora";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::AMM_ZORA_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,9 @@
// file: kb-lib/src/decoder/anchor.rs // file: kb-lib/src/decoder/anchor.rs
// version: 2 // version: 3
//! `anchor` decoder family. //! `anchor` decoder family.
mod core; mod core;
/// Pending `anchor` decoder migration boundaries. /// Reserved `kb_decoder_anchor` decoder.
pub(crate) const DC_ANCHOR_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::core::DcAnchorDecoder;
self::core::DC_ANCHOR_CORE_LEGACY_CRATE,
self::core::DC_ANCHOR_CORE_MIGRATION_STATUS,
)];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/anchor/core.rs // file: kb-lib/src/decoder/anchor/core.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_anchor`. //! Reserved protocol decoder for `anchor`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `anchor` program surface.
pub(crate) const DC_ANCHOR_CORE_LEGACY_CRATE: &str = "kb_decoder_anchor"; #[derive(Clone, Debug, Default)]
pub struct DcAnchorDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcAnchorDecoder {
pub(crate) const DC_ANCHOR_CORE_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_anchor";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/bridge.rs // file: kb-lib/src/decoder/bridge.rs
// version: 2 // version: 3
//! `bridge` decoder family. //! `bridge` decoder family.
@@ -8,22 +8,11 @@ mod circle_cctp_token_messenger_minter_v2;
mod layer_zero_endpoint; mod layer_zero_endpoint;
mod layer_zero_executor; mod layer_zero_executor;
/// Pending `bridge` decoder migration boundaries. /// Reserved `kb_decoder_bridge_circle_cctp_token_messenger_minter` decoder.
pub(crate) const DC_BRIDGE_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::circle_cctp_token_messenger_minter::DcBridgeCircleCctpTokenMessengerMinterDecoder;
( /// Reserved `kb_decoder_bridge_circle_cctp_token_messenger_minter_v2` decoder.
self::circle_cctp_token_messenger_minter::DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_LEGACY_CRATE, pub use self::circle_cctp_token_messenger_minter_v2::DcBridgeCircleCctpTokenMessengerMinterV2Decoder;
self::circle_cctp_token_messenger_minter::DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_MIGRATION_STATUS, /// Reserved `kb_decoder_bridge_layer_zero_endpoint` decoder.
), pub use self::layer_zero_endpoint::DcBridgeLayerZeroEndpointDecoder;
( /// Reserved `kb_decoder_bridge_layer_zero_executor` decoder.
self::circle_cctp_token_messenger_minter_v2::DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_LEGACY_CRATE, pub use self::layer_zero_executor::DcBridgeLayerZeroExecutorDecoder;
self::circle_cctp_token_messenger_minter_v2::DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_MIGRATION_STATUS,
),
(
self::layer_zero_endpoint::DC_BRIDGE_LAYER_ZERO_ENDPOINT_LEGACY_CRATE,
self::layer_zero_endpoint::DC_BRIDGE_LAYER_ZERO_ENDPOINT_MIGRATION_STATUS,
),
(
self::layer_zero_executor::DC_BRIDGE_LAYER_ZERO_EXECUTOR_LEGACY_CRATE,
self::layer_zero_executor::DC_BRIDGE_LAYER_ZERO_EXECUTOR_MIGRATION_STATUS,
),
];

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/bridge/circle_cctp_token_messenger_minter.rs // file: kb-lib/src/decoder/bridge/circle_cctp_token_messenger_minter.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_bridge_circle_cctp_token_messenger_minter`. //! Reserved protocol decoder for `bridge_circle_cctp_token_messenger_minter`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `bridge_circle_cctp_token_messenger_minter` program surface.
pub(crate) const DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_bridge_circle_cctp_token_messenger_minter"; pub struct DcBridgeCircleCctpTokenMessengerMinterDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcBridgeCircleCctpTokenMessengerMinterDecoder {
pub(crate) const DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_bridge_circle_cctp_token_messenger_minter";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/bridge/circle_cctp_token_messenger_minter_v2.rs // file: kb-lib/src/decoder/bridge/circle_cctp_token_messenger_minter_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_bridge_circle_cctp_token_messenger_minter_v2`. //! Reserved protocol decoder for `bridge_circle_cctp_token_messenger_minter_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `bridge_circle_cctp_token_messenger_minter_v2` program surface.
pub(crate) const DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_bridge_circle_cctp_token_messenger_minter_v2"; pub struct DcBridgeCircleCctpTokenMessengerMinterV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcBridgeCircleCctpTokenMessengerMinterV2Decoder {
pub(crate) const DC_BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_bridge_circle_cctp_token_messenger_minter_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::BRIDGE_CIRCLE_CCTP_TOKEN_MESSENGER_MINTER_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/bridge/layer_zero_endpoint.rs // file: kb-lib/src/decoder/bridge/layer_zero_endpoint.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_bridge_layer_zero_endpoint`. //! Reserved protocol decoder for `bridge_layer_zero_endpoint`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `bridge_layer_zero_endpoint` program surface.
pub(crate) const DC_BRIDGE_LAYER_ZERO_ENDPOINT_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_bridge_layer_zero_endpoint"; pub struct DcBridgeLayerZeroEndpointDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcBridgeLayerZeroEndpointDecoder {
pub(crate) const DC_BRIDGE_LAYER_ZERO_ENDPOINT_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_bridge_layer_zero_endpoint";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::BRIDGE_LAYER_ZERO_ENDPOINT_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/bridge/layer_zero_executor.rs // file: kb-lib/src/decoder/bridge/layer_zero_executor.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_bridge_layer_zero_executor`. //! Reserved protocol decoder for `bridge_layer_zero_executor`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `bridge_layer_zero_executor` program surface.
pub(crate) const DC_BRIDGE_LAYER_ZERO_EXECUTOR_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_bridge_layer_zero_executor"; pub struct DcBridgeLayerZeroExecutorDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcBridgeLayerZeroExecutorDecoder {
pub(crate) const DC_BRIDGE_LAYER_ZERO_EXECUTOR_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_bridge_layer_zero_executor";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::BRIDGE_LAYER_ZERO_EXECUTOR_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/clmm.rs // file: kb-lib/src/decoder/clmm.rs
// version: 2 // version: 3
//! `clmm` decoder family. //! `clmm` decoder family.
@@ -10,30 +10,15 @@ mod pancake_swap;
mod raydium; mod raydium;
mod stabble; mod stabble;
/// Pending `clmm` decoder migration boundaries. /// Reserved `kb_decoder_clmm_byreal` decoder.
pub(crate) const DC_CLMM_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::byreal::DcClmmByrealDecoder;
( /// Reserved `kb_decoder_clmm_fusion` decoder.
self::byreal::DC_CLMM_BYREAL_LEGACY_CRATE, pub use self::fusion::DcClmmFusionDecoder;
self::byreal::DC_CLMM_BYREAL_MIGRATION_STATUS, /// Reserved `kb_decoder_clmm_orca_whirlpool` decoder.
), pub use self::orca_whirlpool::DcClmmOrcaWhirlpoolDecoder;
( /// Reserved `kb_decoder_clmm_pancake_swap` decoder.
self::fusion::DC_CLMM_FUSION_LEGACY_CRATE, pub use self::pancake_swap::DcClmmPancakeSwapDecoder;
self::fusion::DC_CLMM_FUSION_MIGRATION_STATUS, /// Reserved `kb_decoder_clmm_raydium` decoder.
), pub use self::raydium::DcClmmRaydiumDecoder;
( /// Reserved `kb_decoder_clmm_stabble` decoder.
self::orca_whirlpool::DC_CLMM_ORCA_WHIRLPOOL_LEGACY_CRATE, pub use self::stabble::DcClmmStabbleDecoder;
self::orca_whirlpool::DC_CLMM_ORCA_WHIRLPOOL_MIGRATION_STATUS,
),
(
self::pancake_swap::DC_CLMM_PANCAKE_SWAP_LEGACY_CRATE,
self::pancake_swap::DC_CLMM_PANCAKE_SWAP_MIGRATION_STATUS,
),
(
self::raydium::DC_CLMM_RAYDIUM_LEGACY_CRATE,
self::raydium::DC_CLMM_RAYDIUM_MIGRATION_STATUS,
),
(
self::stabble::DC_CLMM_STABBLE_LEGACY_CRATE,
self::stabble::DC_CLMM_STABBLE_MIGRATION_STATUS,
),
];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/clmm/byreal.rs // file: kb-lib/src/decoder/clmm/byreal.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_clmm_byreal`. //! Reserved protocol decoder for `clmm_byreal`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `clmm_byreal` program surface.
pub(crate) const DC_CLMM_BYREAL_LEGACY_CRATE: &str = "kb_decoder_clmm_byreal"; #[derive(Clone, Debug, Default)]
pub struct DcClmmByrealDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcClmmByrealDecoder {
pub(crate) const DC_CLMM_BYREAL_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_clmm_byreal";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::CLMM_BYREAL_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/clmm/fusion.rs // file: kb-lib/src/decoder/clmm/fusion.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_clmm_fusion`. //! Reserved protocol decoder for `clmm_fusion`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `clmm_fusion` program surface.
pub(crate) const DC_CLMM_FUSION_LEGACY_CRATE: &str = "kb_decoder_clmm_fusion"; #[derive(Clone, Debug, Default)]
pub struct DcClmmFusionDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcClmmFusionDecoder {
pub(crate) const DC_CLMM_FUSION_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_clmm_fusion";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::CLMM_FUSION_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/clmm/orca_whirlpool.rs // file: kb-lib/src/decoder/clmm/orca_whirlpool.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_clmm_orca_whirlpool`. //! Reserved protocol decoder for `clmm_orca_whirlpool`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `clmm_orca_whirlpool` program surface.
pub(crate) const DC_CLMM_ORCA_WHIRLPOOL_LEGACY_CRATE: &str = "kb_decoder_clmm_orca_whirlpool"; #[derive(Clone, Debug, Default)]
pub struct DcClmmOrcaWhirlpoolDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcClmmOrcaWhirlpoolDecoder {
pub(crate) const DC_CLMM_ORCA_WHIRLPOOL_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_clmm_orca_whirlpool";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::CLMM_ORCA_WHIRLPOOL_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/clmm/pancake_swap.rs // file: kb-lib/src/decoder/clmm/pancake_swap.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_clmm_pancake_swap`. //! Reserved protocol decoder for `clmm_pancake_swap`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `clmm_pancake_swap` program surface.
pub(crate) const DC_CLMM_PANCAKE_SWAP_LEGACY_CRATE: &str = "kb_decoder_clmm_pancake_swap"; #[derive(Clone, Debug, Default)]
pub struct DcClmmPancakeSwapDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcClmmPancakeSwapDecoder {
pub(crate) const DC_CLMM_PANCAKE_SWAP_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_clmm_pancake_swap";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::CLMM_PANCAKE_SWAP_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/clmm/raydium.rs // file: kb-lib/src/decoder/clmm/raydium.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_clmm_raydium`. //! Reserved protocol decoder for `clmm_raydium`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `clmm_raydium` program surface.
pub(crate) const DC_CLMM_RAYDIUM_LEGACY_CRATE: &str = "kb_decoder_clmm_raydium"; #[derive(Clone, Debug, Default)]
pub struct DcClmmRaydiumDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcClmmRaydiumDecoder {
pub(crate) const DC_CLMM_RAYDIUM_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_clmm_raydium";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::CLMM_RAYDIUM_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/clmm/stabble.rs // file: kb-lib/src/decoder/clmm/stabble.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_clmm_stabble`. //! Reserved protocol decoder for `clmm_stabble`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `clmm_stabble` program surface.
pub(crate) const DC_CLMM_STABBLE_LEGACY_CRATE: &str = "kb_decoder_clmm_stabble"; #[derive(Clone, Debug, Default)]
pub struct DcClmmStabbleDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcClmmStabbleDecoder {
pub(crate) const DC_CLMM_STABBLE_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_clmm_stabble";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::CLMM_STABBLE_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,9 @@
// file: kb-lib/src/decoder/cpmm.rs // file: kb-lib/src/decoder/cpmm.rs
// version: 2 // version: 3
//! `cpmm` decoder family. //! `cpmm` decoder family.
mod raydium; mod raydium;
/// Pending `cpmm` decoder migration boundaries. /// Reserved `kb_decoder_cpmm_raydium` decoder.
pub(crate) const DC_CPMM_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::raydium::DcCpmmRaydiumDecoder;
self::raydium::DC_CPMM_RAYDIUM_LEGACY_CRATE,
self::raydium::DC_CPMM_RAYDIUM_MIGRATION_STATUS,
)];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/cpmm/raydium.rs // file: kb-lib/src/decoder/cpmm/raydium.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_cpmm_raydium`. //! Reserved protocol decoder for `cpmm_raydium`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `cpmm_raydium` program surface.
pub(crate) const DC_CPMM_RAYDIUM_LEGACY_CRATE: &str = "kb_decoder_cpmm_raydium"; #[derive(Clone, Debug, Default)]
pub struct DcCpmmRaydiumDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcCpmmRaydiumDecoder {
pub(crate) const DC_CPMM_RAYDIUM_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_cpmm_raydium";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::CPMM_RAYDIUM_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,9 @@
// file: kb-lib/src/decoder/dlmm.rs // file: kb-lib/src/decoder/dlmm.rs
// version: 2 // version: 3
//! `dlmm` decoder family. //! `dlmm` decoder family.
mod meteora; mod meteora;
/// Pending `dlmm` decoder migration boundaries. /// Reserved `kb_decoder_dlmm_meteora` decoder.
pub(crate) const DC_DLMM_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::meteora::DcDlmmMeteoraDecoder;
self::meteora::DC_DLMM_METEORA_LEGACY_CRATE,
self::meteora::DC_DLMM_METEORA_MIGRATION_STATUS,
)];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/dlmm/meteora.rs // file: kb-lib/src/decoder/dlmm/meteora.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_dlmm_meteora`. //! Reserved protocol decoder for `dlmm_meteora`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `dlmm_meteora` program surface.
pub(crate) const DC_DLMM_METEORA_LEGACY_CRATE: &str = "kb_decoder_dlmm_meteora"; #[derive(Clone, Debug, Default)]
pub struct DcDlmmMeteoraDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcDlmmMeteoraDecoder {
pub(crate) const DC_DLMM_METEORA_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_dlmm_meteora";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::DLMM_METEORA_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,19 +1,12 @@
// file: kb-lib/src/decoder/fees.rs // file: kb-lib/src/decoder/fees.rs
// version: 2 // version: 3
//! `fees` decoder family. //! `fees` decoder family.
mod bags_fee_share_v1; mod bags_fee_share_v1;
mod bags_fee_share_v2; mod bags_fee_share_v2;
/// Pending `fees` decoder migration boundaries. /// Reserved `kb_decoder_fees_bags_fee_share_v1` decoder.
pub(crate) const DC_FEES_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::bags_fee_share_v1::DcFeesBagsFeeShareV1Decoder;
( /// Reserved `kb_decoder_fees_bags_fee_share_v2` decoder.
self::bags_fee_share_v1::DC_FEES_BAGS_FEE_SHARE_V1_LEGACY_CRATE, pub use self::bags_fee_share_v2::DcFeesBagsFeeShareV2Decoder;
self::bags_fee_share_v1::DC_FEES_BAGS_FEE_SHARE_V1_MIGRATION_STATUS,
),
(
self::bags_fee_share_v2::DC_FEES_BAGS_FEE_SHARE_V2_LEGACY_CRATE,
self::bags_fee_share_v2::DC_FEES_BAGS_FEE_SHARE_V2_MIGRATION_STATUS,
),
];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/fees/bags_fee_share_v1.rs // file: kb-lib/src/decoder/fees/bags_fee_share_v1.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_fees_bags_fee_share_v1`. //! Reserved protocol decoder for `fees_bags_fee_share_v1`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `fees_bags_fee_share_v1` program surface.
pub(crate) const DC_FEES_BAGS_FEE_SHARE_V1_LEGACY_CRATE: &str = "kb_decoder_fees_bags_fee_share_v1"; #[derive(Clone, Debug, Default)]
pub struct DcFeesBagsFeeShareV1Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcFeesBagsFeeShareV1Decoder {
pub(crate) const DC_FEES_BAGS_FEE_SHARE_V1_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_fees_bags_fee_share_v1";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::FEES_BAGS_FEE_SHARE_V1_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/fees/bags_fee_share_v2.rs // file: kb-lib/src/decoder/fees/bags_fee_share_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_fees_bags_fee_share_v2`. //! Reserved protocol decoder for `fees_bags_fee_share_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `fees_bags_fee_share_v2` program surface.
pub(crate) const DC_FEES_BAGS_FEE_SHARE_V2_LEGACY_CRATE: &str = "kb_decoder_fees_bags_fee_share_v2"; #[derive(Clone, Debug, Default)]
pub struct DcFeesBagsFeeShareV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcFeesBagsFeeShareV2Decoder {
pub(crate) const DC_FEES_BAGS_FEE_SHARE_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_fees_bags_fee_share_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::FEES_BAGS_FEE_SHARE_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,9 @@
// file: kb-lib/src/decoder/governance.rs // file: kb-lib/src/decoder/governance.rs
// version: 2 // version: 3
//! `governance` decoder family. //! `governance` decoder family.
mod metadao_bid_wall; mod metadao_bid_wall;
/// Pending `governance` decoder migration boundaries. /// Reserved `kb_decoder_governance_metadao_bid_wall` decoder.
pub(crate) const DC_GOVERNANCE_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::metadao_bid_wall::DcGovernanceMetadaoBidWallDecoder;
self::metadao_bid_wall::DC_GOVERNANCE_METADAO_BID_WALL_LEGACY_CRATE,
self::metadao_bid_wall::DC_GOVERNANCE_METADAO_BID_WALL_MIGRATION_STATUS,
)];

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/governance/metadao_bid_wall.rs // file: kb-lib/src/decoder/governance/metadao_bid_wall.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_governance_metadao_bid_wall`. //! Reserved protocol decoder for `governance_metadao_bid_wall`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `governance_metadao_bid_wall` program surface.
pub(crate) const DC_GOVERNANCE_METADAO_BID_WALL_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_governance_metadao_bid_wall"; pub struct DcGovernanceMetadaoBidWallDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcGovernanceMetadaoBidWallDecoder {
pub(crate) const DC_GOVERNANCE_METADAO_BID_WALL_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_governance_metadao_bid_wall";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::GOVERNANCE_METADAO_BID_WALL_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/launchpad.rs // file: kb-lib/src/decoder/launchpad.rs
// version: 2 // version: 3
//! `launchpad` decoder family. //! `launchpad` decoder family.
@@ -13,42 +13,21 @@ mod pump_fun;
mod pump_pumpup_ai; mod pump_pumpup_ai;
mod raydium_launchlab; mod raydium_launchlab;
/// Pending `launchpad` decoder migration boundaries. /// Reserved `kb_decoder_launchpad_boop_fun` decoder.
pub(crate) const DC_LAUNCHPAD_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::boop_fun::DcLaunchpadBoopFunDecoder;
( /// Reserved `kb_decoder_launchpad_metadao_ico` decoder.
self::boop_fun::DC_LAUNCHPAD_BOOP_FUN_LEGACY_CRATE, pub use self::metadao_ico::DcLaunchpadMetadaoIcoDecoder;
self::boop_fun::DC_LAUNCHPAD_BOOP_FUN_MIGRATION_STATUS, /// Reserved `kb_decoder_launchpad_meteora_dbc` decoder.
), pub use self::meteora_dbc::DcLaunchpadMeteoraDbcDecoder;
( /// Reserved `kb_decoder_launchpad_moonit` decoder.
self::metadao_ico::DC_LAUNCHPAD_METADAO_ICO_LEGACY_CRATE, pub use self::moonit::DcLaunchpadMoonitDecoder;
self::metadao_ico::DC_LAUNCHPAD_METADAO_ICO_MIGRATION_STATUS, /// Reserved `kb_decoder_launchpad_orca_wavebreak` decoder.
), pub use self::orca_wavebreak::DcLaunchpadOrcaWavebreakDecoder;
( /// Reserved `kb_decoder_launchpad_printr` decoder.
self::meteora_dbc::DC_LAUNCHPAD_METEORA_DBC_LEGACY_CRATE, pub use self::printr::DcLaunchpadPrintrDecoder;
self::meteora_dbc::DC_LAUNCHPAD_METEORA_DBC_MIGRATION_STATUS, /// Reserved `kb_decoder_launchpad_pump_fun` decoder.
), pub use self::pump_fun::DcLaunchpadPumpFunDecoder;
( /// Reserved `kb_decoder_launchpad_pump_pumpup_ai` decoder.
self::moonit::DC_LAUNCHPAD_MOONIT_LEGACY_CRATE, pub use self::pump_pumpup_ai::DcLaunchpadPumpPumpupAiDecoder;
self::moonit::DC_LAUNCHPAD_MOONIT_MIGRATION_STATUS, /// Reserved `kb_decoder_launchpad_raydium_launchlab` decoder.
), pub use self::raydium_launchlab::DcLaunchpadRaydiumLaunchlabDecoder;
(
self::orca_wavebreak::DC_LAUNCHPAD_ORCA_WAVEBREAK_LEGACY_CRATE,
self::orca_wavebreak::DC_LAUNCHPAD_ORCA_WAVEBREAK_MIGRATION_STATUS,
),
(
self::printr::DC_LAUNCHPAD_PRINTR_LEGACY_CRATE,
self::printr::DC_LAUNCHPAD_PRINTR_MIGRATION_STATUS,
),
(
self::pump_fun::DC_LAUNCHPAD_PUMP_FUN_LEGACY_CRATE,
self::pump_fun::DC_LAUNCHPAD_PUMP_FUN_MIGRATION_STATUS,
),
(
self::pump_pumpup_ai::DC_LAUNCHPAD_PUMP_PUMPUP_AI_LEGACY_CRATE,
self::pump_pumpup_ai::DC_LAUNCHPAD_PUMP_PUMPUP_AI_MIGRATION_STATUS,
),
(
self::raydium_launchlab::DC_LAUNCHPAD_RAYDIUM_LAUNCHLAB_LEGACY_CRATE,
self::raydium_launchlab::DC_LAUNCHPAD_RAYDIUM_LAUNCHLAB_MIGRATION_STATUS,
),
];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/launchpad/boop_fun.rs // file: kb-lib/src/decoder/launchpad/boop_fun.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_boop_fun`. //! Reserved protocol decoder for `launchpad_boop_fun`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_boop_fun` program surface.
pub(crate) const DC_LAUNCHPAD_BOOP_FUN_LEGACY_CRATE: &str = "kb_decoder_launchpad_boop_fun"; #[derive(Clone, Debug, Default)]
pub struct DcLaunchpadBoopFunDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadBoopFunDecoder {
pub(crate) const DC_LAUNCHPAD_BOOP_FUN_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_launchpad_boop_fun";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_BOOP_FUN_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/launchpad/metadao_ico.rs // file: kb-lib/src/decoder/launchpad/metadao_ico.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_metadao_ico`. //! Reserved protocol decoder for `launchpad_metadao_ico`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_metadao_ico` program surface.
pub(crate) const DC_LAUNCHPAD_METADAO_ICO_LEGACY_CRATE: &str = "kb_decoder_launchpad_metadao_ico"; #[derive(Clone, Debug, Default)]
pub struct DcLaunchpadMetadaoIcoDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadMetadaoIcoDecoder {
pub(crate) const DC_LAUNCHPAD_METADAO_ICO_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_launchpad_metadao_ico";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_METADAO_ICO_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/launchpad/meteora_dbc.rs // file: kb-lib/src/decoder/launchpad/meteora_dbc.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_meteora_dbc`. //! Reserved protocol decoder for `launchpad_meteora_dbc`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_meteora_dbc` program surface.
pub(crate) const DC_LAUNCHPAD_METEORA_DBC_LEGACY_CRATE: &str = "kb_decoder_launchpad_meteora_dbc"; #[derive(Clone, Debug, Default)]
pub struct DcLaunchpadMeteoraDbcDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadMeteoraDbcDecoder {
pub(crate) const DC_LAUNCHPAD_METEORA_DBC_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_launchpad_meteora_dbc";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_METEORA_DBC_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/launchpad/moonit.rs // file: kb-lib/src/decoder/launchpad/moonit.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_moonit`. //! Reserved protocol decoder for `launchpad_moonit`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_moonit` program surface.
pub(crate) const DC_LAUNCHPAD_MOONIT_LEGACY_CRATE: &str = "kb_decoder_launchpad_moonit"; #[derive(Clone, Debug, Default)]
pub struct DcLaunchpadMoonitDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadMoonitDecoder {
pub(crate) const DC_LAUNCHPAD_MOONIT_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_launchpad_moonit";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_MOONIT_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/launchpad/orca_wavebreak.rs // file: kb-lib/src/decoder/launchpad/orca_wavebreak.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_orca_wavebreak`. //! Reserved protocol decoder for `launchpad_orca_wavebreak`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_orca_wavebreak` program surface.
pub(crate) const DC_LAUNCHPAD_ORCA_WAVEBREAK_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_launchpad_orca_wavebreak"; pub struct DcLaunchpadOrcaWavebreakDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadOrcaWavebreakDecoder {
pub(crate) const DC_LAUNCHPAD_ORCA_WAVEBREAK_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_launchpad_orca_wavebreak";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_ORCA_WAVEBREAK_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/launchpad/printr.rs // file: kb-lib/src/decoder/launchpad/printr.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_printr`. //! Reserved protocol decoder for `launchpad_printr`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_printr` program surface.
pub(crate) const DC_LAUNCHPAD_PRINTR_LEGACY_CRATE: &str = "kb_decoder_launchpad_printr"; #[derive(Clone, Debug, Default)]
pub struct DcLaunchpadPrintrDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadPrintrDecoder {
pub(crate) const DC_LAUNCHPAD_PRINTR_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_launchpad_printr";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_PRINTR_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/launchpad/pump_fun.rs // file: kb-lib/src/decoder/launchpad/pump_fun.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_pump_fun`. //! Reserved protocol decoder for `launchpad_pump_fun`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_pump_fun` program surface.
pub(crate) const DC_LAUNCHPAD_PUMP_FUN_LEGACY_CRATE: &str = "kb_decoder_launchpad_pump_fun"; #[derive(Clone, Debug, Default)]
pub struct DcLaunchpadPumpFunDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadPumpFunDecoder {
pub(crate) const DC_LAUNCHPAD_PUMP_FUN_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_launchpad_pump_fun";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_PUMP_FUN_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/launchpad/pump_pumpup_ai.rs // file: kb-lib/src/decoder/launchpad/pump_pumpup_ai.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_pump_pumpup_ai`. //! Reserved protocol decoder for `launchpad_pump_pumpup_ai`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_pump_pumpup_ai` program surface.
pub(crate) const DC_LAUNCHPAD_PUMP_PUMPUP_AI_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_launchpad_pump_pumpup_ai"; pub struct DcLaunchpadPumpPumpupAiDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadPumpPumpupAiDecoder {
pub(crate) const DC_LAUNCHPAD_PUMP_PUMPUP_AI_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_launchpad_pump_pumpup_ai";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_PUMP_PUMPUP_AI_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/launchpad/raydium_launchlab.rs // file: kb-lib/src/decoder/launchpad/raydium_launchlab.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_launchpad_raydium_launchlab`. //! Reserved protocol decoder for `launchpad_raydium_launchlab`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `launchpad_raydium_launchlab` program surface.
pub(crate) const DC_LAUNCHPAD_RAYDIUM_LAUNCHLAB_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_launchpad_raydium_launchlab"; pub struct DcLaunchpadRaydiumLaunchlabDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLaunchpadRaydiumLaunchlabDecoder {
pub(crate) const DC_LAUNCHPAD_RAYDIUM_LAUNCHLAB_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_launchpad_raydium_launchlab";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LAUNCHPAD_RAYDIUM_LAUNCHLAB_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/lending.rs // file: kb-lib/src/decoder/lending.rs
// version: 2 // version: 3
//! `lending` decoder family. //! `lending` decoder family.
@@ -11,34 +11,17 @@ mod jupiter_lend_liquidity;
mod kamino; mod kamino;
mod marginfi_v2; mod marginfi_v2;
/// Pending `lending` decoder migration boundaries. /// Reserved `kb_decoder_lending_clone` decoder.
pub(crate) const DC_LENDING_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::clone::DcLendingCloneDecoder;
( /// Reserved `kb_decoder_lending_jupiter_lend_borrow` decoder.
self::clone::DC_LENDING_CLONE_LEGACY_CRATE, pub use self::jupiter_lend_borrow::DcLendingJupiterLendBorrowDecoder;
self::clone::DC_LENDING_CLONE_MIGRATION_STATUS, /// Reserved `kb_decoder_lending_jupiter_lend_earn` decoder.
), pub use self::jupiter_lend_earn::DcLendingJupiterLendEarnDecoder;
( /// Reserved `kb_decoder_lending_jupiter_lend_flash_loan` decoder.
self::jupiter_lend_borrow::DC_LENDING_JUPITER_LEND_BORROW_LEGACY_CRATE, pub use self::jupiter_lend_flash_loan::DcLendingJupiterLendFlashLoanDecoder;
self::jupiter_lend_borrow::DC_LENDING_JUPITER_LEND_BORROW_MIGRATION_STATUS, /// Reserved `kb_decoder_lending_jupiter_lend_liquidity` decoder.
), pub use self::jupiter_lend_liquidity::DcLendingJupiterLendLiquidityDecoder;
( /// Reserved `kb_decoder_lending_kamino` decoder.
self::jupiter_lend_earn::DC_LENDING_JUPITER_LEND_EARN_LEGACY_CRATE, pub use self::kamino::DcLendingKaminoDecoder;
self::jupiter_lend_earn::DC_LENDING_JUPITER_LEND_EARN_MIGRATION_STATUS, /// Reserved `kb_decoder_lending_marginfi_v2` decoder.
), pub use self::marginfi_v2::DcLendingMarginfiV2Decoder;
(
self::jupiter_lend_flash_loan::DC_LENDING_JUPITER_LEND_FLASH_LOAN_LEGACY_CRATE,
self::jupiter_lend_flash_loan::DC_LENDING_JUPITER_LEND_FLASH_LOAN_MIGRATION_STATUS,
),
(
self::jupiter_lend_liquidity::DC_LENDING_JUPITER_LEND_LIQUIDITY_LEGACY_CRATE,
self::jupiter_lend_liquidity::DC_LENDING_JUPITER_LEND_LIQUIDITY_MIGRATION_STATUS,
),
(
self::kamino::DC_LENDING_KAMINO_LEGACY_CRATE,
self::kamino::DC_LENDING_KAMINO_MIGRATION_STATUS,
),
(
self::marginfi_v2::DC_LENDING_MARGINFI_V2_LEGACY_CRATE,
self::marginfi_v2::DC_LENDING_MARGINFI_V2_MIGRATION_STATUS,
),
];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/lending/clone.rs // file: kb-lib/src/decoder/lending/clone.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lending_clone`. //! Reserved protocol decoder for `lending_clone`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lending_clone` program surface.
pub(crate) const DC_LENDING_CLONE_LEGACY_CRATE: &str = "kb_decoder_lending_clone"; #[derive(Clone, Debug, Default)]
pub struct DcLendingCloneDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLendingCloneDecoder {
pub(crate) const DC_LENDING_CLONE_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_lending_clone";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LENDING_CLONE_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/lending/jupiter_lend_borrow.rs // file: kb-lib/src/decoder/lending/jupiter_lend_borrow.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_borrow`. //! Reserved protocol decoder for `lending_jupiter_lend_borrow`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lending_jupiter_lend_borrow` program surface.
pub(crate) const DC_LENDING_JUPITER_LEND_BORROW_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_lending_jupiter_lend_borrow"; pub struct DcLendingJupiterLendBorrowDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLendingJupiterLendBorrowDecoder {
pub(crate) const DC_LENDING_JUPITER_LEND_BORROW_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_lending_jupiter_lend_borrow";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LENDING_JUPITER_LEND_BORROW_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/lending/jupiter_lend_earn.rs // file: kb-lib/src/decoder/lending/jupiter_lend_earn.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_earn`. //! Reserved protocol decoder for `lending_jupiter_lend_earn`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lending_jupiter_lend_earn` program surface.
pub(crate) const DC_LENDING_JUPITER_LEND_EARN_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_lending_jupiter_lend_earn"; pub struct DcLendingJupiterLendEarnDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLendingJupiterLendEarnDecoder {
pub(crate) const DC_LENDING_JUPITER_LEND_EARN_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_lending_jupiter_lend_earn";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LENDING_JUPITER_LEND_EARN_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/lending/jupiter_lend_flash_loan.rs // file: kb-lib/src/decoder/lending/jupiter_lend_flash_loan.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_flash_loan`. //! Reserved protocol decoder for `lending_jupiter_lend_flash_loan`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lending_jupiter_lend_flash_loan` program surface.
pub(crate) const DC_LENDING_JUPITER_LEND_FLASH_LOAN_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_lending_jupiter_lend_flash_loan"; pub struct DcLendingJupiterLendFlashLoanDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLendingJupiterLendFlashLoanDecoder {
pub(crate) const DC_LENDING_JUPITER_LEND_FLASH_LOAN_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_lending_jupiter_lend_flash_loan";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LENDING_JUPITER_LEND_FLASH_LOAN_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/lending/jupiter_lend_liquidity.rs // file: kb-lib/src/decoder/lending/jupiter_lend_liquidity.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lending_jupiter_lend_liquidity`. //! Reserved protocol decoder for `lending_jupiter_lend_liquidity`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lending_jupiter_lend_liquidity` program surface.
pub(crate) const DC_LENDING_JUPITER_LEND_LIQUIDITY_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_lending_jupiter_lend_liquidity"; pub struct DcLendingJupiterLendLiquidityDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLendingJupiterLendLiquidityDecoder {
pub(crate) const DC_LENDING_JUPITER_LEND_LIQUIDITY_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_lending_jupiter_lend_liquidity";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LENDING_JUPITER_LEND_LIQUIDITY_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/lending/kamino.rs // file: kb-lib/src/decoder/lending/kamino.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lending_kamino`. //! Reserved protocol decoder for `lending_kamino`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lending_kamino` program surface.
pub(crate) const DC_LENDING_KAMINO_LEGACY_CRATE: &str = "kb_decoder_lending_kamino"; #[derive(Clone, Debug, Default)]
pub struct DcLendingKaminoDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLendingKaminoDecoder {
pub(crate) const DC_LENDING_KAMINO_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_lending_kamino";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LENDING_KAMINO_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/lending/marginfi_v2.rs // file: kb-lib/src/decoder/lending/marginfi_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lending_marginfi_v2`. //! Reserved protocol decoder for `lending_marginfi_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lending_marginfi_v2` program surface.
pub(crate) const DC_LENDING_MARGINFI_V2_LEGACY_CRATE: &str = "kb_decoder_lending_marginfi_v2"; #[derive(Clone, Debug, Default)]
pub struct DcLendingMarginfiV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLendingMarginfiV2Decoder {
pub(crate) const DC_LENDING_MARGINFI_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_lending_marginfi_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LENDING_MARGINFI_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,9 @@
// file: kb-lib/src/decoder/lock.rs // file: kb-lib/src/decoder/lock.rs
// version: 2 // version: 3
//! `lock` decoder family. //! `lock` decoder family.
mod raydium_lp; mod raydium_lp;
/// Pending `lock` decoder migration boundaries. /// Reserved `kb_decoder_lock_raydium_lp` decoder.
pub(crate) const DC_LOCK_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::raydium_lp::DcLockRaydiumLpDecoder;
self::raydium_lp::DC_LOCK_RAYDIUM_LP_LEGACY_CRATE,
self::raydium_lp::DC_LOCK_RAYDIUM_LP_MIGRATION_STATUS,
)];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/lock/raydium_lp.rs // file: kb-lib/src/decoder/lock/raydium_lp.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_lock_raydium_lp`. //! Reserved protocol decoder for `lock_raydium_lp`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `lock_raydium_lp` program surface.
pub(crate) const DC_LOCK_RAYDIUM_LP_LEGACY_CRATE: &str = "kb_decoder_lock_raydium_lp"; #[derive(Clone, Debug, Default)]
pub struct DcLockRaydiumLpDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcLockRaydiumLpDecoder {
pub(crate) const DC_LOCK_RAYDIUM_LP_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_lock_raydium_lp";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::LOCK_RAYDIUM_LP_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,16 +1,83 @@
// file: kb-lib/src/decoder/metadata.rs // file: kb-lib/src/decoder/metadata.rs
// version: 3 // version: 4
//! `metadata` decoder family. //! `metadata` decoder family.
mod metaplex_token_metadata; mod metaplex_token_metadata;
mod spl_name_service; mod spl_name_service;
/// Pending `metadata` decoder migration boundaries. /// Exhaustive published Metaplex account-key inventory.
pub(crate) const DC_METADATA_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::metaplex_token_metadata::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
self::spl_name_service::DC_METADATA_SPL_NAME_SERVICE_LEGACY_CRATE, /// Exact decoder for the Metaplex Token Metadata program.
self::spl_name_service::DC_METADATA_SPL_NAME_SERVICE_MIGRATION_STATUS, pub use self::metaplex_token_metadata::DcMetadataMetaplexTokenMetadataDecoder;
)]; /// Canonical projection shared by Collection and Use Authority records.
pub use self::metaplex_token_metadata::DcMetadataMtmAuthorityRecordAccountSnapshot;
/// Stable identity and policy of one canonical account snapshot.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountIdentity;
/// Lifecycle class of one canonical account layout.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountLifecycle;
/// Provenance retained for one canonical account observation.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountProvenance;
/// Execution policy separated from historical materialization.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalExecutionPolicy;
/// Materialization policy for active or historical state.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMaterializationPolicy;
/// Canonical account envelope used by materializers and replay.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMetadataAccountSnapshot;
/// Typed canonical Metaplex account state.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMetadataAccountState;
/// Origin of one canonical account observation.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalObservationSource;
/// Canonical projection shared by Metadata and Holder delegate records.
pub use self::metaplex_token_metadata::DcMetadataMtmDelegateRecordAccountSnapshot;
/// Supported edition account layout.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionAccountKind;
/// Canonical bounded projection of one edition or master-edition account.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionAccountSnapshot;
/// Supported Edition Marker account layout.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionMarkerAccountKind;
/// Canonical bounded projection of one Edition Marker account.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionMarkerAccountSnapshot;
/// Bounded error returned while decoding a Metadata account.
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountDecodeError;
/// One entry in the exhaustive published account-key audit.
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountLayoutAuditEntry;
/// Canonical bounded projection of one Metadata account.
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountSnapshot;
/// One bounded historical reservation entry.
pub use self::metaplex_token_metadata::DcMetadataMtmReservationEntrySnapshot;
/// Historical Reservation List account generation.
pub use self::metaplex_token_metadata::DcMetadataMtmReservationListAccountKind;
/// Canonical decode-only projection of a historical Reservation List account.
pub use self::metaplex_token_metadata::DcMetadataMtmReservationListAccountSnapshot;
/// Canonical projection of one Token Owned Escrow account.
pub use self::metaplex_token_metadata::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
/// Authority form used by one Token Owned Escrow account.
pub use self::metaplex_token_metadata::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
/// Canonical bounded projection of one programmable Token Record account.
pub use self::metaplex_token_metadata::DcMetadataMtmTokenRecordAccountSnapshot;
/// Decodes one Collection Authority Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
/// Decodes and validates one edition or master-edition account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_edition_account;
/// Decodes and validates one Edition Marker account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
/// Decodes one Holder Delegate Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
/// Decodes and validates one canonical Metadata account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
/// Decodes one Metadata Delegate Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
/// Decodes one historical Reservation List V1 or V2 account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
/// Decodes one Token Owned Escrow account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
/// Decodes and validates one programmable Token Record account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
/// Decodes one Use Authority Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;
/// Reserved `kb_decoder_metadata_spl_name_service` decoder.
pub use self::spl_name_service::DcMetadataSplNameServiceDecoder;
/// Approve Collection Authority discriminator. /// Approve Collection Authority discriminator.
pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR; pub(crate) use self::metaplex_token_metadata::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
@@ -150,74 +217,3 @@ pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_me
pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_entry_for_discriminator; pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_entry_for_discriminator;
/// Crate-root access to `payload_discriminator` from `instruction`. /// Crate-root access to `payload_discriminator` from `instruction`.
pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_payload_discriminator; pub(crate) use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_payload_discriminator;
/// Exhaustive published Metaplex account-key inventory.
pub use self::metaplex_token_metadata::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
/// Exact decoder for the Metaplex Token Metadata program.
pub use self::metaplex_token_metadata::DcMetadataMetaplexTokenMetadataDecoder;
/// Canonical projection shared by Collection and Use Authority records.
pub use self::metaplex_token_metadata::DcMetadataMtmAuthorityRecordAccountSnapshot;
/// Stable identity and policy of one canonical account snapshot.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountIdentity;
/// Lifecycle class of one canonical account layout.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountLifecycle;
/// Provenance retained for one canonical account observation.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalAccountProvenance;
/// Execution policy separated from historical materialization.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalExecutionPolicy;
/// Materialization policy for active or historical state.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMaterializationPolicy;
/// Canonical account envelope used by materializers and replay.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMetadataAccountSnapshot;
/// Typed canonical Metaplex account state.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalMetadataAccountState;
/// Origin of one canonical account observation.
pub use self::metaplex_token_metadata::DcMetadataMtmCanonicalObservationSource;
/// Canonical projection shared by Metadata and Holder delegate records.
pub use self::metaplex_token_metadata::DcMetadataMtmDelegateRecordAccountSnapshot;
/// Supported edition account layout.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionAccountKind;
/// Canonical bounded projection of one edition or master-edition account.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionAccountSnapshot;
/// Supported Edition Marker account layout.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionMarkerAccountKind;
/// Canonical bounded projection of one Edition Marker account.
pub use self::metaplex_token_metadata::DcMetadataMtmEditionMarkerAccountSnapshot;
/// Bounded error returned while decoding a Metadata account.
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountDecodeError;
/// One entry in the exhaustive published account-key audit.
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountLayoutAuditEntry;
/// Canonical bounded projection of one Metadata account.
pub use self::metaplex_token_metadata::DcMetadataMtmMetadataAccountSnapshot;
/// One bounded historical reservation entry.
pub use self::metaplex_token_metadata::DcMetadataMtmReservationEntrySnapshot;
/// Historical Reservation List account generation.
pub use self::metaplex_token_metadata::DcMetadataMtmReservationListAccountKind;
/// Canonical decode-only projection of a historical Reservation List account.
pub use self::metaplex_token_metadata::DcMetadataMtmReservationListAccountSnapshot;
/// Canonical projection of one Token Owned Escrow account.
pub use self::metaplex_token_metadata::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
/// Authority form used by one Token Owned Escrow account.
pub use self::metaplex_token_metadata::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
/// Canonical bounded projection of one programmable Token Record account.
pub use self::metaplex_token_metadata::DcMetadataMtmTokenRecordAccountSnapshot;
/// Decodes one Collection Authority Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
/// Decodes and validates one edition or master-edition account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_edition_account;
/// Decodes and validates one Edition Marker account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
/// Decodes one Holder Delegate Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
/// Decodes and validates one canonical Metadata account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
/// Decodes one Metadata Delegate Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
/// Decodes one historical Reservation List V1 or V2 account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
/// Decodes one Token Owned Escrow account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
/// Decodes and validates one programmable Token Record account snapshot.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
/// Decodes one Use Authority Record account.
pub use self::metaplex_token_metadata::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;

View File

@@ -9,6 +9,77 @@ mod constants;
mod decoder; mod decoder;
mod instruction; mod instruction;
/// Exhaustive published Metaplex account-key inventory.
pub use self::account::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
/// Canonical projection shared by Collection and Use Authority records.
pub use self::account::DcMetadataMtmAuthorityRecordAccountSnapshot;
/// Canonical projection shared by Metadata and Holder delegate records.
pub use self::account::DcMetadataMtmDelegateRecordAccountSnapshot;
/// Supported edition account layout.
pub use self::account::DcMetadataMtmEditionAccountKind;
/// Canonical bounded projection of one edition or master-edition account.
pub use self::account::DcMetadataMtmEditionAccountSnapshot;
/// Supported Edition Marker account layout.
pub use self::account::DcMetadataMtmEditionMarkerAccountKind;
/// Canonical bounded projection of one Edition Marker account.
pub use self::account::DcMetadataMtmEditionMarkerAccountSnapshot;
/// Bounded error returned while decoding a Metadata account.
pub use self::account::DcMetadataMtmMetadataAccountDecodeError;
/// One entry in the exhaustive published account-key audit.
pub use self::account::DcMetadataMtmMetadataAccountLayoutAuditEntry;
/// Canonical bounded projection of one Metadata account.
pub use self::account::DcMetadataMtmMetadataAccountSnapshot;
/// One bounded historical reservation entry.
pub use self::account::DcMetadataMtmReservationEntrySnapshot;
/// Historical Reservation List account generation.
pub use self::account::DcMetadataMtmReservationListAccountKind;
/// Canonical decode-only projection of a historical Reservation List account.
pub use self::account::DcMetadataMtmReservationListAccountSnapshot;
/// Canonical projection of one Token Owned Escrow account.
pub use self::account::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
/// Authority form used by one Token Owned Escrow account.
pub use self::account::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
/// Canonical bounded projection of one programmable Token Record account.
pub use self::account::DcMetadataMtmTokenRecordAccountSnapshot;
/// Decodes one Collection Authority Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
/// Decodes and validates one edition or master-edition account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_edition_account;
/// Decodes and validates one Edition Marker account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
/// Decodes one Holder Delegate Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
/// Decodes and validates one canonical Metadata account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
/// Decodes one Metadata Delegate Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
/// Decodes one historical Reservation List V1 or V2 account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
/// Decodes one Token Owned Escrow account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
/// Decodes and validates one programmable Token Record account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
/// Decodes one Use Authority Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;
/// Stable identity and policy of one canonical account snapshot.
pub use self::canonical::DcMetadataMtmCanonicalAccountIdentity;
/// Lifecycle class of one canonical account layout.
pub use self::canonical::DcMetadataMtmCanonicalAccountLifecycle;
/// Provenance retained for one canonical account observation.
pub use self::canonical::DcMetadataMtmCanonicalAccountProvenance;
/// Execution policy separated from historical materialization.
pub use self::canonical::DcMetadataMtmCanonicalExecutionPolicy;
/// Materialization policy for active or historical state.
pub use self::canonical::DcMetadataMtmCanonicalMaterializationPolicy;
/// Canonical account envelope used by materializers and replay.
pub use self::canonical::DcMetadataMtmCanonicalMetadataAccountSnapshot;
/// Typed canonical Metaplex account state.
pub use self::canonical::DcMetadataMtmCanonicalMetadataAccountState;
/// Origin of one canonical account observation.
pub use self::canonical::DcMetadataMtmCanonicalObservationSource;
/// Exact Metaplex Token Metadata decoder.
pub use self::decoder::DcMetadataMetaplexTokenMetadataDecoder;
/// Approve Collection Authority discriminator. /// Approve Collection Authority discriminator.
pub(crate) use self::constants::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR; pub(crate) use self::constants::DC_METADATA_MTM_APPROVE_COLLECTION_AUTHORITY_DISCRIMINATOR;
/// Approve Use Authority discriminator. /// Approve Use Authority discriminator.
@@ -147,74 +218,3 @@ pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_decod
pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_entry_for_discriminator; pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_entry_for_discriminator;
/// Crate-root access to `payload_discriminator` from `instruction`. /// Crate-root access to `payload_discriminator` from `instruction`.
pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_payload_discriminator; pub(crate) use self::instruction::decoder_metadata_metaplex_token_metadata_payload_discriminator;
/// Exhaustive published Metaplex account-key inventory.
pub use self::account::DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT;
/// Canonical projection shared by Collection and Use Authority records.
pub use self::account::DcMetadataMtmAuthorityRecordAccountSnapshot;
/// Canonical projection shared by Metadata and Holder delegate records.
pub use self::account::DcMetadataMtmDelegateRecordAccountSnapshot;
/// Supported edition account layout.
pub use self::account::DcMetadataMtmEditionAccountKind;
/// Canonical bounded projection of one edition or master-edition account.
pub use self::account::DcMetadataMtmEditionAccountSnapshot;
/// Supported Edition Marker account layout.
pub use self::account::DcMetadataMtmEditionMarkerAccountKind;
/// Canonical bounded projection of one Edition Marker account.
pub use self::account::DcMetadataMtmEditionMarkerAccountSnapshot;
/// Bounded error returned while decoding a Metadata account.
pub use self::account::DcMetadataMtmMetadataAccountDecodeError;
/// One entry in the exhaustive published account-key audit.
pub use self::account::DcMetadataMtmMetadataAccountLayoutAuditEntry;
/// Canonical bounded projection of one Metadata account.
pub use self::account::DcMetadataMtmMetadataAccountSnapshot;
/// One bounded historical reservation entry.
pub use self::account::DcMetadataMtmReservationEntrySnapshot;
/// Historical Reservation List account generation.
pub use self::account::DcMetadataMtmReservationListAccountKind;
/// Canonical decode-only projection of a historical Reservation List account.
pub use self::account::DcMetadataMtmReservationListAccountSnapshot;
/// Canonical projection of one Token Owned Escrow account.
pub use self::account::DcMetadataMtmTokenOwnedEscrowAccountSnapshot;
/// Authority form used by one Token Owned Escrow account.
pub use self::account::DcMetadataMtmTokenOwnedEscrowAuthorityKind;
/// Canonical bounded projection of one programmable Token Record account.
pub use self::account::DcMetadataMtmTokenRecordAccountSnapshot;
/// Decodes one Collection Authority Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_collection_authority_record_account;
/// Decodes and validates one edition or master-edition account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_edition_account;
/// Decodes and validates one Edition Marker account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_edition_marker_account;
/// Decodes one Holder Delegate Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_holder_delegate_record_account;
/// Decodes and validates one canonical Metadata account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_metadata_account;
/// Decodes one Metadata Delegate Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_metadata_delegate_record_account;
/// Decodes one historical Reservation List V1 or V2 account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_reservation_list_account;
/// Decodes one Token Owned Escrow account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_token_owned_escrow_account;
/// Decodes and validates one programmable Token Record account snapshot.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_token_record_account;
/// Decodes one Use Authority Record account.
pub use self::account::decoder_metadata_metaplex_token_metadata_decode_use_authority_record_account;
/// Stable identity and policy of one canonical account snapshot.
pub use self::canonical::DcMetadataMtmCanonicalAccountIdentity;
/// Lifecycle class of one canonical account layout.
pub use self::canonical::DcMetadataMtmCanonicalAccountLifecycle;
/// Provenance retained for one canonical account observation.
pub use self::canonical::DcMetadataMtmCanonicalAccountProvenance;
/// Execution policy separated from historical materialization.
pub use self::canonical::DcMetadataMtmCanonicalExecutionPolicy;
/// Materialization policy for active or historical state.
pub use self::canonical::DcMetadataMtmCanonicalMaterializationPolicy;
/// Canonical account envelope used by materializers and replay.
pub use self::canonical::DcMetadataMtmCanonicalMetadataAccountSnapshot;
/// Typed canonical Metaplex account state.
pub use self::canonical::DcMetadataMtmCanonicalMetadataAccountState;
/// Origin of one canonical account observation.
pub use self::canonical::DcMetadataMtmCanonicalObservationSource;
/// Exact Metaplex Token Metadata decoder.
pub use self::decoder::DcMetadataMetaplexTokenMetadataDecoder;

View File

@@ -3,6 +3,101 @@
//! Bounded decoding and PDA validation for Metaplex Token Metadata accounts. //! Bounded decoding and PDA validation for Metaplex Token Metadata accounts.
/// Exhaustive inventory of every published Metaplex Token Metadata `Key` variant.
pub const DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT:
&[DcMetadataMtmMetadataAccountLayoutAuditEntry] = &[
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "Uninitialized",
discriminant: 0,
decoder: "reject_uninitialized",
lifecycle: "sentinel",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "EditionV1",
discriminant: 1,
decoder: "decode_edition_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MasterEditionV1",
discriminant: 2,
decoder: "decode_edition_account",
lifecycle: "historical_materializable",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "ReservationListV1",
discriminant: 3,
decoder: "decode_reservation_list_account",
lifecycle: "historical_materializable",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MetadataV1",
discriminant: 4,
decoder: "decode_metadata_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "ReservationListV2",
discriminant: 5,
decoder: "decode_reservation_list_account",
lifecycle: "historical_materializable",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MasterEditionV2",
discriminant: 6,
decoder: "decode_edition_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "EditionMarker",
discriminant: 7,
decoder: "decode_edition_marker_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "UseAuthorityRecord",
discriminant: 8,
decoder: "decode_use_authority_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "CollectionAuthorityRecord",
discriminant: 9,
decoder: "decode_collection_authority_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "TokenOwnedEscrow",
discriminant: 10,
decoder: "decode_token_owned_escrow_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "TokenRecord",
discriminant: 11,
decoder: "decode_token_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MetadataDelegate",
discriminant: 12,
decoder: "decode_metadata_delegate_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "EditionMarkerV2",
discriminant: 13,
decoder: "decode_edition_marker_account",
lifecycle: "active_experimental",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "HolderDelegate",
discriminant: 14,
decoder: "decode_holder_delegate_record_account",
lifecycle: "active",
},
];
const MAX_METADATA_ACCOUNT_BYTES: usize = 1_024; const MAX_METADATA_ACCOUNT_BYTES: usize = 1_024;
const MAX_NAME_BYTES: usize = 32; const MAX_NAME_BYTES: usize = 32;
const MAX_SYMBOL_BYTES: usize = 10; const MAX_SYMBOL_BYTES: usize = 10;
@@ -105,101 +200,6 @@ pub struct DcMetadataMtmMetadataAccountLayoutAuditEntry {
pub lifecycle: &'static str, pub lifecycle: &'static str,
} }
/// Exhaustive inventory of every published Metaplex Token Metadata `Key` variant.
pub const DC_METADATA_MTM_METADATA_ACCOUNT_LAYOUT_AUDIT:
&[DcMetadataMtmMetadataAccountLayoutAuditEntry] = &[
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "Uninitialized",
discriminant: 0,
decoder: "reject_uninitialized",
lifecycle: "sentinel",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "EditionV1",
discriminant: 1,
decoder: "decode_edition_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MasterEditionV1",
discriminant: 2,
decoder: "decode_edition_account",
lifecycle: "historical_materializable",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "ReservationListV1",
discriminant: 3,
decoder: "decode_reservation_list_account",
lifecycle: "historical_materializable",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MetadataV1",
discriminant: 4,
decoder: "decode_metadata_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "ReservationListV2",
discriminant: 5,
decoder: "decode_reservation_list_account",
lifecycle: "historical_materializable",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MasterEditionV2",
discriminant: 6,
decoder: "decode_edition_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "EditionMarker",
discriminant: 7,
decoder: "decode_edition_marker_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "UseAuthorityRecord",
discriminant: 8,
decoder: "decode_use_authority_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "CollectionAuthorityRecord",
discriminant: 9,
decoder: "decode_collection_authority_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "TokenOwnedEscrow",
discriminant: 10,
decoder: "decode_token_owned_escrow_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "TokenRecord",
discriminant: 11,
decoder: "decode_token_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "MetadataDelegate",
discriminant: 12,
decoder: "decode_metadata_delegate_record_account",
lifecycle: "active",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "EditionMarkerV2",
discriminant: 13,
decoder: "decode_edition_marker_account",
lifecycle: "active_experimental",
},
DcMetadataMtmMetadataAccountLayoutAuditEntry {
key_name: "HolderDelegate",
discriminant: 14,
decoder: "decode_holder_delegate_record_account",
lifecycle: "active",
},
];
/// Canonical bounded projection of one Metadata account. /// Canonical bounded projection of one Metadata account.
#[derive(Clone, Debug, PartialEq)] #[derive(Clone, Debug, PartialEq)]
pub struct DcMetadataMtmMetadataAccountSnapshot { pub struct DcMetadataMtmMetadataAccountSnapshot {

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/metadata/spl_name_service.rs // file: kb-lib/src/decoder/metadata/spl_name_service.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_metadata_spl_name_service`. //! Reserved protocol decoder for `metadata_spl_name_service`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `metadata_spl_name_service` program surface.
pub(crate) const DC_METADATA_SPL_NAME_SERVICE_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_metadata_spl_name_service"; pub struct DcMetadataSplNameServiceDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcMetadataSplNameServiceDecoder {
pub(crate) const DC_METADATA_SPL_NAME_SERVICE_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_metadata_spl_name_service";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::METADATA_SPL_NAME_SERVICE_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,9 @@
// file: kb-lib/src/decoder/nft.rs // file: kb-lib/src/decoder/nft.rs
// version: 2 // version: 3
//! `nft` decoder family. //! `nft` decoder family.
mod metaplex_bubblegum; mod metaplex_bubblegum;
/// Pending `nft` decoder migration boundaries. /// Reserved `kb_decoder_nft_metaplex_bubblegum` decoder.
pub(crate) const DC_NFT_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[( pub use self::metaplex_bubblegum::DcNftMetaplexBubblegumDecoder;
self::metaplex_bubblegum::DC_NFT_METAPLEX_BUBBLEGUM_LEGACY_CRATE,
self::metaplex_bubblegum::DC_NFT_METAPLEX_BUBBLEGUM_MIGRATION_STATUS,
)];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/nft/metaplex_bubblegum.rs // file: kb-lib/src/decoder/nft/metaplex_bubblegum.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_nft_metaplex_bubblegum`. //! Reserved protocol decoder for `nft_metaplex_bubblegum`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `nft_metaplex_bubblegum` program surface.
pub(crate) const DC_NFT_METAPLEX_BUBBLEGUM_LEGACY_CRATE: &str = "kb_decoder_nft_metaplex_bubblegum"; #[derive(Clone, Debug, Default)]
pub struct DcNftMetaplexBubblegumDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcNftMetaplexBubblegumDecoder {
pub(crate) const DC_NFT_METAPLEX_BUBBLEGUM_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_nft_metaplex_bubblegum";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::NFT_METAPLEX_BUBBLEGUM_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/orderbook.rs // file: kb-lib/src/decoder/orderbook.rs
// version: 2 // version: 3
//! `orderbook` decoder family. //! `orderbook` decoder family.
@@ -7,18 +7,9 @@ mod jupiter_limit_order;
mod jupiter_limit_order_v2; mod jupiter_limit_order_v2;
mod openbook_v2; mod openbook_v2;
/// Pending `orderbook` decoder migration boundaries. /// Reserved `kb_decoder_orderbook_jupiter_limit_order` decoder.
pub(crate) const DC_ORDERBOOK_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::jupiter_limit_order::DcOrderbookJupiterLimitOrderDecoder;
( /// Reserved `kb_decoder_orderbook_jupiter_limit_order_v2` decoder.
self::jupiter_limit_order::DC_ORDERBOOK_JUPITER_LIMIT_ORDER_LEGACY_CRATE, pub use self::jupiter_limit_order_v2::DcOrderbookJupiterLimitOrderV2Decoder;
self::jupiter_limit_order::DC_ORDERBOOK_JUPITER_LIMIT_ORDER_MIGRATION_STATUS, /// Reserved `kb_decoder_orderbook_openbook_v2` decoder.
), pub use self::openbook_v2::DcOrderbookOpenbookV2Decoder;
(
self::jupiter_limit_order_v2::DC_ORDERBOOK_JUPITER_LIMIT_ORDER_V2_LEGACY_CRATE,
self::jupiter_limit_order_v2::DC_ORDERBOOK_JUPITER_LIMIT_ORDER_V2_MIGRATION_STATUS,
),
(
self::openbook_v2::DC_ORDERBOOK_OPENBOOK_V2_LEGACY_CRATE,
self::openbook_v2::DC_ORDERBOOK_OPENBOOK_V2_MIGRATION_STATUS,
),
];

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/orderbook/jupiter_limit_order.rs // file: kb-lib/src/decoder/orderbook/jupiter_limit_order.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_orderbook_jupiter_limit_order`. //! Reserved protocol decoder for `orderbook_jupiter_limit_order`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `orderbook_jupiter_limit_order` program surface.
pub(crate) const DC_ORDERBOOK_JUPITER_LIMIT_ORDER_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_orderbook_jupiter_limit_order"; pub struct DcOrderbookJupiterLimitOrderDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcOrderbookJupiterLimitOrderDecoder {
pub(crate) const DC_ORDERBOOK_JUPITER_LIMIT_ORDER_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_orderbook_jupiter_limit_order";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::ORDERBOOK_JUPITER_LIMIT_ORDER_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/orderbook/jupiter_limit_order_v2.rs // file: kb-lib/src/decoder/orderbook/jupiter_limit_order_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_orderbook_jupiter_limit_order_v2`. //! Reserved protocol decoder for `orderbook_jupiter_limit_order_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `orderbook_jupiter_limit_order_v2` program surface.
pub(crate) const DC_ORDERBOOK_JUPITER_LIMIT_ORDER_V2_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_orderbook_jupiter_limit_order_v2"; pub struct DcOrderbookJupiterLimitOrderV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcOrderbookJupiterLimitOrderV2Decoder {
pub(crate) const DC_ORDERBOOK_JUPITER_LIMIT_ORDER_V2_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_orderbook_jupiter_limit_order_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::ORDERBOOK_JUPITER_LIMIT_ORDER_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/orderbook/openbook_v2.rs // file: kb-lib/src/decoder/orderbook/openbook_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_orderbook_openbook_v2`. //! Reserved protocol decoder for `orderbook_openbook_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `orderbook_openbook_v2` program surface.
pub(crate) const DC_ORDERBOOK_OPENBOOK_V2_LEGACY_CRATE: &str = "kb_decoder_orderbook_openbook_v2"; #[derive(Clone, Debug, Default)]
pub struct DcOrderbookOpenbookV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcOrderbookOpenbookV2Decoder {
pub(crate) const DC_ORDERBOOK_OPENBOOK_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_orderbook_openbook_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::ORDERBOOK_OPENBOOK_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/perpetuals.rs // file: kb-lib/src/decoder/perpetuals.rs
// version: 2 // version: 3
//! `perpetuals` decoder family. //! `perpetuals` decoder family.
@@ -7,18 +7,9 @@ mod drift_v2;
mod jupiter; mod jupiter;
mod zeta; mod zeta;
/// Pending `perpetuals` decoder migration boundaries. /// Reserved `kb_decoder_perpetuals_drift_v2` decoder.
pub(crate) const DC_PERPETUALS_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::drift_v2::DcPerpetualsDriftV2Decoder;
( /// Reserved `kb_decoder_perpetuals_jupiter` decoder.
self::drift_v2::DC_PERPETUALS_DRIFT_V2_LEGACY_CRATE, pub use self::jupiter::DcPerpetualsJupiterDecoder;
self::drift_v2::DC_PERPETUALS_DRIFT_V2_MIGRATION_STATUS, /// Reserved `kb_decoder_perpetuals_zeta` decoder.
), pub use self::zeta::DcPerpetualsZetaDecoder;
(
self::jupiter::DC_PERPETUALS_JUPITER_LEGACY_CRATE,
self::jupiter::DC_PERPETUALS_JUPITER_MIGRATION_STATUS,
),
(
self::zeta::DC_PERPETUALS_ZETA_LEGACY_CRATE,
self::zeta::DC_PERPETUALS_ZETA_MIGRATION_STATUS,
),
];

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/perpetuals/drift_v2.rs // file: kb-lib/src/decoder/perpetuals/drift_v2.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_perpetuals_drift_v2`. //! Reserved protocol decoder for `perpetuals_drift_v2`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `perpetuals_drift_v2` program surface.
pub(crate) const DC_PERPETUALS_DRIFT_V2_LEGACY_CRATE: &str = "kb_decoder_perpetuals_drift_v2"; #[derive(Clone, Debug, Default)]
pub struct DcPerpetualsDriftV2Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcPerpetualsDriftV2Decoder {
pub(crate) const DC_PERPETUALS_DRIFT_V2_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_perpetuals_drift_v2";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::PERPETUALS_DRIFT_V2_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/perpetuals/jupiter.rs // file: kb-lib/src/decoder/perpetuals/jupiter.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_perpetuals_jupiter`. //! Reserved protocol decoder for `perpetuals_jupiter`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `perpetuals_jupiter` program surface.
pub(crate) const DC_PERPETUALS_JUPITER_LEGACY_CRATE: &str = "kb_decoder_perpetuals_jupiter"; #[derive(Clone, Debug, Default)]
pub struct DcPerpetualsJupiterDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcPerpetualsJupiterDecoder {
pub(crate) const DC_PERPETUALS_JUPITER_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_perpetuals_jupiter";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::PERPETUALS_JUPITER_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,10 +1,39 @@
// file: kb-lib/src/decoder/perpetuals/zeta.rs // file: kb-lib/src/decoder/perpetuals/zeta.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_perpetuals_zeta`. //! Reserved protocol decoder for `perpetuals_zeta`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `perpetuals_zeta` program surface.
pub(crate) const DC_PERPETUALS_ZETA_LEGACY_CRATE: &str = "kb_decoder_perpetuals_zeta"; #[derive(Clone, Debug, Default)]
pub struct DcPerpetualsZetaDecoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcPerpetualsZetaDecoder {
pub(crate) const DC_PERPETUALS_ZETA_MIGRATION_STATUS: &str = "source-preserved-pending-port"; fn decoder_name(&self) -> &'static str {
return "kb_decoder_perpetuals_zeta";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::PERPETUALS_ZETA_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

View File

@@ -1,5 +1,5 @@
// file: kb-lib/src/decoder/router.rs // file: kb-lib/src/decoder/router.rs
// version: 2 // version: 3
//! `router` decoder family. //! `router` decoder family.
@@ -10,30 +10,15 @@ mod jupiter_dca;
mod okx_labs_v1; mod okx_labs_v1;
mod okx_labs_v2; mod okx_labs_v2;
/// Pending `router` decoder migration boundaries. /// Reserved `kb_decoder_router_dflow_aggregator_v4` decoder.
pub(crate) const DC_ROUTER_MIGRATION_BOUNDARIES: &[(&str, &str)] = &[ pub use self::dflow_aggregator_v4::DcRouterDflowAggregatorV4Decoder;
( /// Reserved `kb_decoder_router_jupiter_aggregator_v4` decoder.
self::dflow_aggregator_v4::DC_ROUTER_DFLOW_AGGREGATOR_V4_LEGACY_CRATE, pub use self::jupiter_aggregator_v4::DcRouterJupiterAggregatorV4Decoder;
self::dflow_aggregator_v4::DC_ROUTER_DFLOW_AGGREGATOR_V4_MIGRATION_STATUS, /// Reserved `kb_decoder_router_jupiter_aggregator_v6` decoder.
), pub use self::jupiter_aggregator_v6::DcRouterJupiterAggregatorV6Decoder;
( /// Reserved `kb_decoder_router_jupiter_dca` decoder.
self::jupiter_aggregator_v4::DC_ROUTER_JUPITER_AGGREGATOR_V4_LEGACY_CRATE, pub use self::jupiter_dca::DcRouterJupiterDcaDecoder;
self::jupiter_aggregator_v4::DC_ROUTER_JUPITER_AGGREGATOR_V4_MIGRATION_STATUS, /// Reserved `kb_decoder_router_okx_labs_v1` decoder.
), pub use self::okx_labs_v1::DcRouterOkxLabsV1Decoder;
( /// Reserved `kb_decoder_router_okx_labs_v2` decoder.
self::jupiter_aggregator_v6::DC_ROUTER_JUPITER_AGGREGATOR_V6_LEGACY_CRATE, pub use self::okx_labs_v2::DcRouterOkxLabsV2Decoder;
self::jupiter_aggregator_v6::DC_ROUTER_JUPITER_AGGREGATOR_V6_MIGRATION_STATUS,
),
(
self::jupiter_dca::DC_ROUTER_JUPITER_DCA_LEGACY_CRATE,
self::jupiter_dca::DC_ROUTER_JUPITER_DCA_MIGRATION_STATUS,
),
(
self::okx_labs_v1::DC_ROUTER_OKX_LABS_V1_LEGACY_CRATE,
self::okx_labs_v1::DC_ROUTER_OKX_LABS_V1_MIGRATION_STATUS,
),
(
self::okx_labs_v2::DC_ROUTER_OKX_LABS_V2_LEGACY_CRATE,
self::okx_labs_v2::DC_ROUTER_OKX_LABS_V2_MIGRATION_STATUS,
),
];

View File

@@ -1,12 +1,39 @@
// file: kb-lib/src/decoder/router/dflow_aggregator_v4.rs // file: kb-lib/src/decoder/router/dflow_aggregator_v4.rs
// version: 2 // version: 3
//! Migration boundary for legacy crate `kb_decoder_router_dflow_aggregator_v4`. //! Reserved protocol decoder for `router_dflow_aggregator_v4`.
/// Legacy crate name retained for migration and compatibility tracking. /// Reserved decoder for the `router_dflow_aggregator_v4` program surface.
pub(crate) const DC_ROUTER_DFLOW_AGGREGATOR_V4_LEGACY_CRATE: &str = #[derive(Clone, Debug, Default)]
"kb_decoder_router_dflow_aggregator_v4"; pub struct DcRouterDflowAggregatorV4Decoder;
/// Current porting status. impl crate::DcApiProtocolDecoder for crate::DcRouterDflowAggregatorV4Decoder {
pub(crate) const DC_ROUTER_DFLOW_AGGREGATOR_V4_MIGRATION_STATUS: &str = fn decoder_name(&self) -> &'static str {
"source-preserved-pending-port"; return "kb_decoder_router_dflow_aggregator_v4";
}
fn decoder_version(&self) -> &'static str {
return env!("CARGO_PKG_VERSION");
}
fn program_ids(&self) -> &'static [&'static str] {
return &[kb_program_ids::ROUTER_DFLOW_AGGREGATOR_V4_PROGRAM_ID];
}
fn supports_observation(
&self,
observation: &crate::MdProgramObservation,
) -> crate::DcApiDecoderSupport {
if crate::DcApiProtocolDecoder::handles_program_id(self, &observation.program_id) {
return crate::DcApiDecoderSupport::Maybe;
}
return crate::DcApiDecoderSupport::No;
}
fn decode_observation(
&self,
_observation: &crate::MdProgramObservation,
) -> kb_core::Result<std::vec::Vec<crate::MdDecodedProtocolEvent>> {
return std::result::Result::Ok(std::vec::Vec::new());
}
}

Some files were not shown because too many files have changed in this diff Show More