@t2000/sdk 2.13.2 → 2.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
2
2
  import { SuiJsonRpcClient } from '@mysten/sui/jsonRpc';
3
- import { T as TransactionLeg, k as TransactionRecord } from './types-epj9U13o.js';
3
+ import { T as TransactionLeg, k as TransactionRecord } from './types-I7U99DvG.js';
4
4
  import { Transaction, TransactionObjectArgument } from '@mysten/sui/transactions';
5
5
 
6
6
  /**
@@ -1,6 +1,6 @@
1
1
  import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
2
2
  import { SuiJsonRpcClient } from '@mysten/sui/jsonRpc';
3
- import { T as TransactionLeg, k as TransactionRecord } from './types-epj9U13o.cjs';
3
+ import { T as TransactionLeg, k as TransactionRecord } from './types-I7U99DvG.cjs';
4
4
  import { Transaction, TransactionObjectArgument } from '@mysten/sui/transactions';
5
5
 
6
6
  /**
@@ -167,11 +167,11 @@ declare function buildSwapTx(params: {
167
167
  * Append a swap fragment to an existing PTB. SPEC 7 § "Layer 1" Cetus
168
168
  * appender. Two modes, dispatched by the presence of `input.inputCoin`:
169
169
  *
170
- * - **Wallet mode** (`inputCoin` omitted) — fetches `from`-asset coins
171
- * from the sender's wallet (paginated), merges/splits to the
172
- * requested amount, runs the swap. Mirrors the audric host's
173
- * `transactions/prepare/route.ts` swap branch (P2.2c will retire that
174
- * branch in favor of this appender via `composeTx`).
170
+ * - **Wallet mode** (`inputCoin` omitted) — sources `from`-asset funds
171
+ * via `coinWithBalance({ type, balance })` (resolves coin objects +
172
+ * address balance at build time), runs the swap. Mirrors the audric
173
+ * host's `transactions/prepare/route.ts` swap branch (P2.2c will
174
+ * retire that branch in favor of this appender via `composeTx`).
175
175
  *
176
176
  * - **Chain mode** (`inputCoin` provided) — consumes the passed-in coin
177
177
  * reference (typically produced by an upstream appender like
@@ -179,14 +179,18 @@ declare function buildSwapTx(params: {
179
179
  * split. This is the SPEC 7 multi-write enabler ("withdraw → swap →
180
180
  * save" without intermediate wallet materialization).
181
181
  *
182
- * **SUI in wallet mode:** uses `client.getCoins` like every other
183
- * token. This works for sponsored flows (Enoki `tx.gas` belongs to
184
- * the sponsor, swap input comes from the user's separate SUI coin
185
- * objects). For non-sponsored flows where `tx.gas` IS the user's SUI,
186
- * the caller should pre-build the inputCoin via
187
- * `tx.splitCoins(tx.gas, [rawAmount])[0]` and pass it via chain mode
188
- * instead. (`T2000.swap()` already handles this internally direct SDK
189
- * users go through the high-level class, not through this appender.)
182
+ * **SUI in wallet mode:** ALWAYS sources through `selectSuiCoin` (which
183
+ * routes via `coinWithBalance({ type: SUI, useGasCoin: false })` under
184
+ * sponsored flows, OR `tx.splitCoins(tx.gas, ...)` under self-funded
185
+ * flows). The caller MUST set `sponsoredContext` correctly otherwise
186
+ * sponsored swaps with SUI source fail with `Cannot use GasCoin as a
187
+ * transaction argument` (Enoki owns `tx.gas`, the PTB body referencing
188
+ * it as an argument is invalid for sponsorship). 2.14.0 shipped without
189
+ * this branch and broke audric/web-v2 SUI→USDC swaps; restored in 2.14.1
190
+ * (S.260). For non-sponsored flows (CLI), `T2000.swap()` pre-builds the
191
+ * inputCoin via `tx.splitCoins(tx.gas, [rawAmount])[0]` and uses chain
192
+ * mode, sidestepping wallet-mode entirely — this branch is a defensive
193
+ * safety net for future direct SDK users who pass SUI in wallet mode.
190
194
  *
191
195
  * **`swapAll` semantics (wallet mode):** if the requested raw amount
192
196
  * is >= the wallet's total `from` balance, the appender consumes the
@@ -235,6 +239,19 @@ declare function addSwapToTx(tx: Transaction, client: SuiJsonRpcClient, address:
235
239
  * config (the route data already encodes the chosen DEX path).
236
240
  */
237
241
  precomputedRoute?: SwapRouteResult;
242
+ /**
243
+ * Whether this swap is being built inside a sponsored-tx flow (Enoki)
244
+ * vs self-funded (CLI / direct sign). Load-bearing for SUI-source
245
+ * swaps in wallet mode: under sponsored flows, `tx.gas` belongs to
246
+ * the sponsor and CANNOT be referenced as a transaction argument
247
+ * (Sui protocol rejects with `Cannot use GasCoin as a transaction
248
+ * argument`). When `true`, SUI source routes through `selectSuiCoin`
249
+ * with `useGasCoin: false` so the resolver sources from the user's
250
+ * SUI coin objects + address balance instead. Defaults to `false`
251
+ * (back-compat — pre-2.14.1 behavior). Audric/web-v2's compose path
252
+ * threads this through via `composeTx({ sponsoredContext: true })`.
253
+ */
254
+ sponsoredContext?: boolean;
238
255
  }): Promise<{
239
256
  coin: TransactionObjectArgument;
240
257
  effectiveAmountIn: number;
@@ -526,6 +543,14 @@ interface PayResult {
526
543
  body: unknown;
527
544
  paid: boolean;
528
545
  cost?: number;
546
+ /**
547
+ * SUI gas cost actually paid on chain. Zero for gasless payments —
548
+ * which means an MPP payment hit the protocol's gasless allowlist
549
+ * (USDC / USDsui / USDY / FdUSD / AUSD / BUCK / USDB / SUI_USDE) and
550
+ * was accepted with `gasPrice=0, gasBudget=0, gasPayment=[]`. See
551
+ * https://docs.sui.io/develop/transaction-payment/gasless-stablecoin-transfers
552
+ */
553
+ gasCostSui?: number;
529
554
  receipt?: {
530
555
  reference: string;
531
556
  timestamp: string;
@@ -167,11 +167,11 @@ declare function buildSwapTx(params: {
167
167
  * Append a swap fragment to an existing PTB. SPEC 7 § "Layer 1" Cetus
168
168
  * appender. Two modes, dispatched by the presence of `input.inputCoin`:
169
169
  *
170
- * - **Wallet mode** (`inputCoin` omitted) — fetches `from`-asset coins
171
- * from the sender's wallet (paginated), merges/splits to the
172
- * requested amount, runs the swap. Mirrors the audric host's
173
- * `transactions/prepare/route.ts` swap branch (P2.2c will retire that
174
- * branch in favor of this appender via `composeTx`).
170
+ * - **Wallet mode** (`inputCoin` omitted) — sources `from`-asset funds
171
+ * via `coinWithBalance({ type, balance })` (resolves coin objects +
172
+ * address balance at build time), runs the swap. Mirrors the audric
173
+ * host's `transactions/prepare/route.ts` swap branch (P2.2c will
174
+ * retire that branch in favor of this appender via `composeTx`).
175
175
  *
176
176
  * - **Chain mode** (`inputCoin` provided) — consumes the passed-in coin
177
177
  * reference (typically produced by an upstream appender like
@@ -179,14 +179,18 @@ declare function buildSwapTx(params: {
179
179
  * split. This is the SPEC 7 multi-write enabler ("withdraw → swap →
180
180
  * save" without intermediate wallet materialization).
181
181
  *
182
- * **SUI in wallet mode:** uses `client.getCoins` like every other
183
- * token. This works for sponsored flows (Enoki `tx.gas` belongs to
184
- * the sponsor, swap input comes from the user's separate SUI coin
185
- * objects). For non-sponsored flows where `tx.gas` IS the user's SUI,
186
- * the caller should pre-build the inputCoin via
187
- * `tx.splitCoins(tx.gas, [rawAmount])[0]` and pass it via chain mode
188
- * instead. (`T2000.swap()` already handles this internally direct SDK
189
- * users go through the high-level class, not through this appender.)
182
+ * **SUI in wallet mode:** ALWAYS sources through `selectSuiCoin` (which
183
+ * routes via `coinWithBalance({ type: SUI, useGasCoin: false })` under
184
+ * sponsored flows, OR `tx.splitCoins(tx.gas, ...)` under self-funded
185
+ * flows). The caller MUST set `sponsoredContext` correctly otherwise
186
+ * sponsored swaps with SUI source fail with `Cannot use GasCoin as a
187
+ * transaction argument` (Enoki owns `tx.gas`, the PTB body referencing
188
+ * it as an argument is invalid for sponsorship). 2.14.0 shipped without
189
+ * this branch and broke audric/web-v2 SUI→USDC swaps; restored in 2.14.1
190
+ * (S.260). For non-sponsored flows (CLI), `T2000.swap()` pre-builds the
191
+ * inputCoin via `tx.splitCoins(tx.gas, [rawAmount])[0]` and uses chain
192
+ * mode, sidestepping wallet-mode entirely — this branch is a defensive
193
+ * safety net for future direct SDK users who pass SUI in wallet mode.
190
194
  *
191
195
  * **`swapAll` semantics (wallet mode):** if the requested raw amount
192
196
  * is >= the wallet's total `from` balance, the appender consumes the
@@ -235,6 +239,19 @@ declare function addSwapToTx(tx: Transaction, client: SuiJsonRpcClient, address:
235
239
  * config (the route data already encodes the chosen DEX path).
236
240
  */
237
241
  precomputedRoute?: SwapRouteResult;
242
+ /**
243
+ * Whether this swap is being built inside a sponsored-tx flow (Enoki)
244
+ * vs self-funded (CLI / direct sign). Load-bearing for SUI-source
245
+ * swaps in wallet mode: under sponsored flows, `tx.gas` belongs to
246
+ * the sponsor and CANNOT be referenced as a transaction argument
247
+ * (Sui protocol rejects with `Cannot use GasCoin as a transaction
248
+ * argument`). When `true`, SUI source routes through `selectSuiCoin`
249
+ * with `useGasCoin: false` so the resolver sources from the user's
250
+ * SUI coin objects + address balance instead. Defaults to `false`
251
+ * (back-compat — pre-2.14.1 behavior). Audric/web-v2's compose path
252
+ * threads this through via `composeTx({ sponsoredContext: true })`.
253
+ */
254
+ sponsoredContext?: boolean;
238
255
  }): Promise<{
239
256
  coin: TransactionObjectArgument;
240
257
  effectiveAmountIn: number;
@@ -526,6 +543,14 @@ interface PayResult {
526
543
  body: unknown;
527
544
  paid: boolean;
528
545
  cost?: number;
546
+ /**
547
+ * SUI gas cost actually paid on chain. Zero for gasless payments —
548
+ * which means an MPP payment hit the protocol's gasless allowlist
549
+ * (USDC / USDsui / USDY / FdUSD / AUSD / BUCK / USDB / SUI_USDE) and
550
+ * was accepted with `gasPrice=0, gasBudget=0, gasPayment=[]`. See
551
+ * https://docs.sui.io/develop/transaction-payment/gasless-stablecoin-transfers
552
+ */
553
+ gasCostSui?: number;
529
554
  receipt?: {
530
555
  reference: string;
531
556
  timestamp: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t2000/sdk",
3
- "version": "2.13.2",
3
+ "version": "2.14.1",
4
4
  "description": "TypeScript SDK for AI agent bank accounts on Sui — send, save, borrow, swap. NAVI lending + Cetus aggregator routing, sponsored gas, zkLogin compatible.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",