@t2000/sdk 0.19.1 → 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/adapters/index.d.cts +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/{index-D-6pQwzx.d.cts → index-CcTPxTBs.d.cts} +1 -0
- package/dist/{index-D-6pQwzx.d.ts → index-CcTPxTBs.d.ts} +1 -0
- package/dist/index.cjs +77 -13
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +77 -13
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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-
|
|
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-
|
|
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" | "
|
|
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-
|
|
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-
|
|
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" | "
|
|
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
|
|
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
|
|
42735
|
-
if (!
|
|
42736
|
-
const
|
|
42737
|
-
|
|
42738
|
-
|
|
42739
|
-
|
|
42740
|
-
const
|
|
42741
|
-
|
|
42742
|
-
|
|
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
|
|
@@ -57115,9 +57170,18 @@ var T2000 = class _T2000 extends EventEmitter {
|
|
|
57115
57170
|
this.enforcer.check({ operation: "pay", amount: options.maxPrice ?? 1 });
|
|
57116
57171
|
const { Mppx } = await import('mppx/client');
|
|
57117
57172
|
const { sui } = await import('@t2000/mpp-sui/client');
|
|
57173
|
+
const client = this.client;
|
|
57174
|
+
const keypair = this.keypair;
|
|
57118
57175
|
const mppx = Mppx.create({
|
|
57119
57176
|
polyfill: false,
|
|
57120
|
-
methods: [sui({
|
|
57177
|
+
methods: [sui({
|
|
57178
|
+
client,
|
|
57179
|
+
signer: keypair,
|
|
57180
|
+
execute: async (tx) => {
|
|
57181
|
+
const result = await executeWithGas(client, keypair, () => tx);
|
|
57182
|
+
return { digest: result.digest, effects: result.effects };
|
|
57183
|
+
}
|
|
57184
|
+
})]
|
|
57121
57185
|
});
|
|
57122
57186
|
const method = (options.method ?? "GET").toUpperCase();
|
|
57123
57187
|
const canHaveBody = method !== "GET" && method !== "HEAD";
|
|
@@ -58185,7 +58249,7 @@ To sell investment: t2000 invest sell ${params.amount} ${fromAsset}`,
|
|
|
58185
58249
|
await new Promise((r) => setTimeout(r, 1500));
|
|
58186
58250
|
}
|
|
58187
58251
|
const maxSellable = Math.max(0, walletAmount - gasReserve);
|
|
58188
|
-
const trackedAmount = pos
|
|
58252
|
+
const trackedAmount = pos ? pos.totalAmount : maxSellable;
|
|
58189
58253
|
if (trackedAmount <= 0) {
|
|
58190
58254
|
throw new T2000Error("INSUFFICIENT_INVESTMENT", `No ${params.asset} position to sell`);
|
|
58191
58255
|
}
|