v0.5.1-pre.008

This commit is contained in:
2026-08-10 11:21:07 +02:00
parent a2820062eb
commit 0e05c660c6
90 changed files with 2490 additions and 1613 deletions

View File

@@ -1,8 +1,13 @@
<!-- file: ks-lib/CHANGELOG.md -->
<!-- version: 52 -->
<!-- version: 53 -->
# CHANGELOG — ks-lib
## `0.5.1-pre.008`
- retire la dépendance `ts-rs`, les dérivations/attributs TS-RS et les bindings TypeScript générés historiques de `ks-lib` ;
- conserve inchangés les contrats Rust de décodage, matérialisation, exécution et modèles : toute exposition TypeScript appartient désormais à un DTO/wrapper de l'application consommatrice.
## `0.5.1-pre.003`
- migre les 255 identités runtime/persistables effectivement présentes de `kb-lib.decoder.*`, `kb-lib.executor.*` et `kb-lib.materializer.*` vers `ks-lib-decoder.*`, `ks-lib-executor.*` et `ks-lib-materializer.*` ;

View File

@@ -1,5 +1,5 @@
# file: ks-lib/Cargo.toml
# version: 16
# version: 17
[package]
name = "ks-lib"
@@ -47,7 +47,6 @@ spl-token-confidential-transfer-proof-extraction.workspace = true
spl-token-interface.workspace = true
spl-memo-interface.workspace = true
tracing.workspace = true
ts-rs.workspace = true
wincode.workspace = true
[dev-dependencies]

View File

@@ -1,5 +1,5 @@
<!-- file: ks-lib/README.md -->
<!-- version: 30 -->
<!-- version: 31 -->
# ks-lib
@@ -65,6 +65,8 @@ Linventaire audité comprend 25 composants nommés : onze matérialisateurs a
`ks-lib` ne sélectionne aucun endpoint, ne lit pas directement un RPC, ne persiste aucune donnée, ne gère pas les secrets de wallet et ne soumet aucune transaction.
Depuis `0.5.1-pre.008`, `ks-lib` ne dépend plus de TS-RS et ne génère plus de bindings TypeScript. Ses contrats Rust restent généralistes ; une application Tauri qui doit exposer une partie de ces contrats définit un DTO/wrapper applicatif explicite.
## Surface publique principale
- contrats `DcApi*` et décodeurs concrets `Dc*Decoder` ;

View File

@@ -1,5 +1,5 @@
<!-- file: ks-lib/USAGE.md -->
<!-- version: 17 -->
<!-- version: 18 -->
# Utilisation de ks-lib
@@ -16,6 +16,8 @@ ks-lib = { path = "../ks-lib" }
Toutes les fonctions retournant `ks_core::Result<T>` utilisent le contrat derreur structuré du workspace.
`ks-lib` n'est pas une frontière TypeScript : depuis `0.5.1-pre.008`, la crate ne dépend plus de TS-RS et ne produit plus de bindings. Les applications exposent uniquement leurs wrappers/DTO propres.
## Décodage contextualisé
`DcApiInstructionDecoder` définit la reconnaissance et le décodage dune instruction contextualisée. Les décodeurs concrets sont des valeurs sans état.

View File

@@ -1,17 +1,11 @@
// file: ks-lib/src/executor/api/execution.rs
// version: 10
// version: 11
//! Typed execution plans, policies and result contracts.
use ts_rs::TS; // rust-rules: derive-import
/// Exact capability returned for one program operation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "status", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionCapability.ts"
)]
pub enum ExApiExecutionCapability {
/// The operation is implemented by the executor.
Supported {
@@ -51,12 +45,8 @@ impl crate::ExApiExecutionCapability {
}
/// Solana cluster expected by an execution plan.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionCluster.ts"
)]
pub enum ExApiExecutionCluster {
/// Local validator cluster.
Localnet,
@@ -101,11 +91,7 @@ impl<'de> serde::Deserialize<'de> for crate::ExApiExecutionCluster {
}
/// Cluster restrictions attached to an execution plan.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionClusterPolicy.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiExecutionClusterPolicy {
/// Cluster that the RPC endpoint must report.
pub expected_cluster: crate::ExApiExecutionCluster,
@@ -126,12 +112,8 @@ impl std::default::Default for crate::ExApiExecutionClusterPolicy {
}
/// Simulation requirement attached to an execution plan.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionSimulationPolicy.ts"
)]
pub enum ExApiExecutionSimulationPolicy {
/// Simulation must succeed before signing or sending.
Required,
@@ -140,12 +122,8 @@ pub enum ExApiExecutionSimulationPolicy {
}
/// Blockhash source required when a transaction is assembled.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionBlockhashKind.ts"
)]
pub enum ExApiExecutionBlockhashKind {
/// Fetch a recent blockhash and enforce a bounded age.
Latest,
@@ -154,11 +132,7 @@ pub enum ExApiExecutionBlockhashKind {
}
/// Blockhash or durable nonce policy attached to an execution plan.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionBlockhashPolicy.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiExecutionBlockhashPolicy {
/// Selected blockhash source.
pub kind: crate::ExApiExecutionBlockhashKind,
@@ -182,11 +156,7 @@ impl std::default::Default for crate::ExApiExecutionBlockhashPolicy {
}
/// Explicit cost ceilings attached to an execution plan.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionCostLimit.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiExecutionCostLimit {
/// Maximum lamports that operation instructions may transfer or lock.
pub max_spend_lamports: std::option::Option<u64>,
@@ -207,11 +177,7 @@ impl std::default::Default for crate::ExApiExecutionCostLimit {
}
/// Post-execution replay validation policy.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/PostExecutionValidationPolicy.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiPostExecutionValidationPolicy {
/// Whether the sent signature must be inserted into canonical storage.
pub canonical_insert_required: bool,
@@ -235,11 +201,7 @@ impl std::default::Default for crate::ExApiPostExecutionValidationPolicy {
}
/// Conservative policy carried from intent creation to transaction assembly.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionPolicy.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiExecutionPolicy {
/// Cluster restrictions.
pub cluster: crate::ExApiExecutionClusterPolicy,
@@ -272,11 +234,7 @@ impl std::default::Default for crate::ExApiExecutionPolicy {
}
/// One account required by a planned instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/PlannedAccount.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiPlannedAccount {
/// Account public key.
pub pubkey: crate::MdPubkey,
@@ -287,11 +245,7 @@ pub struct ExApiPlannedAccount {
}
/// One fully encoded instruction in an execution plan.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/PlannedInstruction.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiPlannedInstruction {
/// Target program id.
pub program_id: crate::MdProgramId,
@@ -304,11 +258,7 @@ pub struct ExApiPlannedInstruction {
}
/// Signer required before transaction assembly.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/RequiredSigner.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiRequiredSigner {
/// Signer public key.
pub pubkey: crate::MdPubkey,
@@ -317,11 +267,7 @@ pub struct ExApiRequiredSigner {
}
/// Typed execution plan produced before transaction assembly.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/PreparedExecutionPlan.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiPreparedExecutionPlan {
/// Stable executor crate name.
pub executor_name: std::string::String,
@@ -346,11 +292,7 @@ pub struct ExApiPreparedExecutionPlan {
}
/// Result returned by a transaction simulation adapter.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionSimulationResult.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiExecutionSimulationResult {
/// Whether an RPC simulation call was actually performed.
pub simulated: bool,
@@ -386,11 +328,7 @@ pub struct ExApiExecutionSimulationResult {
}
/// Result returned after an adapter submits a signed transaction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionSendResult.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiExecutionSendResult {
/// Cluster used for submission.
pub cluster: crate::ExApiExecutionCluster,
@@ -401,12 +339,8 @@ pub struct ExApiExecutionSendResult {
}
/// Confirmation state returned by an execution confirmation adapter.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionConfirmationStatus.ts"
)]
pub enum ExApiExecutionConfirmationStatus {
/// The transaction was observed at processed commitment.
Processed,
@@ -423,11 +357,7 @@ pub enum ExApiExecutionConfirmationStatus {
}
/// Result returned after waiting for transaction confirmation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/ExecutionConfirmationResult.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiExecutionConfirmationResult {
/// Cluster queried for confirmation.
pub cluster: crate::ExApiExecutionCluster,
@@ -446,11 +376,7 @@ pub struct ExApiExecutionConfirmationResult {
}
/// Diagnostic produced by post-execution canonical replay validation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/execution/PostExecutionDiagnostic.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExApiPostExecutionDiagnostic {
/// Executed transaction signature.
pub signature: crate::MdSignature,

View File

@@ -1,16 +1,10 @@
// file: ks-lib/src/executor/api/executor.rs
// version: 5
// version: 6
//! Shared execution contract and neutral request models.
use ts_rs::TS; // rust-rules: derive-import
/// Support level returned by an executor for a requested operation.
#[derive(Clone, Copy, Debug, Eq, PartialEq, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/executor/ExecutionSupport.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ExApiExecutionSupport {
/// The executor cannot handle the request.
No,
@@ -21,11 +15,7 @@ pub enum ExApiExecutionSupport {
}
/// Generic request used before protocol-specific execution models are introduced.
#[derive(Clone, Debug, Eq, PartialEq, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/executor/ExecutionRequest.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ExApiExecutionRequest {
/// Target program id.
pub program_id: crate::MdProgramId,
@@ -36,11 +26,7 @@ pub struct ExApiExecutionRequest {
}
/// Neutral execution plan placeholder produced by executor crates.
#[derive(Clone, Debug, Eq, PartialEq, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/api/executor/ExecutionPlan.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ExApiExecutionPlan {
/// Stable executor crate name.
pub executor_name: std::string::String,

View File

@@ -1,10 +1,8 @@
// file: ks-lib/src/executor/metadata/metaplex_token_metadata/intent.rs
// version: 11
// version: 12
//! Typed current and deprecated Metaplex Token Metadata execution intents.
use ts_rs::TS; // rust-rules: derive-import
/// Stable operation code for the current Create wrapper, discriminator 42.
pub const EX_METAPLEX_TOKEN_METADATA_CREATE_OPERATION: &str =
"metadata.metaplex_token_metadata.create";
@@ -164,12 +162,8 @@ pub const EX_METAPLEX_TOKEN_METADATA_SUPPORTED_OPERATION_CODES: &[&str] = &[
];
/// One current or explicitly deprecated Metaplex Token Metadata operation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/metaplex_token_metadata/intent/ExMetaplexTokenMetadataOperation.ts"
)]
pub enum ExMetaplexTokenMetadataOperation {
/// Build the current Create wrapper with `CreateArgs::V1`.
Create {
@@ -190,7 +184,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Optional SPL Token or Token-2022 program account.
spl_token_program: std::option::Option<crate::MdProgramId>,
/// Official Metaplex create arguments.
#[ts(type = "unknown")]
create_args: mpl_token_metadata::types::CreateArgs,
},
/// Build the current Update wrapper as the update authority.
@@ -210,7 +203,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Optional Token Authorization Rules account.
authorization_rules: std::option::Option<crate::MdPubkey>,
/// Official Metaplex update arguments. Only `AsUpdateAuthorityV2` is accepted in this prerelease.
#[ts(type = "unknown")]
update_args: mpl_token_metadata::types::UpdateArgs,
},
/// Build the obsolete PuffMetadata instruction retained for compatibility workflows.
@@ -252,7 +244,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Optional canonical collection master edition PDA.
collection_master_edition: std::option::Option<crate::MdPubkey>,
/// Official unified verification variant.
#[ts(type = "unknown")]
verification_args: mpl_token_metadata::types::VerificationArgs,
},
/// Build the current unified Unverify wrapper for a creator or collection.
@@ -268,7 +259,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Optional canonical collection metadata PDA.
collection_metadata: std::option::Option<crate::MdPubkey>,
/// Official unified verification variant.
#[ts(type = "unknown")]
verification_args: mpl_token_metadata::types::VerificationArgs,
},
/// Build obsolete SetCollectionSize retained for compatibility workflows.
@@ -302,7 +292,6 @@ pub enum ExMetaplexTokenMetadataOperation {
master_edition_token: std::option::Option<crate::MdPubkey>,
edition_marker: std::option::Option<crate::MdPubkey>,
token_record: std::option::Option<crate::MdPubkey>,
#[ts(type = "unknown")]
burn_args: mpl_token_metadata::types::BurnArgs,
},
#[allow(missing_docs)]
@@ -319,7 +308,6 @@ pub enum ExMetaplexTokenMetadataOperation {
spl_token_program: std::option::Option<crate::MdProgramId>,
authorization_rules_program: std::option::Option<crate::MdProgramId>,
authorization_rules: std::option::Option<crate::MdPubkey>,
#[ts(type = "unknown")]
delegate_args: mpl_token_metadata::types::DelegateArgs,
},
#[allow(missing_docs)]
@@ -336,7 +324,6 @@ pub enum ExMetaplexTokenMetadataOperation {
spl_token_program: std::option::Option<crate::MdProgramId>,
authorization_rules_program: std::option::Option<crate::MdProgramId>,
authorization_rules: std::option::Option<crate::MdPubkey>,
#[ts(type = "unknown")]
revoke_args: mpl_token_metadata::types::RevokeArgs,
},
#[allow(missing_docs)]
@@ -352,7 +339,6 @@ pub enum ExMetaplexTokenMetadataOperation {
spl_token_program: std::option::Option<crate::MdProgramId>,
authorization_rules_program: std::option::Option<crate::MdProgramId>,
authorization_rules: std::option::Option<crate::MdPubkey>,
#[ts(type = "unknown")]
lock_args: mpl_token_metadata::types::LockArgs,
},
#[allow(missing_docs)]
@@ -368,7 +354,6 @@ pub enum ExMetaplexTokenMetadataOperation {
spl_token_program: std::option::Option<crate::MdProgramId>,
authorization_rules_program: std::option::Option<crate::MdProgramId>,
authorization_rules: std::option::Option<crate::MdPubkey>,
#[ts(type = "unknown")]
unlock_args: mpl_token_metadata::types::UnlockArgs,
},
#[allow(missing_docs)]
@@ -386,7 +371,6 @@ pub enum ExMetaplexTokenMetadataOperation {
authority: crate::MdPubkey,
authorization_rules_program: std::option::Option<crate::MdProgramId>,
authorization_rules: std::option::Option<crate::MdPubkey>,
#[ts(type = "unknown")]
transfer_args: mpl_token_metadata::types::TransferArgs,
},
#[allow(missing_docs)]
@@ -619,7 +603,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Account `rent` from the official IDL contract.
rent: crate::MdPubkey,
/// Official Metaplex instruction arguments.
#[ts(type = "unknown")]
args: mpl_token_metadata::types::MintNewEditionFromMasterEditionViaTokenArgs,
},
/// Build deprecated Utilize, retained for explicit compatibility workflows.
@@ -651,7 +634,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Account `burner` from the official IDL contract.
burner: crate::MdPubkey,
/// Official Metaplex instruction arguments.
#[ts(type = "unknown")]
args: mpl_token_metadata::instructions::UtilizeInstructionArgs,
},
/// Build deprecated ApproveUseAuthority, retained for explicit compatibility workflows.
@@ -683,7 +665,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Account `rent` from the official IDL contract.
rent: crate::MdPubkey,
/// Official Metaplex instruction arguments.
#[ts(type = "unknown")]
args: mpl_token_metadata::instructions::ApproveUseAuthorityInstructionArgs,
},
/// Build deprecated RevokeUseAuthority, retained for explicit compatibility workflows.
@@ -780,7 +761,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Optional authority from the current SDK contract.
authority: std::option::Option<crate::MdPubkey>,
/// Official Metaplex instruction arguments.
#[ts(type = "unknown")]
args: mpl_token_metadata::instructions::TransferOutOfEscrowInstructionArgs,
},
/// Build the current Mint instruction.
@@ -816,7 +796,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Optional Token Authorization Rules account in the current SDK contract.
authorization_rules: std::option::Option<crate::MdPubkey>,
/// Official Metaplex instruction arguments.
#[ts(type = "unknown")]
args: mpl_token_metadata::types::MintArgs,
},
/// Build the current Migrate instruction.
@@ -879,7 +858,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Optional Token Authorization Rules account in the current SDK contract.
authorization_rules: std::option::Option<crate::MdPubkey>,
/// Official Metaplex instruction arguments.
#[ts(type = "unknown")]
args: mpl_token_metadata::types::UseArgs,
},
/// Build the current Collect instruction.
@@ -928,7 +906,6 @@ pub enum ExMetaplexTokenMetadataOperation {
/// Account `systemProgram` from the official IDL contract.
system_program: crate::MdPubkey,
/// Official Metaplex instruction arguments.
#[ts(type = "unknown")]
args: mpl_token_metadata::types::PrintArgs,
},
/// Build the current Resize instruction.
@@ -1027,11 +1004,7 @@ impl crate::ExMetaplexTokenMetadataOperation {
}
/// Complete typed intent accepted by the Metaplex Token Metadata executor.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/metaplex_token_metadata/intent/ExMetaplexTokenMetadataExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExMetaplexTokenMetadataExecutionIntent {
/// Stable caller-provided identifier used for logs and replay correlation.
pub intent_id: std::string::String,

View File

@@ -1,18 +1,12 @@
// file: ks-lib/src/executor/metadata/solana_program_metadata/intent.rs
// version: 2
// version: 3
//! Typed intents for the Solana Program Metadata executor.
use ts_rs::TS; // rust-rules: derive-import
/// Encoding written to a Solana Program Metadata account.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[repr(u8)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmEncoding.ts"
)]
pub enum ExMetadataSpmEncoding {
/// No encoding declaration.
None = 0,
@@ -32,13 +26,9 @@ impl crate::ExMetadataSpmEncoding {
}
/// Compression written to a Solana Program Metadata account.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[repr(u8)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmCompression.ts"
)]
pub enum ExMetadataSpmCompression {
/// No compression declaration.
None = 0,
@@ -56,13 +46,9 @@ impl crate::ExMetadataSpmCompression {
}
/// Structured format written to a Solana Program Metadata account.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[repr(u8)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmFormat.ts"
)]
pub enum ExMetadataSpmFormat {
/// No structured format declaration.
None = 0,
@@ -82,13 +68,9 @@ impl crate::ExMetadataSpmFormat {
}
/// On-chain data source written to a Solana Program Metadata account.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[repr(u8)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmDataSource.ts"
)]
pub enum ExMetadataSpmDataSource {
/// Direct on-chain bytes.
Direct = 0,
@@ -106,12 +88,8 @@ impl crate::ExMetadataSpmDataSource {
}
/// Exact inline content accepted by `Initialize` and `SetData`.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "source", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmDataInput.ts"
)]
pub enum ExMetadataSpmDataInput {
/// Direct on-chain bytes.
Direct {
@@ -148,12 +126,8 @@ impl crate::ExMetadataSpmDataInput {
}
/// Source used by the `Write` instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "source", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmWriteSource.ts"
)]
pub enum ExMetadataSpmWriteSource {
/// Inline bytes placed after the offset argument.
Inline {
@@ -168,12 +142,8 @@ pub enum ExMetadataSpmWriteSource {
}
/// Source used by the `SetData` instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "source", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmSetDataSource.ts"
)]
pub enum ExMetadataSpmSetDataSource {
/// Runtime-supported three-byte variant that preserves current data bytes.
PreserveExisting,
@@ -192,11 +162,7 @@ pub enum ExMetadataSpmSetDataSource {
}
/// Optional program-upgrade-authority validation context.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmProgramContext.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExMetadataSpmProgramContext {
/// Executable program account.
pub program: crate::MdPubkey,
@@ -205,12 +171,8 @@ pub struct ExMetadataSpmProgramContext {
}
/// One exact Solana Program Metadata operation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmOperation.ts"
)]
pub enum ExMetadataSpmOperation {
/// Write bytes to a Buffer account.
Write {
@@ -452,11 +414,7 @@ impl crate::ExMetadataSpmOperation {
}
/// Complete Solana Program Metadata execution intent.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/metadata/solana_program_metadata/intent/ExMetadataSpmExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExMetadataSpmExecutionIntent {
/// Caller-provided correlation identifier.
pub intent_id: std::string::String,

View File

@@ -1,17 +1,11 @@
// file: ks-lib/src/executor/safety/evaluation.rs
// version: 4
// version: 5
//! Safety checks applied before simulation, signing or sending.
use ts_rs::TS; // rust-rules: derive-import
/// Safety decision returned before continuing an execution stage.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/safety/evaluation/ExSafetyDecision.ts"
)]
pub enum ExSafetyDecision {
/// The plan is not allowed to continue.
Deny,
@@ -22,11 +16,7 @@ pub enum ExSafetyDecision {
}
/// One stable safety policy violation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/safety/evaluation/ExSafetyViolation.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSafetyViolation {
/// Stable violation code.
pub code: std::string::String,
@@ -35,11 +25,7 @@ pub struct ExSafetyViolation {
}
/// Complete safety evaluation for one execution stage.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/safety/evaluation/ExSafetyEvaluation.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSafetyEvaluation {
/// Aggregate decision.
pub decision: crate::ExSafetyDecision,

View File

@@ -1,10 +1,8 @@
// file: ks-lib/src/executor/solana/core/intent.rs
// version: 3
// version: 4
//! Typed Solana core execution intents.
use ts_rs::TS; // rust-rules: derive-import
/// Stable operation code for a System Program lamport transfer.
pub const EX_SOLANA_CORE_SYSTEM_TRANSFER_OPERATION: &str = "solana.core.system.transfer";
/// Stable operation code for a bounded batch of System Program transfers.
@@ -412,11 +410,7 @@ pub const EX_SOLANA_CORE_OPERATION_CODES: [&str; 109] = [
];
/// One destination in a System Program multi-transfer.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreSystemTransferRecipient.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreSystemTransferRecipient {
/// Recipient account.
pub to: crate::MdPubkey,
@@ -425,11 +419,7 @@ pub struct ExSolanaCoreSystemTransferRecipient {
}
/// One Ed25519 signature verification offset record.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreEd25519VerificationOffsets.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreEd25519VerificationOffsets {
/// Offset to the 64-byte signature.
pub signature_offset: u16,
@@ -448,11 +438,7 @@ pub struct ExSolanaCoreEd25519VerificationOffsets {
}
/// One secp256k1 signature verification offset record.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreSecp256k1VerificationOffsets.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreSecp256k1VerificationOffsets {
/// Offset to the 64-byte signature followed by its one-byte recovery id.
pub signature_offset: u16,
@@ -471,11 +457,7 @@ pub struct ExSolanaCoreSecp256k1VerificationOffsets {
}
/// One secp256r1 signature verification offset record.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreSecp256r1VerificationOffsets.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreSecp256r1VerificationOffsets {
/// Offset to the compact 64-byte signature.
pub signature_offset: u16,
@@ -494,12 +476,8 @@ pub struct ExSolanaCoreSecp256r1VerificationOffsets {
}
/// Stake authority role changed by an authorize instruction.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreStakeAuthorizationKind.ts"
)]
pub enum ExSolanaCoreStakeAuthorizationKind {
/// Staker authority controlling delegation and stake movement.
Staker,
@@ -517,12 +495,8 @@ impl crate::ExSolanaCoreStakeAuthorizationKind {
}
/// Vote authority role changed by an authorize instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "kind", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreVoteAuthorizationKind.ts"
)]
pub enum ExSolanaCoreVoteAuthorizationKind {
/// Vote authority using an Ed25519 public key.
Voter,
@@ -538,12 +512,8 @@ pub enum ExSolanaCoreVoteAuthorizationKind {
}
/// Vote v2 commission category.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreVoteCommissionKind.ts"
)]
pub enum ExSolanaCoreVoteCommissionKind {
/// Inflation-reward commission.
InflationRewards,
@@ -563,11 +533,7 @@ impl crate::ExSolanaCoreVoteCommissionKind {
}
/// One lockout entry used by Vote-state and tower synchronization instructions.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreVoteLockout.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreVoteLockout {
/// Voted slot.
pub slot: u64,
@@ -576,11 +542,7 @@ pub struct ExSolanaCoreVoteLockout {
}
/// One key entry serialized in the Config Program `ConfigKeys` short vector.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreConfigKey.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreConfigKey {
/// Public key stored in the Config Program key list.
pub pubkey: crate::MdPubkey,
@@ -589,11 +551,7 @@ pub struct ExSolanaCoreConfigKey {
}
/// Optional context-state accounts attached to a ZK ElGamal proof verification.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreZkElGamalContextState.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreZkElGamalContextState {
/// Preallocated writable context-state account.
pub account: crate::MdPubkey,
@@ -602,12 +560,8 @@ pub struct ExSolanaCoreZkElGamalContextState {
}
/// Official proof kinds accepted by the native ZK ElGamal Proof program.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreZkElGamalProofType.ts"
)]
pub enum ExSolanaCoreZkElGamalProofType {
/// Zero-ciphertext proof.
ZeroCiphertext,
@@ -732,12 +686,8 @@ impl crate::ExSolanaCoreZkElGamalProofType {
}
/// Typed Solana core operation arguments.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreOperation.ts"
)]
pub enum ExSolanaCoreOperation {
/// Transfer lamports between System Program accounts.
SystemTransfer {
@@ -2449,11 +2399,7 @@ impl crate::ExSolanaCoreOperation {
}
/// Complete typed intent accepted by the Solana core executor.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/solana/core/intent/ExSolanaCoreExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSolanaCoreExecutionIntent {
/// Stable caller-provided identifier used for logs and replay correlation.
pub intent_id: std::string::String,

View File

@@ -1,10 +1,8 @@
// file: ks-lib/src/executor/spl/associated_token_account/intent.rs
// version: 6
// version: 7
//! Typed SPL Associated Token Account execution intents.
use ts_rs::TS; // rust-rules: derive-import
/// Stable operation code for strict ATA creation.
pub const EX_SPL_ATA_CREATE_OPERATION: &str = "spl.associated_token_account.create";
/// Stable operation code for idempotent ATA creation or reuse.
@@ -20,18 +18,13 @@ pub const EX_SPL_ATA_SUPPORTED_OPERATION_CODES: &[&str] = &[
];
/// Exact Token Program targeted by ATA derivation and runtime CPIs.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/associated_token_account/intent/ExSplAssociatedTokenProgram.ts"
)]
pub enum ExSplAssociatedTokenProgram {
/// Classic SPL Token program.
Classic,
/// Token-2022 program without extension-specific executor semantics.
#[serde(rename = "token_2022")]
#[ts(rename = "token_2022")]
Token2022,
}
@@ -46,12 +39,8 @@ impl crate::ExSplAssociatedTokenProgram {
}
/// One officially constructible ATA operation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/associated_token_account/intent/ExSplAssociatedTokenAccountOperation.ts"
)]
pub enum ExSplAssociatedTokenAccountOperation {
/// Strictly create an absent canonical ATA.
Create {
@@ -109,11 +98,7 @@ impl crate::ExSplAssociatedTokenAccountOperation {
}
/// Complete typed intent accepted by the ATA executor.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/associated_token_account/intent/ExSplAssociatedTokenAccountExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplAssociatedTokenAccountExecutionIntent {
/// Stable caller-provided identifier used for logs and replay correlation.
pub intent_id: std::string::String,

View File

@@ -1,22 +1,16 @@
// file: ks-lib/src/executor/spl/elgamal_registry/intent.rs
// version: 4
// version: 5
//! Typed intents for the SPL ElGamal public-key registry.
use ts_rs::TS; // rust-rules: derive-import
/// Stable operation code for registry creation.
pub const EX_SPL_ELGAMAL_REGISTRY_CREATE_OPERATION: &str = "spl.elgamal_registry.create_registry";
/// Stable operation code for registry update.
pub const EX_SPL_ELGAMAL_REGISTRY_UPDATE_OPERATION: &str = "spl.elgamal_registry.update_registry";
/// Exact location of the public-key validity proof.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "location", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/elgamal_registry/intent/ExSplElgamalRegistryProofLocation.ts"
)]
pub enum ExSplElgamalRegistryProofLocation {
/// A pre-verified proof context-state account.
ContextStateAccount {
@@ -31,12 +25,8 @@ pub enum ExSplElgamalRegistryProofLocation {
}
/// Typed registry operation.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/elgamal_registry/intent/ExSplElgamalRegistryOperation.ts"
)]
pub enum ExSplElgamalRegistryOperation {
/// Create the deterministic registry PDA for one owner.
CreateRegistry {
@@ -69,11 +59,7 @@ impl crate::ExSplElgamalRegistryOperation {
}
/// Complete typed execution intent.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/elgamal_registry/intent/ExSplElgamalRegistryExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplElgamalRegistryExecutionIntent {
/// Caller-provided correlation identifier.
pub intent_id: std::string::String,

View File

@@ -1,10 +1,8 @@
// file: ks-lib/src/executor/spl/memo/intent.rs
// version: 3
// version: 4
//! Typed SPL Memo execution intents.
use ts_rs::TS; // rust-rules: derive-import
/// Stable operation code for adding one SPL Memo annotation.
pub const EX_SPL_MEMO_ADD_MEMO_OPERATION: &str = "spl.memo.add_memo";
/// Conservative UTF-8 payload bound used before transaction assembly.
@@ -13,12 +11,8 @@ pub const EX_SPL_MEMO_MAX_MESSAGE_BYTES: usize = 566;
pub const EX_SPL_MEMO_MAX_SIGNERS: usize = 32;
/// Exact SPL Memo program generation.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/memo/intent/ExSplMemoGeneration.ts"
)]
pub enum ExSplMemoGeneration {
/// Historical v1 program, whose runtime ignores supplied accounts.
V1,
@@ -49,23 +43,15 @@ impl crate::ExSplMemoGeneration {
}
/// One ordered signer account supplied to the Memo instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/memo/intent/ExSplMemoSigner.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplMemoSigner {
/// Signer public key; duplicates are preserved in instruction order.
pub pubkey: crate::MdPubkey,
}
/// Typed SPL Memo operation arguments.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/memo/intent/ExSplMemoOperation.ts"
)]
pub enum ExSplMemoOperation {
/// Add one exact UTF-8 Memo payload with ordered readonly signer accounts.
AddMemo {
@@ -95,11 +81,7 @@ impl crate::ExSplMemoOperation {
}
/// Complete typed intent accepted by the SPL Memo executor.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/memo/intent/ExSplMemoExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplMemoExecutionIntent {
/// Stable caller-provided identifier used for logs and replay correlation.
pub intent_id: std::string::String,

View File

@@ -1,10 +1,8 @@
// file: ks-lib/src/executor/spl/token/intent.rs
// version: 6
// version: 7
//! Typed classic SPL Token execution intents.
use ts_rs::TS; // rust-rules: derive-import
/// Stable operation code for mint initialization through `InitializeMint2`.
pub const EX_SPL_TOKEN_INITIALIZE_MINT_OPERATION: &str = "spl.token.initialize_mint";
/// Stable operation code for token-account initialization through `InitializeAccount3`.
@@ -85,22 +83,14 @@ pub const EX_SPL_TOKEN_SUPPORTED_OPERATION_CODES: &[&str] = &[
];
/// Exact unsigned on-chain amount represented as a decimal JSON string.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token/intent/ExSplClassicTokenAmount.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplClassicTokenAmount(
/// Canonical unsigned decimal representation.
pub std::string::String,
);
/// Ordered simple or multisig authority supplied to an instruction builder.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token/intent/ExSplClassicTokenAuthority.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplClassicTokenAuthority {
/// Authority account. It signs only when `multisig_signers` is empty.
pub authority: crate::MdPubkey,
@@ -109,12 +99,8 @@ pub struct ExSplClassicTokenAuthority {
}
/// Authority domain used by `SetAuthority`.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token/intent/ExSplClassicTokenAuthorityType.ts"
)]
pub enum ExSplClassicTokenAuthorityType {
/// Mint authority.
MintTokens,
@@ -127,12 +113,8 @@ pub enum ExSplClassicTokenAuthorityType {
}
/// One officially constructible non-batch instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "instruction", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token/intent/ExSplClassicTokenSingleOperation.ts"
)]
pub enum ExSplClassicTokenSingleOperation {
/// Initialize a mint with the current no-Rent builder.
InitializeMint {
@@ -407,12 +389,8 @@ impl crate::ExSplClassicTokenSingleOperation {
}
/// Top-level SPL Token operation, including the recent bounded Batch builder.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token/intent/ExSplClassicTokenOperation.ts"
)]
pub enum ExSplClassicTokenOperation {
/// Build one non-batch instruction.
Instruction {
@@ -446,11 +424,7 @@ impl crate::ExSplClassicTokenOperation {
}
/// Complete typed intent accepted by the classic SPL Token executor.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token/intent/ExSplClassicTokenExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplClassicTokenExecutionIntent {
/// Stable caller-provided identifier used for logs and replay correlation.
pub intent_id: std::string::String,

View File

@@ -1,10 +1,8 @@
// file: ks-lib/src/executor/spl/token_2022/confidential.rs
// version: 10
// version: 11
//! Audited Confidential Transfer execution contracts.
use ts_rs::TS; // rust-rules: derive-import
/// Maximum number of proof references accepted by one confidential operation.
pub const EX_SPL_TOKEN_2022_MAX_CONFIDENTIAL_PROOF_REFERENCES: usize = 5;
/// Exact byte length of an ElGamal public key accepted from callers.
@@ -27,11 +25,7 @@ pub const EX_SPL_TOKEN_2022_CONFIDENTIAL_TRANSFER_WITH_FEE_INSTRUCTION_DATA_BYTE
2 + EX_SPL_TOKEN_2022_CONFIDENTIAL_TRANSFER_WITH_FEE_PAYLOAD_BYTES;
/// Caller-generated ElGamal public key encoded as lowercase or uppercase hexadecimal.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenElGamalPubkey.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplTokenElGamalPubkey(pub std::string::String);
impl ExSplTokenElGamalPubkey {
@@ -56,11 +50,7 @@ impl ExSplTokenElGamalPubkey {
}
/// Caller-generated decryptable balance encoded as hexadecimal bytes.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenDecryptableBalance.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplTokenDecryptableBalance(pub std::string::String);
impl ExSplTokenDecryptableBalance {
@@ -86,11 +76,7 @@ impl ExSplTokenDecryptableBalance {
}
/// Caller-generated ElGamal ciphertext encoded as hexadecimal bytes.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenElGamalCiphertext.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplTokenElGamalCiphertext(pub std::string::String);
impl ExSplTokenElGamalCiphertext {
@@ -153,12 +139,8 @@ fn decode_hex_nibble(value: u8) -> Option<u8> {
}
/// Proof statement required by a Confidential Transfer operation.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenConfidentialProofKind.ts"
)]
pub enum ExSplTokenConfidentialProofKind {
/// ElGamal public-key validity.
PubkeyValidity,
@@ -183,12 +165,8 @@ pub enum ExSplTokenConfidentialProofKind {
}
/// Explicit source for one already-generated zero-knowledge proof statement.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case", tag = "mode")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenConfidentialProofLocation.ts"
)]
pub enum ExSplTokenConfidentialProofLocation {
/// Relative transaction offset of a separate ZK proof-program instruction.
InstructionOffset {
@@ -216,12 +194,8 @@ impl ExSplTokenConfidentialProofLocation {
}
/// One proof requirement paired with its explicit location.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "camelCase")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenConfidentialProofReference.ts"
)]
pub struct ExSplTokenConfidentialProofReference {
/// Exact proof statement required by the Token-2022 builder.
pub kind: ExSplTokenConfidentialProofKind,
@@ -230,12 +204,8 @@ pub struct ExSplTokenConfidentialProofReference {
}
/// Audited Confidential Transfer operation surface.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenConfidentialOperation.ts"
)]
pub enum ExSplTokenConfidentialOperation {
/// Initialize confidential-transfer mint configuration.
InitializeMint,
@@ -332,12 +302,8 @@ impl ExSplTokenConfidentialOperation {
}
/// Audited Confidential Mint/Burn operation surface.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenConfidentialMintBurnOperation.ts"
)]
pub enum ExSplTokenConfidentialMintBurnOperation {
/// Initialize the mint extension with supply encryption material.
InitializeMint,
@@ -395,12 +361,8 @@ impl ExSplTokenConfidentialMintBurnOperation {
}
/// Executor-readiness classification established by the Confidential Transfer audit.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/confidential/ExSplTokenConfidentialExecutorSupport.ts"
)]
pub enum ExSplTokenConfidentialExecutorSupport {
/// The builder needs only public fields and ordinary authorities.
PublicBuilderReady,

View File

@@ -1,10 +1,8 @@
// file: ks-lib/src/executor/spl/token_2022/intent.rs
// version: 28
// version: 29
//! Typed Token-2022 execution intents.
use ts_rs::TS; // rust-rules: derive-import
/// Stable operation code for mint initialization through `InitializeMint2`.
pub const EX_SPL_TOKEN_2022_INITIALIZE_MINT_OPERATION: &str = "spl.token_2022.initialize_mint";
/// Stable operation code for token-account initialization through `InitializeAccount3`.
@@ -357,33 +355,21 @@ pub const EX_SPL_TOKEN_2022_SUPPORTED_OPERATION_CODES: &[&str] = &[
];
/// Exact unsigned on-chain amount represented as a decimal JSON string.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplTokenAmount.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplTokenAmount(
/// Canonical unsigned decimal representation.
pub std::string::String,
);
/// Positive normal finite scaled-UI multiplier represented as a decimal JSON string.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplTokenMultiplier.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplTokenMultiplier(
/// Decimal representation parsed to the official `f64` wire contract.
pub std::string::String,
);
/// Ordered simple or multisig authority supplied to an instruction builder.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplTokenAuthority.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplTokenAuthority {
/// Authority account. It signs only when `multisig_signers` is empty.
pub authority: crate::MdPubkey,
@@ -392,12 +378,8 @@ pub struct ExSplTokenAuthority {
}
/// Authority domain used by `SetAuthority`.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplTokenAuthorityType.ts"
)]
pub enum ExSplTokenAuthorityType {
/// Mint authority.
MintTokens,
@@ -410,12 +392,8 @@ pub enum ExSplTokenAuthorityType {
}
/// Default state assigned to newly initialized Token-2022 accounts.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplTokenDefaultAccountState.ts"
)]
pub enum ExSplTokenDefaultAccountState {
/// Newly initialized accounts remain usable.
Initialized,
@@ -424,12 +402,8 @@ pub enum ExSplTokenDefaultAccountState {
}
/// Token-metadata field selected for an update.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(rename_all = "snake_case", tag = "kind", content = "key")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplTokenMetadataField.ts"
)]
pub enum ExSplTokenMetadataField {
/// Update the required name field.
Name,
@@ -442,12 +416,8 @@ pub enum ExSplTokenMetadataField {
}
/// One officially constructible non-batch instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "instruction", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplTokenSingleOperation.ts"
)]
pub enum ExSplTokenSingleOperation {
/// Initialize a mint with the current no-Rent builder.
InitializeMint {
@@ -1605,12 +1575,8 @@ impl crate::ExSplTokenSingleOperation {
}
/// Top-level SPL Token operation, including the recent bounded Batch builder.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
#[serde(tag = "operation", rename_all = "snake_case")]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplToken2022Operation.ts"
)]
pub enum ExSplToken2022Operation {
/// Build one non-batch instruction.
Instruction {
@@ -1644,11 +1610,7 @@ impl crate::ExSplToken2022Operation {
}
/// Complete typed intent accepted by the Token-2022 executor.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/executor/spl/token_2022/intent/ExSplToken2022ExecutionIntent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct ExSplToken2022ExecutionIntent {
/// Stable caller-provided identifier used for logs and replay correlation.
pub intent_id: std::string::String,

View File

@@ -1,16 +1,10 @@
// file: ks-lib/src/model/decoded.rs
// version: 6
// version: 7
//! Shared decoded protocol event model.
use ts_rs::TS; // rust-rules: derive-import
/// Source from which a decoded event was derived.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/decoded/EventSourceKind.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub enum MdEventSourceKind {
/// Top-level instruction.
Instruction,
@@ -33,11 +27,7 @@ pub enum MdEventSourceKind {
}
/// Confidence level for a decoded event.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/decoded/DecoderConfidence.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub enum MdDecoderConfidence {
/// Exact manual decode.
Exact,
@@ -56,11 +46,7 @@ pub enum MdDecoderConfidence {
}
/// Protocol-level decoded event produced by a decoder.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/decoded/DecodedProtocolEvent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MdDecodedProtocolEvent {
/// Transaction signature.
pub signature: crate::MdSignature,

View File

@@ -1,16 +1,10 @@
// file: ks-lib/src/model/materialized.rs
// version: 7
// version: 8
//! Shared materialized business event model.
use ts_rs::TS; // rust-rules: derive-import
/// Materialized event family.
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/materialized/MaterializedEventFamily.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub enum MdMaterializedEventFamily {
/// Trade materialization.
Trade,
@@ -63,11 +57,7 @@ pub enum MdMaterializedEventFamily {
}
/// Business-level materialized event placeholder.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/materialized/MaterializedEvent.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MdMaterializedEvent {
/// Source transaction signature.
pub signature: crate::MdSignature,

View File

@@ -1,56 +1,30 @@
// file: ks-lib/src/model/nomenclature.rs
// version: 6
// version: 7
//! Shared protocol, surface, and event nomenclature types.
use ts_rs::TS; // rust-rules: derive-import
/// Stable internal program code.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/nomenclature/ProgramCode.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdProgramCode(pub std::string::String);
/// Protocol family code, for example `raydium` or `meteora`.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/nomenclature/ProtocolCode.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdProtocolCode(pub std::string::String);
/// Concrete protocol surface code, for example `raydium_amm_v4`.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/nomenclature/SurfaceCode.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdSurfaceCode(pub std::string::String);
/// Event name without surface prefix.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/nomenclature/EventName.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdEventName(pub std::string::String);
/// Canonical event code in `<surface_code>.<event_name>` format.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/nomenclature/EventCode.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdEventCode(pub std::string::String);
/// High-level event family.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/nomenclature/EventFamily.ts"
)]
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub enum MdEventFamily {
/// Swap or buy/sell event.
Trade,

View File

@@ -1,16 +1,10 @@
// file: ks-lib/src/model/observation.rs
// version: 6
// version: 7
//! Shared program observation model.
use ts_rs::TS; // rust-rules: derive-import
/// Generic program observation derived from a Solana instruction.
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/observation/ProgramObservation.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
pub struct MdProgramObservation {
/// Transaction signature.
pub signature: crate::MdSignature,

View File

@@ -1,46 +1,26 @@
// file: ks-lib/src/model/solana.rs
// version: 6
// version: 7
//! Shared Solana primitive wrapper types.
use ts_rs::TS; // rust-rules: derive-import
/// Solana transaction signature.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(export, export_to = "../frontend/ts/bindings/ks_lib/model/solana/MdSignature.ts")]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdSignature(pub std::string::String);
/// Solana slot.
#[derive(
Clone,
Copy,
Debug,
Eq,
PartialEq,
Ord,
PartialOrd,
Hash,
serde::Deserialize,
serde::Serialize,
TS,
Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, serde::Deserialize, serde::Serialize,
)]
#[ts(export, export_to = "../frontend/ts/bindings/ks_lib/model/solana/MdSlot.ts")]
pub struct MdSlot(pub u64);
/// Solana program id.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(export, export_to = "../frontend/ts/bindings/ks_lib/model/solana/MdProgramId.ts")]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdProgramId(pub std::string::String);
/// Solana public key.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(export, export_to = "../frontend/ts/bindings/ks_lib/model/solana/MdPubkey.ts")]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdPubkey(pub std::string::String);
/// Stable top-level or inner instruction path.
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize, TS)]
#[ts(
export,
export_to = "../frontend/ts/bindings/ks_lib/model/solana/MdInstructionPath.ts"
)]
#[derive(Clone, Debug, Eq, PartialEq, Hash, serde::Deserialize, serde::Serialize)]
pub struct MdInstructionPath(pub std::string::String);