mirror of
https://github.com/logos-blockchain/lez-programs.git
synced 2026-08-25 22:21:16 +00:00
Move the liquidity token selector off the module's stateful newPositionContext
onto a lean, app-owned surface, and let users add unlisted tokens by id.
FFI: new stateless `resolve_tokens` op — the app passes an explicit id set and
gets uniform selector rows `{ definitionId (base58), name, totalSupply, holdingId,
balance }`, held tokens first, unresolvable/non-fungible ids omitted. Reuses the
per-token definition/holding logic from `context`, without the network/status
envelope. Unit-tested.
Module: `resolveTokens(request, wallet_open)` reads the definitions + wallet and
calls the op (ids wrapped in a map — the universal-module glue only marshals
map/scalar inputs, not bare lists).
Backend: the app owns the id set — configured tokens (TOKENS_CONFIG) plus the
user's persisted custom ids. Held-but-unlisted tokens are NOT auto-listed (the
list mirrors the swap side); a token you hold still shows its balance once listed.
`addCustomToken` validates a pasted id by resolving its on-chain definition, then
persists it to CUSTOM_TOKEN_CONFIG (defaulting to the per-user app-data store, with
a HOME fallback so persistence never silently no-ops on an empty path).
QML: NewPositionForm/LiquidityPage take tokens/walletReady/loadingTokens as inputs
and drive selection + custom-token resolution through the backend; dropped all
newPositionContext reads and the selectable/status/code row fields.
Tests: custom-token.mjs creates token D on-chain (left out of the token config)
and verifies pasting its id resolves, selects, and persists it across a reload.
The setup script mints token D and initializes/prints the isolated
CUSTOM_TOKEN_CONFIG store
74 lines
1.6 KiB
C
74 lines
1.6 KiB
C
#ifndef AMM_FFI_H
|
|
#define AMM_FFI_H
|
|
|
|
#pragma once
|
|
|
|
/* Generated by cbindgen. Do not edit. */
|
|
|
|
#include <stdarg.h>
|
|
#include <stdbool.h>
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // __cplusplus
|
|
|
|
char *amm_config_id(const char *request_json);
|
|
|
|
char *amm_token_ids(const char *request_json);
|
|
|
|
char *amm_pair_ids(const char *request_json);
|
|
|
|
char *amm_context(const char *request_json);
|
|
|
|
char *amm_resolve_tokens(const char *request_json);
|
|
|
|
char *amm_swap_pair(const char *request_json);
|
|
|
|
char *amm_resolve_pool(const char *request_json);
|
|
|
|
char *amm_pool_id(const char *request_json);
|
|
|
|
char *amm_swap_exact_in_quote(const char *request_json);
|
|
|
|
char *amm_swap_exact_out_quote(const char *request_json);
|
|
|
|
char *amm_swap_exact_in_plan(const char *request_json);
|
|
|
|
char *amm_swap_exact_out_plan(const char *request_json);
|
|
|
|
char *amm_create_pool_quote(const char *request_json);
|
|
|
|
char *amm_create_pool_plan(const char *request_json);
|
|
|
|
char *amm_add_liquidity_quote(const char *request_json);
|
|
|
|
char *amm_add_liquidity_plan(const char *request_json);
|
|
|
|
char *amm_remove_liquidity_quote(const char *request_json);
|
|
|
|
char *amm_remove_liquidity_plan(const char *request_json);
|
|
|
|
char *amm_sync_reserves_plan(const char *request_json);
|
|
|
|
char *amm_token_holdings(const char *request_json);
|
|
|
|
char *amm_program_id(const char *request_json);
|
|
|
|
char *amm_fee_tiers(const char *request_json);
|
|
|
|
/**
|
|
* Releases a string returned by an `amm_*` operation.
|
|
*
|
|
* # Safety
|
|
* `value` must be null or a pointer returned by this library that has not been freed.
|
|
*/
|
|
void amm_free(char *value);
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif // __cplusplus
|
|
|
|
#endif /* AMM_FFI_H */
|