@t2000/sdk 0.19.2 → 0.19.3

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.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { I as InvestmentTrade, S as StrategyDefinition, A as AutoInvestSchedule, a as AutoInvestStatus, T as T2000Options, P as PayOptions, b as PayResult, c as SendResult, B as BalanceResponse, d as TransactionRecord, D as DepositInfo, L as LendingAdapter, e as SwapAdapter, f as SaveResult, W as WithdrawResult, M as MaxWithdrawResult, g as BorrowResult, R as RepayResult, h as MaxBorrowResult, H as HealthFactorResult, i as SwapResult, j as InvestResult, k as InvestEarnResult, l as InvestRebalanceResult, m as PendingReward, C as ClaimRewardsResult, n as StrategyBuyResult, o as StrategySellResult, p as StrategyRebalanceResult, q as StrategyStatusResult, r as AutoInvestRunResult, s as PortfolioResult, t as InvestmentPosition, u as PositionsResult, v as RatesResult, w as LendingRates, x as RebalanceResult, E as EarningsResult, F as FundStatusResult, y as SentinelAgent, z as SentinelAttackResult, G as GasMethod } from './index-D-6pQwzx.cjs';
2
- export { J as AdapterCapability, K as AdapterPositions, N as AdapterTxResult, O as AssetRates, Q as CetusAdapter, U as GasReserve, V as HealthInfo, X as InvestRebalanceMove, Y as NaviAdapter, Z as PerpsAdapter, _ as PerpsPosition, $ as PositionEntry, a0 as PositionSide, a1 as ProtocolDescriptor, a2 as ProtocolRegistry, a3 as RebalanceStep, a4 as SentinelVerdict, a5 as SuilendAdapter, a6 as SwapQuote, a7 as TradePositionsResult, a8 as TradeResult, a9 as allDescriptors, aa as cetusDescriptor, ab as getSentinelInfo, ac as listSentinels, ad as naviDescriptor, ae as requestAttack, af as sentinelAttack, ag as sentinelDescriptor, ah as settleAttack, ai as submitPrompt, aj as suilendDescriptor } from './index-D-6pQwzx.cjs';
1
+ import { I as InvestmentTrade, S as StrategyDefinition, A as AutoInvestSchedule, a as AutoInvestStatus, T as T2000Options, P as PayOptions, b as PayResult, c as SendResult, B as BalanceResponse, d as TransactionRecord, D as DepositInfo, L as LendingAdapter, e as SwapAdapter, f as SaveResult, W as WithdrawResult, M as MaxWithdrawResult, g as BorrowResult, R as RepayResult, h as MaxBorrowResult, H as HealthFactorResult, i as SwapResult, j as InvestResult, k as InvestEarnResult, l as InvestRebalanceResult, m as PendingReward, C as ClaimRewardsResult, n as StrategyBuyResult, o as StrategySellResult, p as StrategyRebalanceResult, q as StrategyStatusResult, r as AutoInvestRunResult, s as PortfolioResult, t as InvestmentPosition, u as PositionsResult, v as RatesResult, w as LendingRates, x as RebalanceResult, E as EarningsResult, F as FundStatusResult, y as SentinelAgent, z as SentinelAttackResult, G as GasMethod } from './index-CcTPxTBs.cjs';
2
+ export { J as AdapterCapability, K as AdapterPositions, N as AdapterTxResult, O as AssetRates, Q as CetusAdapter, U as GasReserve, V as HealthInfo, X as InvestRebalanceMove, Y as NaviAdapter, Z as PerpsAdapter, _ as PerpsPosition, $ as PositionEntry, a0 as PositionSide, a1 as ProtocolDescriptor, a2 as ProtocolRegistry, a3 as RebalanceStep, a4 as SentinelVerdict, a5 as SuilendAdapter, a6 as SwapQuote, a7 as TradePositionsResult, a8 as TradeResult, a9 as allDescriptors, aa as cetusDescriptor, ab as getSentinelInfo, ac as listSentinels, ad as naviDescriptor, ae as requestAttack, af as sentinelAttack, ag as sentinelDescriptor, ah as settleAttack, ai as submitPrompt, aj as suilendDescriptor } from './index-CcTPxTBs.cjs';
3
3
  import { EventEmitter } from 'eventemitter3';
4
4
  import { SuiJsonRpcClient } from '@mysten/sui/jsonRpc';
5
5
  import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
@@ -192,7 +192,7 @@ interface TxMetadata {
192
192
  operation: 'send' | 'save' | 'withdraw' | 'borrow' | 'repay' | 'exchange' | 'rebalance' | 'pay' | 'sentinel' | 'invest' | 'trade';
193
193
  amount?: number;
194
194
  }
195
- declare const OUTBOUND_OPS: Set<"save" | "borrow" | "withdraw" | "repay" | "sentinel" | "send" | "exchange" | "rebalance" | "pay" | "invest" | "trade">;
195
+ declare const OUTBOUND_OPS: Set<"save" | "borrow" | "withdraw" | "send" | "repay" | "sentinel" | "exchange" | "rebalance" | "pay" | "invest" | "trade">;
196
196
  declare const DEFAULT_SAFEGUARD_CONFIG: SafeguardConfig;
197
197
 
198
198
  declare class SafeguardEnforcer {
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { I as InvestmentTrade, S as StrategyDefinition, A as AutoInvestSchedule, a as AutoInvestStatus, T as T2000Options, P as PayOptions, b as PayResult, c as SendResult, B as BalanceResponse, d as TransactionRecord, D as DepositInfo, L as LendingAdapter, e as SwapAdapter, f as SaveResult, W as WithdrawResult, M as MaxWithdrawResult, g as BorrowResult, R as RepayResult, h as MaxBorrowResult, H as HealthFactorResult, i as SwapResult, j as InvestResult, k as InvestEarnResult, l as InvestRebalanceResult, m as PendingReward, C as ClaimRewardsResult, n as StrategyBuyResult, o as StrategySellResult, p as StrategyRebalanceResult, q as StrategyStatusResult, r as AutoInvestRunResult, s as PortfolioResult, t as InvestmentPosition, u as PositionsResult, v as RatesResult, w as LendingRates, x as RebalanceResult, E as EarningsResult, F as FundStatusResult, y as SentinelAgent, z as SentinelAttackResult, G as GasMethod } from './index-D-6pQwzx.js';
2
- export { J as AdapterCapability, K as AdapterPositions, N as AdapterTxResult, O as AssetRates, Q as CetusAdapter, U as GasReserve, V as HealthInfo, X as InvestRebalanceMove, Y as NaviAdapter, Z as PerpsAdapter, _ as PerpsPosition, $ as PositionEntry, a0 as PositionSide, a1 as ProtocolDescriptor, a2 as ProtocolRegistry, a3 as RebalanceStep, a4 as SentinelVerdict, a5 as SuilendAdapter, a6 as SwapQuote, a7 as TradePositionsResult, a8 as TradeResult, a9 as allDescriptors, aa as cetusDescriptor, ab as getSentinelInfo, ac as listSentinels, ad as naviDescriptor, ae as requestAttack, af as sentinelAttack, ag as sentinelDescriptor, ah as settleAttack, ai as submitPrompt, aj as suilendDescriptor } from './index-D-6pQwzx.js';
1
+ import { I as InvestmentTrade, S as StrategyDefinition, A as AutoInvestSchedule, a as AutoInvestStatus, T as T2000Options, P as PayOptions, b as PayResult, c as SendResult, B as BalanceResponse, d as TransactionRecord, D as DepositInfo, L as LendingAdapter, e as SwapAdapter, f as SaveResult, W as WithdrawResult, M as MaxWithdrawResult, g as BorrowResult, R as RepayResult, h as MaxBorrowResult, H as HealthFactorResult, i as SwapResult, j as InvestResult, k as InvestEarnResult, l as InvestRebalanceResult, m as PendingReward, C as ClaimRewardsResult, n as StrategyBuyResult, o as StrategySellResult, p as StrategyRebalanceResult, q as StrategyStatusResult, r as AutoInvestRunResult, s as PortfolioResult, t as InvestmentPosition, u as PositionsResult, v as RatesResult, w as LendingRates, x as RebalanceResult, E as EarningsResult, F as FundStatusResult, y as SentinelAgent, z as SentinelAttackResult, G as GasMethod } from './index-CcTPxTBs.js';
2
+ export { J as AdapterCapability, K as AdapterPositions, N as AdapterTxResult, O as AssetRates, Q as CetusAdapter, U as GasReserve, V as HealthInfo, X as InvestRebalanceMove, Y as NaviAdapter, Z as PerpsAdapter, _ as PerpsPosition, $ as PositionEntry, a0 as PositionSide, a1 as ProtocolDescriptor, a2 as ProtocolRegistry, a3 as RebalanceStep, a4 as SentinelVerdict, a5 as SuilendAdapter, a6 as SwapQuote, a7 as TradePositionsResult, a8 as TradeResult, a9 as allDescriptors, aa as cetusDescriptor, ab as getSentinelInfo, ac as listSentinels, ad as naviDescriptor, ae as requestAttack, af as sentinelAttack, ag as sentinelDescriptor, ah as settleAttack, ai as submitPrompt, aj as suilendDescriptor } from './index-CcTPxTBs.js';
3
3
  import { EventEmitter } from 'eventemitter3';
4
4
  import { SuiJsonRpcClient } from '@mysten/sui/jsonRpc';
5
5
  import { Ed25519Keypair } from '@mysten/sui/keypairs/ed25519';
@@ -192,7 +192,7 @@ interface TxMetadata {
192
192
  operation: 'send' | 'save' | 'withdraw' | 'borrow' | 'repay' | 'exchange' | 'rebalance' | 'pay' | 'sentinel' | 'invest' | 'trade';
193
193
  amount?: number;
194
194
  }
195
- declare const OUTBOUND_OPS: Set<"save" | "borrow" | "withdraw" | "repay" | "sentinel" | "send" | "exchange" | "rebalance" | "pay" | "invest" | "trade">;
195
+ declare const OUTBOUND_OPS: Set<"save" | "borrow" | "withdraw" | "send" | "repay" | "sentinel" | "exchange" | "rebalance" | "pay" | "invest" | "trade">;
196
196
  declare const DEFAULT_SAFEGUARD_CONFIG: SafeguardConfig;
197
197
 
198
198
  declare class SafeguardEnforcer {
package/dist/index.js CHANGED
@@ -42713,33 +42713,88 @@ async function queryBalance(client, address) {
42713
42713
  }
42714
42714
 
42715
42715
  // src/wallet/history.ts
42716
+ var SUI_TYPE = "0x2::sui::SUI";
42717
+ var KNOWN_TARGETS = [
42718
+ [/::mpp_charge::/, "mpp payment"],
42719
+ [/::suilend|::obligation/, "lending"],
42720
+ [/::navi|::incentive_v2/, "lending"],
42721
+ [/::cetus|::pool/, "swap"],
42722
+ [/::deepbook/, "swap"],
42723
+ [/::transfer::public_transfer/, "send"],
42724
+ [/::coin::split/, "split"]
42725
+ ];
42716
42726
  async function queryHistory(client, address, limit = 20) {
42717
42727
  const txns = await client.queryTransactionBlocks({
42718
42728
  filter: { FromAddress: address },
42719
- options: { showEffects: true, showInput: true },
42729
+ options: { showEffects: true, showInput: true, showBalanceChanges: true },
42720
42730
  limit,
42721
42731
  order: "descending"
42722
42732
  });
42723
42733
  return txns.data.map((tx) => {
42724
42734
  const gasUsed = tx.effects?.gasUsed;
42725
42735
  const gasCost = gasUsed ? (Number(gasUsed.computationCost) + Number(gasUsed.storageCost) - Number(gasUsed.storageRebate)) / 1e9 : void 0;
42736
+ const targets = extractMoveCallTargets(tx.transaction);
42737
+ const action = classifyAction(targets);
42738
+ const { amount, asset, recipient } = extractTransferDetails(
42739
+ tx.balanceChanges,
42740
+ address
42741
+ );
42726
42742
  return {
42727
42743
  digest: tx.digest,
42728
- action: inferAction(tx.transaction),
42744
+ action,
42745
+ amount,
42746
+ asset,
42747
+ recipient,
42729
42748
  timestamp: Number(tx.timestampMs ?? 0),
42730
42749
  gasCost
42731
42750
  };
42732
42751
  });
42733
42752
  }
42734
- function inferAction(txBlock) {
42735
- if (!txBlock || typeof txBlock !== "object") return "unknown";
42736
- const data = "data" in txBlock ? txBlock.data : void 0;
42737
- if (!data || typeof data !== "object") return "unknown";
42738
- const inner = "transaction" in data ? data.transaction : void 0;
42739
- if (!inner || typeof inner !== "object") return "unknown";
42740
- const kind = "kind" in inner ? inner.kind : void 0;
42741
- if (kind === "ProgrammableTransaction") return "transaction";
42742
- return kind ?? "unknown";
42753
+ function extractTransferDetails(changes, sender) {
42754
+ if (!changes || changes.length === 0) return {};
42755
+ const outflows = changes.filter((c) => {
42756
+ const owner = typeof c.owner === "object" && c.owner.AddressOwner ? c.owner.AddressOwner : typeof c.owner === "string" ? c.owner : null;
42757
+ return owner === sender && BigInt(c.amount) < 0n;
42758
+ });
42759
+ const inflows = changes.filter((c) => {
42760
+ const owner = typeof c.owner === "object" && c.owner.AddressOwner ? c.owner.AddressOwner : typeof c.owner === "string" ? c.owner : null;
42761
+ return owner !== sender && BigInt(c.amount) > 0n;
42762
+ });
42763
+ const primaryOutflow = outflows.filter((c) => c.coinType !== SUI_TYPE).sort((a, b2) => Number(BigInt(a.amount) - BigInt(b2.amount)))[0] ?? outflows[0];
42764
+ if (!primaryOutflow) return {};
42765
+ const coinType = primaryOutflow.coinType;
42766
+ const decimals = coinType.includes("::usdc::") ? 6 : 9;
42767
+ const amount = Math.abs(Number(BigInt(primaryOutflow.amount))) / 10 ** decimals;
42768
+ const asset = coinType === SUI_TYPE ? "SUI" : coinType.includes("::usdc::") ? "USDC" : coinType.split("::").pop() ?? "unknown";
42769
+ const recipientChange = inflows.find((c) => c.coinType === coinType);
42770
+ const recipient = recipientChange ? typeof recipientChange.owner === "object" && recipientChange.owner.AddressOwner ? recipientChange.owner.AddressOwner : void 0 : void 0;
42771
+ return { amount, asset, recipient };
42772
+ }
42773
+ function extractMoveCallTargets(txBlock) {
42774
+ try {
42775
+ if (!txBlock || typeof txBlock !== "object") return [];
42776
+ const data = "data" in txBlock ? txBlock.data : void 0;
42777
+ if (!data || typeof data !== "object") return [];
42778
+ const inner = "transaction" in data ? data.transaction : void 0;
42779
+ if (!inner || typeof inner !== "object") return [];
42780
+ const commands = "commands" in inner ? inner.commands : void 0;
42781
+ if (!Array.isArray(commands)) return [];
42782
+ return commands.filter((c) => c.MoveCall).map((c) => {
42783
+ const mc = c.MoveCall;
42784
+ return `${mc.package}::${mc.module}::${mc.function}`;
42785
+ });
42786
+ } catch {
42787
+ return [];
42788
+ }
42789
+ }
42790
+ function classifyAction(targets) {
42791
+ if (targets.length === 0) return "transaction";
42792
+ for (const target of targets) {
42793
+ for (const [pattern, label] of KNOWN_TARGETS) {
42794
+ if (pattern.test(target)) return label;
42795
+ }
42796
+ }
42797
+ return "transaction";
42743
42798
  }
42744
42799
 
42745
42800
  // src/protocols/protocolFee.ts