From a389dc6056de3502f4610582a915801c3aa9149b Mon Sep 17 00:00:00 2001 From: r4bbit <445106+0x-r4bbit@users.noreply.github.com> Date: Tue, 4 Aug 2026 19:21:29 +0200 Subject: [PATCH] refactor(modules/amm): rename swap_plan to swap_exact_in_plan Rename the swap-submission planning op for symmetry with the exact-in/exact-out split already applied to the quote ops (swap_exact_in_quote / swap_exact_out_quote): swap_plan -> swap_exact_in_plan, SwapPlanRequest -> SwapExactInPlanRequest, and the C export amm_swap_plan -> amm_swap_exact_in_plan (cbindgen header regenerated). The module's swapExactInput call site and trace are updated to match. --- modules/amm/ffi/include/amm_ffi.h | 2 +- modules/amm/ffi/src/api/mod.rs | 8 ++++---- modules/amm/ffi/src/api/request.rs | 2 +- modules/amm/ffi/src/api/swap.rs | 8 ++++---- modules/amm/ffi/src/ffi.rs | 8 ++++---- modules/amm/ffi/src/lib.rs | 10 +++++----- modules/amm/src/amm_module_impl.cpp | 8 ++++---- 7 files changed, 23 insertions(+), 23 deletions(-) diff --git a/modules/amm/ffi/include/amm_ffi.h b/modules/amm/ffi/include/amm_ffi.h index 8be6b27..e6c72d7 100644 --- a/modules/amm/ffi/include/amm_ffi.h +++ b/modules/amm/ffi/include/amm_ffi.h @@ -36,7 +36,7 @@ char *amm_swap_exact_in_quote(const char *request_json); char *amm_swap_exact_out_quote(const char *request_json); -char *amm_swap_plan(const char *request_json); +char *amm_swap_exact_in_plan(const char *request_json); char *amm_program_id(const char *request_json); diff --git a/modules/amm/ffi/src/api/mod.rs b/modules/amm/ffi/src/api/mod.rs index c8af9ef..9145ff2 100644 --- a/modules/amm/ffi/src/api/mod.rs +++ b/modules/amm/ffi/src/api/mod.rs @@ -22,8 +22,8 @@ use std::{error::Error, fmt}; pub use request::{ ConfigIdRequest, ContextRequest, PairIdsRequest, PairSnapshot, PlanRequest, PoolIdRequest, - PositionRequest, ProgramIdRequest, QuoteRequest, ResolvePoolRequest, SwapExactInQuoteRequest, - SwapExactOutQuoteRequest, SwapPairRequest, SwapPlanRequest, TokenIdsRequest, + PositionRequest, ProgramIdRequest, QuoteRequest, ResolvePoolRequest, SwapExactInPlanRequest, + SwapExactInQuoteRequest, SwapExactOutQuoteRequest, SwapPairRequest, TokenIdsRequest, }; use serde_json::Value; @@ -119,8 +119,8 @@ pub fn swap_exact_out_quote(request: SwapExactOutQuoteRequest) -> AmmResult { } /// Builds the `SwapExactInput` wallet submission for a token pair. -pub fn swap_plan(request: SwapPlanRequest) -> AmmResult { - swap::swap_plan(request).map_err(Into::into) +pub fn swap_exact_in_plan(request: SwapExactInPlanRequest) -> AmmResult { + swap::swap_exact_in_plan(request).map_err(Into::into) } /// Derives the AMM `ProgramId` (Image ID) from a deployed program binary. diff --git a/modules/amm/ffi/src/api/request.rs b/modules/amm/ffi/src/api/request.rs index de65d9b..fee626e 100644 --- a/modules/amm/ffi/src/api/request.rs +++ b/modules/amm/ffi/src/api/request.rs @@ -101,7 +101,7 @@ pub struct PoolIdRequest { #[derive(Clone, Debug, Deserialize, Eq, PartialEq)] #[serde(rename_all = "camelCase")] -pub struct SwapPlanRequest { +pub struct SwapExactInPlanRequest { pub amm_program_id: String, pub token_in_id: String, pub token_out_id: String, diff --git a/modules/amm/ffi/src/api/swap.rs b/modules/amm/ffi/src/api/swap.rs index 655aa6c..0ec2d5c 100644 --- a/modules/amm/ffi/src/api/swap.rs +++ b/modules/amm/ffi/src/api/swap.rs @@ -13,8 +13,8 @@ use serde_json::{json, Value}; use super::{ pair::{derive_pair, is_canonical_pair}, - PoolIdRequest, ProgramIdRequest, ResolvePoolRequest, SwapExactInQuoteRequest, - SwapExactOutQuoteRequest, SwapPairRequest, SwapPlanRequest, + PoolIdRequest, ProgramIdRequest, ResolvePoolRequest, SwapExactInPlanRequest, + SwapExactInQuoteRequest, SwapExactOutQuoteRequest, SwapPairRequest, }; use crate::account::{ account_id_from_hex, account_id_hex, decode_account, parse_program_id, program_id_bytes, @@ -271,7 +271,7 @@ pub(super) fn swap_exact_out_quote(request: SwapExactOutQuoteRequest) -> Result< /// order (vaults canonical, only the user's input holding signs) and the /// instruction words (`risc0_zkvm::serde` — the same encoding the guest /// decodes). Mirrors `plan.rs`'s `ready` output shape. -pub(super) fn swap_plan(request: SwapPlanRequest) -> Result { +pub(super) fn swap_exact_in_plan(request: SwapExactInPlanRequest) -> Result { let amm_program = parse_program_id(&request.amm_program_id)?; let token_in = account_id_from_hex(&request.token_in_id, "token in id")?; let token_out = account_id_from_hex(&request.token_out_id, "token out id")?; @@ -424,7 +424,7 @@ mod tests { .unwrap(); assert_eq!(pair, expected); - let plan = swap_plan(SwapPlanRequest { + let plan = swap_exact_in_plan(SwapExactInPlanRequest { amm_program_id: program, token_in_id: same.clone(), token_out_id: same, diff --git a/modules/amm/ffi/src/ffi.rs b/modules/amm/ffi/src/ffi.rs index 1b627be..d4c91df 100644 --- a/modules/amm/ffi/src/ffi.rs +++ b/modules/amm/ffi/src/ffi.rs @@ -7,8 +7,8 @@ use serde::{de::DeserializeOwned, Serialize}; use crate::api::{ self, AmmApiError, AmmResult, ConfigIdRequest, ContextRequest, PairIdsRequest, PlanRequest, - PoolIdRequest, ProgramIdRequest, QuoteRequest, ResolvePoolRequest, SwapExactInQuoteRequest, - SwapExactOutQuoteRequest, SwapPairRequest, SwapPlanRequest, TokenIdsRequest, + PoolIdRequest, ProgramIdRequest, QuoteRequest, ResolvePoolRequest, SwapExactInPlanRequest, + SwapExactInQuoteRequest, SwapExactOutQuoteRequest, SwapPairRequest, TokenIdsRequest, }; #[derive(Serialize)] @@ -133,8 +133,8 @@ pub extern "C" fn amm_swap_exact_out_quote(request_json: *const c_char) -> *mut } #[unsafe(no_mangle)] -pub extern "C" fn amm_swap_plan(request_json: *const c_char) -> *mut c_char { - call::(request_json, api::swap_plan) +pub extern "C" fn amm_swap_exact_in_plan(request_json: *const c_char) -> *mut c_char { + call::(request_json, api::swap_exact_in_plan) } #[unsafe(no_mangle)] diff --git a/modules/amm/ffi/src/lib.rs b/modules/amm/ffi/src/lib.rs index 81dba38..c5115b5 100644 --- a/modules/amm/ffi/src/lib.rs +++ b/modules/amm/ffi/src/lib.rs @@ -7,9 +7,9 @@ pub mod api; pub use api::{ config_id, context, pair_ids, plan, pool_id, program_id, quote, resolve_pool, - swap_exact_in_quote, swap_exact_out_quote, swap_pair, swap_plan, token_ids, AccountRead, - AmmApiError, AmmResponse, AmmResult, ConfigIdRequest, ContextRequest, PairIdsRequest, - PairSnapshot, PlanRequest, PoolIdRequest, PositionRequest, ProgramIdRequest, QuoteRequest, - ResolvePoolRequest, SwapExactInQuoteRequest, SwapExactOutQuoteRequest, SwapPairRequest, - SwapPlanRequest, TokenIdsRequest, WalletAccount, + swap_exact_in_plan, swap_exact_in_quote, swap_exact_out_quote, swap_pair, token_ids, + AccountRead, AmmApiError, AmmResponse, AmmResult, ConfigIdRequest, ContextRequest, + PairIdsRequest, PairSnapshot, PlanRequest, PoolIdRequest, PositionRequest, ProgramIdRequest, + QuoteRequest, ResolvePoolRequest, SwapExactInPlanRequest, SwapExactInQuoteRequest, + SwapExactOutQuoteRequest, SwapPairRequest, TokenIdsRequest, WalletAccount, }; diff --git a/modules/amm/src/amm_module_impl.cpp b/modules/amm/src/amm_module_impl.cpp index 92c1e73..3afb9e8 100644 --- a/modules/amm/src/amm_module_impl.cpp +++ b/modules/amm/src/amm_module_impl.cpp @@ -609,9 +609,9 @@ std::string AmmModuleImpl::swapExactInput(const std::string& def_a_hex, return {}; } - // amm_swap_plan resolves the pool, reorders holdings to the pool's canonical - // def order, encodes SwapExactInput, and returns a ready-to-submit plan. - const FfiResult planResult = call(amm_swap_plan, json{ + // amm_swap_exact_in_plan resolves the pool, reorders holdings to the pool's + // canonical def order, encodes SwapExactInput, and returns a ready-to-submit plan. + const FfiResult planResult = call(amm_swap_exact_in_plan, json{ {"ammProgramId", net.amm_program_id}, {"tokenInId", def_a_hex}, {"tokenOutId", def_b_hex}, @@ -623,7 +623,7 @@ std::string AmmModuleImpl::swapExactInput(const std::string& def_a_hex, {"deadlineMs", deadline_decimal}, }); if (!planResult.ok || jStr(planResult.value, "status") != "ready") { - AMM_TRACE("swapExactInput: FAIL amm_swap_plan not ready"); + AMM_TRACE("swapExactInput: FAIL amm_swap_exact_in_plan not ready"); return {}; } const json plan = planResult.value;