@ember-finance/sdk 2.5.0-pre.9 → 2.5.0
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/src/abis/ERC20Token.json +2 -2
- package/dist/src/abis/EmberETHVault.json +5 -279
- package/dist/src/abis/EmberProtocolConfig.json +2 -170
- package/dist/src/abis/EmberVault.json +2 -2
- package/dist/src/abis/EmberVaultMintBurnOFTAdapter.json +2 -43
- package/dist/src/api/models/poc-report-asset.d.ts +6 -0
- package/dist/src/api/models/poc-report-protocol.d.ts +30 -0
- package/dist/src/api/models/poc-report-token.d.ts +36 -0
- package/dist/src/api/models/poc-report-wallet.d.ts +10 -4
- package/dist/src/api/v2/apis/accounts-api.d.ts +0 -5
- package/dist/src/api/v2/apis/accounts-api.js +1 -6
- package/dist/src/api/v2/apis/vaults-api.d.ts +43 -16
- package/dist/src/api/v2/apis/vaults-api.js +84 -21
- package/dist/src/api/v2/models/account-transaction-transaction-data.d.ts +1 -5
- package/dist/src/api/v2/models/account-transaction.d.ts +0 -5
- package/dist/src/api/v2/models/account-transaction.js +1 -6
- package/dist/src/api/v2/models/chain-vault-details.d.ts +13 -14
- package/dist/src/api/v2/models/chain-vault-details.js +6 -1
- package/dist/src/api/v2/models/evm-contracts.d.ts +0 -16
- package/dist/src/api/v2/models/index.d.ts +4 -9
- package/dist/src/api/v2/models/index.js +4 -9
- package/dist/src/api/v2/models/poc-report-asset.d.ts +6 -0
- package/dist/src/api/v2/models/poc-report-protocol.d.ts +30 -0
- package/dist/src/api/v2/models/poc-report-token.d.ts +36 -0
- package/dist/src/api/v2/models/poc-report-wallet.d.ts +10 -4
- package/dist/src/api/v2/models/transparency-group.d.ts +55 -0
- package/dist/src/api/v2/models/transparency-row.d.ts +138 -0
- package/dist/src/api/v2/models/{fee-multiplier-tier.js → transparency-row.js} +10 -1
- package/dist/src/api/v2/models/transparency-view.d.ts +22 -0
- package/dist/src/api/v2/models/{evm-atomic-vault.js → transparency-view.js} +10 -1
- package/dist/src/api/v2/models/vault-detail.d.ts +0 -11
- package/dist/src/api/v2/models/vault-detail.js +0 -4
- package/dist/src/api/v2/models/vault-transparency-report.d.ts +82 -0
- package/dist/src/ember-vaults.d.ts +1 -2
- package/dist/src/evm-vaults/on-chain-calls/index.d.ts +0 -1
- package/dist/src/evm-vaults/on-chain-calls/index.js +0 -1
- package/dist/src/evm-vaults/on-chain-calls/operator.d.ts +0 -10
- package/dist/src/evm-vaults/on-chain-calls/operator.js +0 -28
- package/dist/src/evm-vaults/on-chain-calls/tx-builder.d.ts +0 -109
- package/dist/src/evm-vaults/on-chain-calls/tx-builder.js +0 -281
- package/dist/src/evm-vaults/on-chain-calls/user.d.ts +0 -50
- package/dist/src/evm-vaults/on-chain-calls/user.js +0 -75
- package/dist/src/evm-vaults/on-chain-calls/vault-admin.d.ts +0 -55
- package/dist/src/evm-vaults/on-chain-calls/vault-admin.js +0 -122
- package/dist/src/evm-vaults/on-chain-calls/vault-reader.d.ts +0 -6
- package/dist/src/evm-vaults/on-chain-calls/vault-reader.js +0 -9
- package/dist/src/evm-vaults/utils/deployment-parser.d.ts +0 -8
- package/dist/src/evm-vaults/utils/deployment-parser.js +0 -11
- package/dist/src/sui-vaults/interfaces/index.d.ts +0 -15
- package/dist/src/sui-vaults/on-chain-calls/admin.d.ts +1 -37
- package/dist/src/sui-vaults/on-chain-calls/admin.js +0 -56
- package/dist/src/sui-vaults/on-chain-calls/index.d.ts +0 -1
- package/dist/src/sui-vaults/on-chain-calls/index.js +0 -1
- package/dist/src/sui-vaults/on-chain-calls/onchain-calls.d.ts +1 -2
- package/dist/src/sui-vaults/on-chain-calls/operator.d.ts +1 -129
- package/dist/src/sui-vaults/on-chain-calls/operator.js +0 -210
- package/dist/src/sui-vaults/on-chain-calls/tx-builder.d.ts +0 -482
- package/dist/src/sui-vaults/on-chain-calls/tx-builder.js +0 -1430
- package/dist/src/sui-vaults/on-chain-calls/user.d.ts +1 -107
- package/dist/src/sui-vaults/on-chain-calls/user.js +0 -190
- package/dist/src/sui-vaults/on-chain-calls/vault-admin.d.ts +1 -229
- package/dist/src/sui-vaults/on-chain-calls/vault-admin.js +0 -391
- package/dist/src/sui-vaults/on-chain-calls/vault.d.ts +1 -2
- package/dist/src/sui-vaults/utils/common.d.ts +1 -2
- package/dist/src/sui-vaults/utils/deployment-parser.d.ts +0 -12
- package/dist/src/sui-vaults/utils/deployment-parser.js +0 -24
- package/package.json +2 -3
- package/dist/src/abis/AtomicLiquidity.json +0 -4050
- package/dist/src/api/v2/models/escrow-claim-transaction.d.ts +0 -56
- package/dist/src/api/v2/models/evm-atomic-liquidity-lib.d.ts +0 -48
- package/dist/src/api/v2/models/evm-atomic-vault.d.ts +0 -102
- package/dist/src/api/v2/models/fee-multiplier-tier.d.ts +0 -30
- package/dist/src/api/v2/models/holdback-release-transaction.d.ts +0 -56
- package/dist/src/api/v2/models/holdback-release-transaction.js +0 -14
- package/dist/src/api/v2/models/instant-withdraw-config.d.ts +0 -109
- package/dist/src/api/v2/models/instant-withdraw-config.js +0 -14
- package/dist/src/api/v2/models/instant-withdraw-transaction.d.ts +0 -74
- package/dist/src/api/v2/models/instant-withdraw-transaction.js +0 -14
- package/dist/src/api/v2/models/instant-withdraw-via-swap-transaction.d.ts +0 -74
- package/dist/src/api/v2/models/instant-withdraw-via-swap-transaction.js +0 -14
- package/dist/src/api/v2/models/supported-ember-vault.d.ts +0 -42
- package/dist/src/api/v2/models/supported-ember-vault.js +0 -14
- package/dist/src/atomic/instant-withdraw.d.ts +0 -125
- package/dist/src/atomic/instant-withdraw.js +0 -122
- package/dist/src/evm-vaults/on-chain-calls/atomic-liquidity.d.ts +0 -98
- package/dist/src/evm-vaults/on-chain-calls/atomic-liquidity.js +0 -212
- package/dist/src/sui-vaults/on-chain-calls/atomic-liquidity.d.ts +0 -62
- package/dist/src/sui-vaults/on-chain-calls/atomic-liquidity.js +0 -174
- /package/dist/src/api/v2/models/{escrow-claim-transaction.js → transparency-group.js} +0 -0
- /package/dist/src/api/v2/models/{evm-atomic-liquidity-lib.js → vault-transparency-report.js} +0 -0
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { bcs } from "@mysten/sui/bcs";
|
|
2
|
-
import { computeSwapQuote, computePlainInstantQuote } from "../../atomic/instant-withdraw.js";
|
|
3
|
-
/** Sui fixed-point scale (1e9) used by the Atomic Liquidity Vault Move math. */
|
|
4
|
-
const SUI_SCALE = 1000000000n;
|
|
5
|
-
const unwrapMoveFields = (value) => value?.fields ?? value;
|
|
6
|
-
const toBig = (v) => v === undefined || v === null ? 0n : BigInt(v);
|
|
7
|
-
/** `math::div(a, b)` = floor(a * scale / b). */
|
|
8
|
-
const divFloor = (a, b) => (b === 0n ? 0n : (a * SUI_SCALE) / b);
|
|
9
|
-
/** `math::div_ceil(a, b)` = ceil(a * scale / b) — used by `calculate_amount_from_shares`. */
|
|
10
|
-
const divCeil = (a, b) => b === 0n ? 0n : (a * SUI_SCALE + (b - 1n)) / b;
|
|
11
|
-
/**
|
|
12
|
-
* Read-only views + instant-withdraw quotes for the Sui Atomic Liquidity Vault (BET-4111).
|
|
13
|
-
*
|
|
14
|
-
* There is no on-chain preview function and no off-chain view calls on Sui, so this reads
|
|
15
|
-
* the ALV (and source vault) object fields directly and replicates the Move math
|
|
16
|
-
* (`calculate_amount_from_shares`, `get_vault_tvl`, `swap_ember_shares`,
|
|
17
|
-
* `do_instant_withdraw_core`) via the shared chain-agnostic quote core at scale 1e9.
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```ts
|
|
21
|
-
* const reader = new SuiAtomicLiquidityReader(suiClient);
|
|
22
|
-
* const q = await reader.previewSwapInstantWithdraw(vaultId, sourceVaultId, 100_000000n, owner);
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export class SuiAtomicLiquidityReader {
|
|
26
|
-
constructor(suiClient) {
|
|
27
|
-
this.suiClient = suiClient;
|
|
28
|
-
}
|
|
29
|
-
/** Raw Move fields of the AtomicLiquidityVault object. */
|
|
30
|
-
async vaultFields(vaultId) {
|
|
31
|
-
const res = await this.suiClient.core.getObject({
|
|
32
|
-
objectId: vaultId,
|
|
33
|
-
include: { json: true }
|
|
34
|
-
});
|
|
35
|
-
const fields = unwrapMoveFields(res.object?.json);
|
|
36
|
-
if (!fields)
|
|
37
|
-
throw new Error(`Atomic vault ${vaultId} not found`);
|
|
38
|
-
return fields;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Read a `Table<K, V>` entry value. Table entries are plain dynamic fields, so we
|
|
42
|
-
* resolve the `Field<K,V>` object id via `getDynamicField`, then fetch its json
|
|
43
|
-
* (`{ name, value }`). Returns the unwrapped `value`, or null if absent.
|
|
44
|
-
*/
|
|
45
|
-
async readTableValue(parentId, nameType, keyAddress) {
|
|
46
|
-
try {
|
|
47
|
-
const df = await this.suiClient.core.getDynamicField({
|
|
48
|
-
parentId,
|
|
49
|
-
name: { type: nameType, bcs: bcs.Address.serialize(keyAddress).toBytes() }
|
|
50
|
-
});
|
|
51
|
-
const fieldId = df?.dynamicField?.fieldId;
|
|
52
|
-
if (!fieldId)
|
|
53
|
-
return null;
|
|
54
|
-
const obj = await this.suiClient.core.getObject({
|
|
55
|
-
objectId: fieldId,
|
|
56
|
-
include: { json: true }
|
|
57
|
-
});
|
|
58
|
-
return unwrapMoveFields(obj.object?.json)?.value;
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/** Rate value (1e9) of any vault object (ALV or source EmberVault). */
|
|
65
|
-
async rateValue(vaultId) {
|
|
66
|
-
const res = await this.suiClient.core.getObject({
|
|
67
|
-
objectId: vaultId,
|
|
68
|
-
include: { json: true }
|
|
69
|
-
});
|
|
70
|
-
const fields = unwrapMoveFields(res.object?.json);
|
|
71
|
-
return toBig(unwrapMoveFields(fields?.rate)?.value);
|
|
72
|
-
}
|
|
73
|
-
/** Per-source-share EmberShare config from the `ember_share_configs` table. */
|
|
74
|
-
async getEmberShareConfig(vaultId, sourceVaultId) {
|
|
75
|
-
const fields = await this.vaultFields(vaultId);
|
|
76
|
-
const tableId = unwrapMoveFields(fields.ember_share_configs)?.id?.id;
|
|
77
|
-
if (!tableId)
|
|
78
|
-
return null;
|
|
79
|
-
{
|
|
80
|
-
const cfg = unwrapMoveFields(await this.readTableValue(tableId, "0x2::object::ID", sourceVaultId));
|
|
81
|
-
if (!cfg)
|
|
82
|
-
return null;
|
|
83
|
-
const curve = (cfg.fee_multiplier_curve || []).map((t) => {
|
|
84
|
-
const tf = unwrapMoveFields(t);
|
|
85
|
-
return {
|
|
86
|
-
threshold: toBig(tf.threshold),
|
|
87
|
-
multiplier: toBig(tf.multiplier)
|
|
88
|
-
};
|
|
89
|
-
});
|
|
90
|
-
return {
|
|
91
|
-
whitelisted: !!cfg.whitelisted,
|
|
92
|
-
feePercentage: toBig(cfg.fee_percentage),
|
|
93
|
-
holdbackPercentage: toBig(cfg.holdback_percentage),
|
|
94
|
-
maxCapacityPercentage: toBig(cfg.max_capacity_percentage),
|
|
95
|
-
maxUtilizationPercentage: toBig(cfg.max_utilization_percentage),
|
|
96
|
-
epochStartedAt: toBig(cfg.epoch_started_at),
|
|
97
|
-
epochUsedAmount: toBig(cfg.epoch_used_amount),
|
|
98
|
-
feeMultiplierCurve: curve
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/** Caller's ALV (non-transferable) share balance from the `shares` table. */
|
|
103
|
-
async shareOf(vaultId, account) {
|
|
104
|
-
const fields = await this.vaultFields(vaultId);
|
|
105
|
-
const tableId = unwrapMoveFields(fields.shares)?.id?.id;
|
|
106
|
-
if (!tableId)
|
|
107
|
-
return 0n;
|
|
108
|
-
return toBig(await this.readTableValue(tableId, "address", account));
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Live quote for the EmberShare swap-with-holdback "instant withdraw" on Sui.
|
|
112
|
-
* Reads ALV + source vault fields and replicates `swap_ember_shares` math.
|
|
113
|
-
*
|
|
114
|
-
* `currentHeldValue` defaults to 0 (the common case before any swap); pass it when the
|
|
115
|
-
* ALV already custodies source shares. `availableCapacity` (remaining 24h epoch capacity,
|
|
116
|
-
* collateral units) is bfvs-sourced when precise epoch accounting is required — when
|
|
117
|
-
* omitted, only the utilization cap gates `withinCapacity`.
|
|
118
|
-
*/
|
|
119
|
-
async previewSwapInstantWithdraw(vaultId, sourceVaultId, shareAmount, owner, opts = {}) {
|
|
120
|
-
const fields = await this.vaultFields(vaultId);
|
|
121
|
-
const atomicRate = toBig(unwrapMoveFields(fields.rate)?.value);
|
|
122
|
-
const totalShares = toBig(fields.total_shares);
|
|
123
|
-
const feeWaived = fields.fee_waived_addresses || [];
|
|
124
|
-
const holdbackWaived = fields.holdback_waived_addresses || [];
|
|
125
|
-
const [config, sourceRate] = await Promise.all([
|
|
126
|
-
this.getEmberShareConfig(vaultId, sourceVaultId),
|
|
127
|
-
this.rateValue(sourceVaultId)
|
|
128
|
-
]);
|
|
129
|
-
if (!config)
|
|
130
|
-
throw new Error(`source vault ${sourceVaultId} not whitelisted`);
|
|
131
|
-
// gross = calculate_amount_from_shares(source, shareAmount) = div_ceil(shares, sourceRate)
|
|
132
|
-
const grossAmount = divCeil(shareAmount, sourceRate);
|
|
133
|
-
// tvl = get_vault_tvl(atomic) = div(total_shares, atomicRate)
|
|
134
|
-
const vaultTotalAssets = divFloor(totalShares, atomicRate);
|
|
135
|
-
return computeSwapQuote({
|
|
136
|
-
scale: SUI_SCALE,
|
|
137
|
-
grossAmount,
|
|
138
|
-
shareAmount,
|
|
139
|
-
userShareBalance: opts.userShareBalance ?? 0n,
|
|
140
|
-
currentHeldValue: opts.currentHeldValue ?? 0n,
|
|
141
|
-
vaultTotalAssets,
|
|
142
|
-
// Default to "epoch capacity not binding" when not supplied; the on-chain
|
|
143
|
-
// swap still enforces it. Pass from bfvs for an exact pre-check.
|
|
144
|
-
availableCapacity: opts.availableCapacity ?? grossAmount,
|
|
145
|
-
config: {
|
|
146
|
-
feePercentage: config.feePercentage,
|
|
147
|
-
holdbackPercentage: config.holdbackPercentage,
|
|
148
|
-
maxUtilizationPercentage: config.maxUtilizationPercentage,
|
|
149
|
-
feeMultiplierCurve: config.feeMultiplierCurve
|
|
150
|
-
},
|
|
151
|
-
feeWaived: feeWaived.includes(owner),
|
|
152
|
-
holdbackWaived: holdbackWaived.includes(owner)
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Live quote for the ALV's own plain `instant_withdraw` on Sui (atomic-share holders).
|
|
157
|
-
* `net = gross - fee`, no holdback, capped by `max_instant_withdraw_shares`.
|
|
158
|
-
*/
|
|
159
|
-
async previewPlainInstantWithdraw(vaultId, shareAmount, owner) {
|
|
160
|
-
const fields = await this.vaultFields(vaultId);
|
|
161
|
-
const atomicRate = toBig(unwrapMoveFields(fields.rate)?.value);
|
|
162
|
-
const grossAmount = divCeil(shareAmount, atomicRate);
|
|
163
|
-
const userShareBalance = await this.shareOf(vaultId, owner);
|
|
164
|
-
return computePlainInstantQuote({
|
|
165
|
-
scale: SUI_SCALE,
|
|
166
|
-
grossAmount,
|
|
167
|
-
shareAmount,
|
|
168
|
-
userShareBalance,
|
|
169
|
-
instantWithdrawFeePercentage: toBig(fields.instant_withdraw_fee_percentage),
|
|
170
|
-
cumulativeInstantWithdrawShares: toBig(fields.cumulative_instant_withdraw_shares),
|
|
171
|
-
maxInstantWithdrawShares: toBig(fields.max_instant_withdraw_shares)
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
}
|
|
File without changes
|
/package/dist/src/api/v2/models/{evm-atomic-liquidity-lib.js → vault-transparency-report.js}
RENAMED
|
File without changes
|