v0.5.1-pre.008
This commit is contained in:
@@ -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.*` ;
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!-- file: ks-lib/README.md -->
|
||||
<!-- version: 30 -->
|
||||
<!-- version: 31 -->
|
||||
|
||||
# ks-lib
|
||||
|
||||
@@ -65,6 +65,8 @@ L’inventaire 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` ;
|
||||
|
||||
@@ -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 d’erreur 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 d’une instruction contextualisée. Les décodeurs concrets sont des valeurs sans état.
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user