v0.1.0-pre.012
This commit is contained in:
@@ -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 d’instructions 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 Token‑2022, 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 d’instructions 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 Token‑2022, 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` :
|
||||||
|
|||||||
16
ROADMAP.md
16
ROADMAP.md
@@ -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 l’audit aux façades privées, aux réexports transitifs `self::`, aux alias interdits et à la complétude des APIs externes.
|
- [x] Étendre l’audit 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 d’inté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 d’inté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 l’arborescence des décodeurs.
|
||||||
|
- [x] Ajouter un test central de contrat pour les 98 squelettes et étendre l’audit 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 à l’API des exécuteurs, à leurs squelettes puis au port des exécuteurs déjà implémentés dans bot2.
|
||||||
|
|||||||
25
RULES.md
25
RULES.md
@@ -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 s’appliquent 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 s’appliquent 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 d’une 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.
|
||||||
|
|||||||
@@ -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 l’ancien alias seulement après validation.
|
6. supprimer l’ancien alias seulement après validation.
|
||||||
|
|||||||
@@ -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` |
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!-- file: docs/SOLANA_INTERFACE_DEPENDENCIES.md -->
|
<!-- file: docs/SOLANA_INTERFACE_DEPENDENCIES.md -->
|
||||||
<!-- version: 31 -->
|
<!-- version: 32 -->
|
||||||
|
|
||||||
# Dépendances d’interfaces Solana et SPL
|
# Dépendances d’interfaces 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 n’est interprété comme une preuve de l’état du programme externe
|
distincts ; aucun pointeur TLV n’est 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`. L’IDL officiel audité porte la version `1.14.0` et le blob `5df4a24f62c2743125be096cc174680790c92c18`; l’inventaire 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`. L’IDL officiel audité porte la version `1.14.0` et le blob `5df4a24f62c2743125be096cc174680790c92c18`; l’inventaire 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.
|
||||||
|
|||||||
@@ -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"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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 d’autorité, Token
|
Edition Marker V1/V2, Token Record, records de délégation et d’autorité, Token
|
||||||
Owned Escrow et Reservation List historiques. Chaque parseur vérifie l’owner,
|
Owned Escrow et Reservation List historiques. Chaque parseur vérifie l’owner,
|
||||||
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 d’exécution définitivement interdite. La matrice normative est
|
|||||||
- `DcToken2022State`, `DcToken2022StateKind`, `DcToken2022TlvEntry` et `decoder_spl_token2022_token2022_state()` : API publique de lecture d’état Token‑2022 ;
|
- `DcToken2022State`, `DcToken2022StateKind`, `DcToken2022TlvEntry` et `decoder_spl_token2022_token2022_state()` : API publique de lecture d’état Token‑2022 ;
|
||||||
- `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 l’extraction core ;
|
- `MdCoreInstructionReplayInput` : input source-neutral produit par l’extraction 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);
|
||||||
```
|
```
|
||||||
|
|
||||||
L’appel 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.
|
L’appel 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 @@ L’appel 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 d’un décodeur concret.
|
- Un matérialiseur externe dépend uniquement des contrats et modèles publics de `kb-lib`, jamais d’un 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.
|
||||||
|
|||||||
@@ -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;
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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;
|
|
||||||
|
|||||||
@@ -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;
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
)];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
|
||||||
),
|
|
||||||
];
|
|
||||||
|
|||||||
@@ -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
Reference in New Issue
Block a user