@affluent-org/sdk 0.0.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.
- package/.prettierrc +11 -0
- package/Refactoring.md +548 -0
- package/dist/_compiled/Account.compiled.json +1 -0
- package/dist/_compiled/Receipt.compiled.json +1 -0
- package/dist/_compiled/WTONWallet.compiled.json +1 -0
- package/dist/_compiled/index.d.ts +4 -0
- package/dist/_compiled/index.js +12 -0
- package/dist/affluent.d.ts +14 -0
- package/dist/affluent.js +20 -0
- package/dist/constants/constants.d.ts +2 -0
- package/dist/constants/constants.js +5 -0
- package/dist/constants/contracts.d.ts +9 -0
- package/dist/constants/contracts.js +18 -0
- package/dist/context.d.ts +43 -0
- package/dist/context.js +90 -0
- package/dist/contracts/common/type.d.ts +16 -0
- package/dist/contracts/common/type.js +2 -0
- package/dist/contracts/common/utils.d.ts +3 -0
- package/dist/contracts/common/utils.js +16 -0
- package/dist/contracts/core/account/index.d.ts +38 -0
- package/dist/contracts/core/account/index.js +128 -0
- package/dist/contracts/core/account/type.d.ts +18 -0
- package/dist/contracts/core/account/type.js +2 -0
- package/dist/contracts/core/pool/index.d.ts +149 -0
- package/dist/contracts/core/pool/index.js +379 -0
- package/dist/contracts/core/pool/serializer.d.ts +15 -0
- package/dist/contracts/core/pool/serializer.js +307 -0
- package/dist/contracts/core/pool/type.d.ts +136 -0
- package/dist/contracts/core/pool/type.js +2 -0
- package/dist/contracts/dedust-farm/MockDedustFarm.d.ts +41 -0
- package/dist/contracts/dedust-farm/MockDedustFarm.js +79 -0
- package/dist/contracts/external/tonstaker.d.ts +18 -0
- package/dist/contracts/external/tonstaker.js +26 -0
- package/dist/contracts/factory/factory.d.ts +24 -0
- package/dist/contracts/factory/factory.js +58 -0
- package/dist/contracts/factory/type.d.ts +11 -0
- package/dist/contracts/factory/type.js +2 -0
- package/dist/contracts/farm/distributor.d.ts +43 -0
- package/dist/contracts/farm/distributor.js +83 -0
- package/dist/contracts/farm/receipt.d.ts +40 -0
- package/dist/contracts/farm/receipt.js +68 -0
- package/dist/contracts/irm/jump-irm/serializer.d.ts +4 -0
- package/dist/contracts/irm/jump-irm/serializer.js +26 -0
- package/dist/contracts/irm/jump-irm/type.d.ts +8 -0
- package/dist/contracts/irm/jump-irm/type.js +2 -0
- package/dist/contracts/jetton/jetton-minter.d.ts +23 -0
- package/dist/contracts/jetton/jetton-minter.js +46 -0
- package/dist/contracts/jetton/jetton-wallet.d.ts +67 -0
- package/dist/contracts/jetton/jetton-wallet.js +119 -0
- package/dist/contracts/jetton/type.d.ts +7 -0
- package/dist/contracts/jetton/type.js +2 -0
- package/dist/contracts/liquid_token/dedust/minter.d.ts +56 -0
- package/dist/contracts/liquid_token/dedust/minter.js +112 -0
- package/dist/contracts/liquid_token/dedust/wallet.d.ts +127 -0
- package/dist/contracts/liquid_token/dedust/wallet.js +213 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.d.ts +53 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonMinter.js +110 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.d.ts +169 -0
- package/dist/contracts/liquid_token/stonfi/LFStonfiJettonWallet.js +288 -0
- package/dist/contracts/oracle/composite-onchain-oracle/index.d.ts +108 -0
- package/dist/contracts/oracle/composite-onchain-oracle/index.js +185 -0
- package/dist/contracts/oracle/parser.d.ts +7 -0
- package/dist/contracts/oracle/parser.js +77 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/index.d.ts +56 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/index.js +159 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/serializer.d.ts +4 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/serializer.js +137 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/type.d.ts +57 -0
- package/dist/contracts/oracle/redstone-onchain-oracle/type.js +18 -0
- package/dist/contracts/oracle/redstone-oracle/serializer.d.ts +3 -0
- package/dist/contracts/oracle/redstone-oracle/serializer.js +30 -0
- package/dist/contracts/oracle/redstone-oracle/type.d.ts +9 -0
- package/dist/contracts/oracle/redstone-oracle/type.js +2 -0
- package/dist/contracts/oracle/redstone-parser.d.ts +9 -0
- package/dist/contracts/oracle/redstone-parser.js +58 -0
- package/dist/contracts/rfq/rfq_auction/index.d.ts +216 -0
- package/dist/contracts/rfq/rfq_auction/index.js +334 -0
- package/dist/contracts/rfq/rfq_batch/index.d.ts +346 -0
- package/dist/contracts/rfq/rfq_batch/index.js +448 -0
- package/dist/contracts/rfq/rfq_event_emitter/index.d.ts +132 -0
- package/dist/contracts/rfq/rfq_event_emitter/index.js +143 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmItem.d.ts +41 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmItem.js +83 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.d.ts +45 -0
- package/dist/contracts/stonfi-farm/MockStonfiFarmMinter.js +92 -0
- package/dist/contracts/unknown-contract/index.d.ts +14 -0
- package/dist/contracts/unknown-contract/index.js +18 -0
- package/dist/contracts/vault/share-vault/index.d.ts +206 -0
- package/dist/contracts/vault/share-vault/index.js +373 -0
- package/dist/contracts/vault/strategy-vault/codec.d.ts +710 -0
- package/dist/contracts/vault/strategy-vault/codec.js +1256 -0
- package/dist/contracts/vault/strategy-vault/computation.d.ts +11 -0
- package/dist/contracts/vault/strategy-vault/computation.js +56 -0
- package/dist/contracts/vault/strategy-vault/constants.d.ts +163 -0
- package/dist/contracts/vault/strategy-vault/constants.js +170 -0
- package/dist/contracts/vault/strategy-vault/index.d.ts +587 -0
- package/dist/contracts/vault/strategy-vault/index.js +406 -0
- package/dist/contracts/vault/strategy-vault/type.d.ts +115 -0
- package/dist/contracts/vault/strategy-vault/type.js +2 -0
- package/dist/contracts/wton/jetton-minter.d.ts +35 -0
- package/dist/contracts/wton/jetton-minter.js +71 -0
- package/dist/contracts/wton/jetton-wallet.d.ts +90 -0
- package/dist/contracts/wton/jetton-wallet.js +153 -0
- package/dist/contracts/wton/type.d.ts +7 -0
- package/dist/contracts/wton/type.js +2 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.js +65 -0
- package/dist/lib/assert.d.ts +1 -0
- package/dist/lib/assert.js +9 -0
- package/dist/lib/query-cache.d.ts +5 -0
- package/dist/lib/query-cache.js +57 -0
- package/dist/lib/send-msg.d.ts +11 -0
- package/dist/lib/send-msg.js +9 -0
- package/dist/services/composite-oracle/computation.d.ts +55 -0
- package/dist/services/composite-oracle/computation.js +295 -0
- package/dist/services/composite-oracle/index.d.ts +45 -0
- package/dist/services/composite-oracle/index.js +110 -0
- package/dist/services/composite-oracle/query.d.ts +36 -0
- package/dist/services/composite-oracle/query.js +251 -0
- package/dist/services/composite-oracle/types.d.ts +82 -0
- package/dist/services/composite-oracle/types.js +11 -0
- package/dist/services/pool/computation.d.ts +75 -0
- package/dist/services/pool/computation.js +219 -0
- package/dist/services/pool/index.d.ts +94 -0
- package/dist/services/pool/index.js +139 -0
- package/dist/services/pool/oracle.d.ts +20 -0
- package/dist/services/pool/oracle.js +61 -0
- package/dist/services/pool/owner/index.d.ts +37 -0
- package/dist/services/pool/owner/index.js +76 -0
- package/dist/services/pool/owner/types.d.ts +18 -0
- package/dist/services/pool/owner/types.js +2 -0
- package/dist/services/pool/query.d.ts +64 -0
- package/dist/services/pool/query.js +282 -0
- package/dist/services/pool/user/index.d.ts +86 -0
- package/dist/services/pool/user/index.js +285 -0
- package/dist/services/pool/user/types.d.ts +44 -0
- package/dist/services/pool/user/types.js +2 -0
- package/dist/services/rfq-auction/index.d.ts +81 -0
- package/dist/services/rfq-auction/index.js +93 -0
- package/dist/services/rfq-auction/oracle.d.ts +19 -0
- package/dist/services/rfq-auction/oracle.js +60 -0
- package/dist/services/rfq-auction/query.d.ts +50 -0
- package/dist/services/rfq-auction/query.js +19 -0
- package/dist/services/rfq-auction/user/index.d.ts +63 -0
- package/dist/services/rfq-auction/user/index.js +218 -0
- package/dist/services/rfq-auction/user/types.d.ts +29 -0
- package/dist/services/rfq-auction/user/types.js +2 -0
- package/dist/services/rfq-batch/index.d.ts +78 -0
- package/dist/services/rfq-batch/index.js +132 -0
- package/dist/services/rfq-batch/oracle.d.ts +22 -0
- package/dist/services/rfq-batch/oracle.js +54 -0
- package/dist/services/rfq-batch/query.d.ts +46 -0
- package/dist/services/rfq-batch/query.js +34 -0
- package/dist/services/rfq-batch/user/index.d.ts +79 -0
- package/dist/services/rfq-batch/user/index.js +171 -0
- package/dist/services/rfq-batch/user/types.d.ts +37 -0
- package/dist/services/rfq-batch/user/types.js +2 -0
- package/dist/services/share-vault/computation.d.ts +24 -0
- package/dist/services/share-vault/computation.js +42 -0
- package/dist/services/share-vault/index.d.ts +90 -0
- package/dist/services/share-vault/index.js +128 -0
- package/dist/services/share-vault/manager/index.d.ts +40 -0
- package/dist/services/share-vault/manager/index.js +111 -0
- package/dist/services/share-vault/manager/types.d.ts +23 -0
- package/dist/services/share-vault/manager/types.js +2 -0
- package/dist/services/share-vault/owner/index.d.ts +64 -0
- package/dist/services/share-vault/owner/index.js +122 -0
- package/dist/services/share-vault/owner/types.d.ts +33 -0
- package/dist/services/share-vault/owner/types.js +2 -0
- package/dist/services/share-vault/query.d.ts +34 -0
- package/dist/services/share-vault/query.js +138 -0
- package/dist/services/share-vault/user/index.d.ts +33 -0
- package/dist/services/share-vault/user/index.js +106 -0
- package/dist/services/share-vault/user/types.d.ts +13 -0
- package/dist/services/share-vault/user/types.js +2 -0
- package/dist/services/strategy-vault/index.d.ts +2124 -0
- package/dist/services/strategy-vault/index.js +268 -0
- package/dist/services/strategy-vault/manager/index.d.ts +1968 -0
- package/dist/services/strategy-vault/manager/index.js +475 -0
- package/dist/services/strategy-vault/manager/types.d.ts +144 -0
- package/dist/services/strategy-vault/manager/types.js +2 -0
- package/dist/services/strategy-vault/oracle.d.ts +66 -0
- package/dist/services/strategy-vault/oracle.js +162 -0
- package/dist/services/strategy-vault/owner/index.d.ts +277 -0
- package/dist/services/strategy-vault/owner/index.js +333 -0
- package/dist/services/strategy-vault/owner/types.d.ts +146 -0
- package/dist/services/strategy-vault/owner/types.js +2 -0
- package/dist/services/strategy-vault/query.d.ts +138 -0
- package/dist/services/strategy-vault/query.js +59 -0
- package/dist/services/strategy-vault/user/index.d.ts +89 -0
- package/dist/services/strategy-vault/user/index.js +219 -0
- package/dist/services/strategy-vault/user/types.d.ts +46 -0
- package/dist/services/strategy-vault/user/types.js +2 -0
- package/dist/types/sender.d.ts +7 -0
- package/dist/types/sender.js +2 -0
- package/dist/utils/action-parser.d.ts +7 -0
- package/dist/utils/action-parser.js +20 -0
- package/dist/utils/external-message-hash.d.ts +45 -0
- package/dist/utils/external-message-hash.js +65 -0
- package/dist/utils/oracle/redstone/readonlyCachedRedstone.d.ts +3 -0
- package/dist/utils/oracle/redstone/readonlyCachedRedstone.js +25 -0
- package/dist/utils/oracle/redstone/redstoneHelper.d.ts +21 -0
- package/dist/utils/oracle/redstone/redstoneHelper.js +228 -0
- package/dist/utils/parser.d.ts +40 -0
- package/dist/utils/parser.js +580 -0
- package/dist/utils/pending-tracker/index.d.ts +14 -0
- package/dist/utils/pending-tracker/index.js +34 -0
- package/dist/utils/pending-tracker/trackable-sender.d.ts +16 -0
- package/dist/utils/pending-tracker/trackable-sender.js +87 -0
- package/dist/utils/pending-tracker/type.d.ts +78 -0
- package/dist/utils/pending-tracker/type.js +2 -0
- package/dist/utils/pending-tracker/v3-client.d.ts +31 -0
- package/dist/utils/pending-tracker/v3-client.js +104 -0
- package/dist/utils/risk_calculator/risk_calculator.d.ts +45 -0
- package/dist/utils/risk_calculator/risk_calculator.js +332 -0
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.js +12 -0
- package/package.json +46 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.createSetWhitelistPoolsMsg = createSetWhitelistPoolsMsg;
|
|
18
|
+
exports.createSetGasConfigMsg = createSetGasConfigMsg;
|
|
19
|
+
exports.createChangeManagerMsg = createChangeManagerMsg;
|
|
20
|
+
exports.createChangeAdminMsg = createChangeAdminMsg;
|
|
21
|
+
exports.createUpgradeCodeMsg = createUpgradeCodeMsg;
|
|
22
|
+
const core_1 = require("@ton/core");
|
|
23
|
+
const utils_1 = require("../../../contracts/common/utils");
|
|
24
|
+
const share_vault_1 = require("../../../contracts/vault/share-vault");
|
|
25
|
+
__exportStar(require("./types"), exports);
|
|
26
|
+
const DEFAULT_VALUE = (0, core_1.toNano)(0.1);
|
|
27
|
+
// ============================================================
|
|
28
|
+
// Set Whitelist Pools
|
|
29
|
+
// ============================================================
|
|
30
|
+
async function createSetWhitelistPoolsMsg(ctx, params, value) {
|
|
31
|
+
const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
|
|
32
|
+
const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
|
|
33
|
+
const whitelists = params.whitelists.map(([addr, flag]) => [(0, utils_1.toAddress)(addr), flag]);
|
|
34
|
+
const opts = {
|
|
35
|
+
whitelists,
|
|
36
|
+
queryID: params.queryId,
|
|
37
|
+
};
|
|
38
|
+
return {
|
|
39
|
+
opts,
|
|
40
|
+
input: {
|
|
41
|
+
to: vault.address,
|
|
42
|
+
value: value ?? DEFAULT_VALUE,
|
|
43
|
+
body: share_vault_1.ShareVault.createSetWhitelistPoolsMsgBody(opts),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// ============================================================
|
|
48
|
+
// Set Gas Config
|
|
49
|
+
// ============================================================
|
|
50
|
+
async function createSetGasConfigMsg(ctx, params, value) {
|
|
51
|
+
const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
|
|
52
|
+
const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
|
|
53
|
+
const opts = {
|
|
54
|
+
gasFee: params.gasConfig,
|
|
55
|
+
queryID: params.queryId,
|
|
56
|
+
};
|
|
57
|
+
return {
|
|
58
|
+
opts,
|
|
59
|
+
input: {
|
|
60
|
+
to: vault.address,
|
|
61
|
+
value: value ?? DEFAULT_VALUE,
|
|
62
|
+
body: share_vault_1.ShareVault.createSetGasConfigMsgBody(opts),
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
// ============================================================
|
|
67
|
+
// Change Manager
|
|
68
|
+
// ============================================================
|
|
69
|
+
async function createChangeManagerMsg(ctx, params, value) {
|
|
70
|
+
const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
|
|
71
|
+
const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
|
|
72
|
+
const opts = {
|
|
73
|
+
manager: (0, utils_1.toAddress)(params.newManager),
|
|
74
|
+
queryID: params.queryId,
|
|
75
|
+
};
|
|
76
|
+
return {
|
|
77
|
+
opts,
|
|
78
|
+
input: {
|
|
79
|
+
to: vault.address,
|
|
80
|
+
value: value ?? DEFAULT_VALUE,
|
|
81
|
+
body: share_vault_1.ShareVault.createChangeManagerMsgBody(opts),
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
// ============================================================
|
|
86
|
+
// Change Admin
|
|
87
|
+
// ============================================================
|
|
88
|
+
async function createChangeAdminMsg(ctx, params, value) {
|
|
89
|
+
const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
|
|
90
|
+
const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
|
|
91
|
+
const opts = {
|
|
92
|
+
address: (0, utils_1.toAddress)(params.newAdmin),
|
|
93
|
+
queryID: params.queryId ? Number(params.queryId) : undefined,
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
opts,
|
|
97
|
+
input: {
|
|
98
|
+
to: vault.address,
|
|
99
|
+
value: value ?? DEFAULT_VALUE,
|
|
100
|
+
body: share_vault_1.ShareVault.createChangeAdminMsgBody(opts),
|
|
101
|
+
},
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// ============================================================
|
|
105
|
+
// Upgrade Code
|
|
106
|
+
// ============================================================
|
|
107
|
+
async function createUpgradeCodeMsg(ctx, params, value) {
|
|
108
|
+
const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
|
|
109
|
+
const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
|
|
110
|
+
const opts = {
|
|
111
|
+
newCode: params.newCode,
|
|
112
|
+
queryID: params.queryId ? Number(params.queryId) : undefined,
|
|
113
|
+
};
|
|
114
|
+
return {
|
|
115
|
+
opts,
|
|
116
|
+
input: {
|
|
117
|
+
to: vault.address,
|
|
118
|
+
value: value ?? DEFAULT_VALUE,
|
|
119
|
+
body: share_vault_1.ShareVault.createUpgradeCodeMsgBody(opts),
|
|
120
|
+
},
|
|
121
|
+
};
|
|
122
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Cell } from "@ton/core";
|
|
2
|
+
import { AddressInput, AddressLike } from "../../../contracts/common/type";
|
|
3
|
+
import { ShareVaultGasConfig } from "../../../contracts/vault/share-vault";
|
|
4
|
+
export type SetWhitelistPoolsParams = {
|
|
5
|
+
vaultAddress: AddressInput;
|
|
6
|
+
whitelists: [AddressLike, 0 | 1][];
|
|
7
|
+
queryId?: bigint;
|
|
8
|
+
value?: bigint;
|
|
9
|
+
};
|
|
10
|
+
export type SetGasConfigParams = {
|
|
11
|
+
vaultAddress: AddressInput;
|
|
12
|
+
gasConfig: ShareVaultGasConfig;
|
|
13
|
+
queryId?: bigint;
|
|
14
|
+
value?: bigint;
|
|
15
|
+
};
|
|
16
|
+
export type ChangeManagerParams = {
|
|
17
|
+
vaultAddress: AddressInput;
|
|
18
|
+
newManager: AddressLike;
|
|
19
|
+
queryId?: bigint;
|
|
20
|
+
value?: bigint;
|
|
21
|
+
};
|
|
22
|
+
export type ChangeAdminParams = {
|
|
23
|
+
vaultAddress: AddressInput;
|
|
24
|
+
newAdmin: AddressLike;
|
|
25
|
+
queryId?: bigint;
|
|
26
|
+
value?: bigint;
|
|
27
|
+
};
|
|
28
|
+
export type UpgradeCodeParams = {
|
|
29
|
+
vaultAddress: AddressInput;
|
|
30
|
+
newCode: Cell;
|
|
31
|
+
queryId?: bigint;
|
|
32
|
+
value?: bigint;
|
|
33
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Address } from "@ton/core";
|
|
2
|
+
import { AffluentContext } from "../../context";
|
|
3
|
+
import { AddressInput, AddressLike } from "../../contracts/common/type";
|
|
4
|
+
import { ShareVault, ShareVaultState } from "../../contracts/vault/share-vault";
|
|
5
|
+
import { JettonWallet } from "../../contracts/jetton/jetton-wallet";
|
|
6
|
+
import { PoolInfoForShareVault, PoolTuple } from "./computation";
|
|
7
|
+
export { PoolInfoForShareVault, PoolTuple, getPoolTupleSortedByTargetWeight } from "./computation";
|
|
8
|
+
/**
|
|
9
|
+
* Get ShareVault contract instance
|
|
10
|
+
*/
|
|
11
|
+
export declare function getVault(ctx: AffluentContext, vaultAddress: AddressInput): import("@ton/core").OpenedContract<ShareVault>;
|
|
12
|
+
/**
|
|
13
|
+
* Get ShareVault data
|
|
14
|
+
*/
|
|
15
|
+
export declare function getVaultData(ctx: AffluentContext, vaultAddress: AddressInput): Promise<ShareVaultState>;
|
|
16
|
+
/**
|
|
17
|
+
* Get user's vault share wallet address
|
|
18
|
+
*/
|
|
19
|
+
export declare function getVaultWalletAddress(ctx: AffluentContext, vaultAddress: AddressInput, userAddress: AddressLike): Promise<Address>;
|
|
20
|
+
/**
|
|
21
|
+
* Get user's vault share wallet
|
|
22
|
+
*/
|
|
23
|
+
export declare function getVaultWallet(ctx: AffluentContext, vaultAddress: AddressInput, userAddress: AddressLike): Promise<import("@ton/core").OpenedContract<JettonWallet>>;
|
|
24
|
+
/**
|
|
25
|
+
* Get pool info for all whitelisted pools
|
|
26
|
+
*/
|
|
27
|
+
export declare function getPoolInfoForShareVault(ctx: AffluentContext, vaultData: ShareVaultState): Promise<Record<string, PoolInfoForShareVault>>;
|
|
28
|
+
/**
|
|
29
|
+
* Estimate how many pools need to be withdrawn from to fulfill a withdrawal request
|
|
30
|
+
*/
|
|
31
|
+
export declare function estimateWithdrawPoolCount(ctx: AffluentContext, vaultData: ShareVaultState, requestedShares: bigint): Promise<{
|
|
32
|
+
count: number;
|
|
33
|
+
sortedPools: PoolTuple[];
|
|
34
|
+
}>;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getPoolTupleSortedByTargetWeight = void 0;
|
|
37
|
+
exports.getVault = getVault;
|
|
38
|
+
exports.getVaultData = getVaultData;
|
|
39
|
+
exports.getVaultWalletAddress = getVaultWalletAddress;
|
|
40
|
+
exports.getVaultWallet = getVaultWallet;
|
|
41
|
+
exports.getPoolInfoForShareVault = getPoolInfoForShareVault;
|
|
42
|
+
exports.estimateWithdrawPoolCount = estimateWithdrawPoolCount;
|
|
43
|
+
const core_1 = require("@ton/core");
|
|
44
|
+
const utils_1 = require("../../contracts/common/utils");
|
|
45
|
+
const share_vault_1 = require("../../contracts/vault/share-vault");
|
|
46
|
+
const pool_1 = require("../../contracts/core/pool");
|
|
47
|
+
const jetton_wallet_1 = require("../../contracts/jetton/jetton-wallet");
|
|
48
|
+
const computation_1 = require("./computation");
|
|
49
|
+
// Re-export computation functions and types
|
|
50
|
+
var computation_2 = require("./computation");
|
|
51
|
+
Object.defineProperty(exports, "getPoolTupleSortedByTargetWeight", { enumerable: true, get: function () { return computation_2.getPoolTupleSortedByTargetWeight; } });
|
|
52
|
+
/**
|
|
53
|
+
* Get ShareVault contract instance
|
|
54
|
+
*/
|
|
55
|
+
function getVault(ctx, vaultAddress) {
|
|
56
|
+
return ctx.getByContract(share_vault_1.ShareVault, (0, utils_1.toAddress)(vaultAddress));
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get ShareVault data
|
|
60
|
+
*/
|
|
61
|
+
async function getVaultData(ctx, vaultAddress) {
|
|
62
|
+
const vault = getVault(ctx, vaultAddress);
|
|
63
|
+
return vault.getVaultData();
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get user's vault share wallet address
|
|
67
|
+
*/
|
|
68
|
+
async function getVaultWalletAddress(ctx, vaultAddress, userAddress) {
|
|
69
|
+
const vault = getVault(ctx, vaultAddress);
|
|
70
|
+
return vault.getWalletAddress((0, utils_1.toAddress)(userAddress));
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get user's vault share wallet
|
|
74
|
+
*/
|
|
75
|
+
async function getVaultWallet(ctx, vaultAddress, userAddress) {
|
|
76
|
+
const walletAddress = await getVaultWalletAddress(ctx, vaultAddress, userAddress);
|
|
77
|
+
return ctx.getByContract(jetton_wallet_1.JettonWallet, walletAddress);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get pool info for all whitelisted pools
|
|
81
|
+
*/
|
|
82
|
+
async function getPoolInfoForShareVault(ctx, vaultData) {
|
|
83
|
+
const poolInfo = {};
|
|
84
|
+
const vaultAddress = vaultData.address;
|
|
85
|
+
const assetAddress = vaultData.asset;
|
|
86
|
+
for (const poolAddress of Object.keys(vaultData.whitelistedPools)) {
|
|
87
|
+
const pool = ctx.getByContract(pool_1.Pool, core_1.Address.parse(poolAddress));
|
|
88
|
+
const poolData = await pool.getPoolData();
|
|
89
|
+
const assetState = poolData.assets[assetAddress.toString()];
|
|
90
|
+
if (!assetState)
|
|
91
|
+
continue;
|
|
92
|
+
const vaultAccountAddress = await pool.getAccountAddress(vaultAddress);
|
|
93
|
+
let vaultSupplyAmount = 0n;
|
|
94
|
+
try {
|
|
95
|
+
const { Account } = await Promise.resolve().then(() => __importStar(require("../../contracts/core/account")));
|
|
96
|
+
const vaultAccount = ctx.getByContract(Account, vaultAccountAddress);
|
|
97
|
+
const accountData = await vaultAccount.getAccountData();
|
|
98
|
+
const assetStatus = accountData.status[assetAddress.toString()];
|
|
99
|
+
if (assetStatus && assetState.totalSupplyShare > 0n) {
|
|
100
|
+
vaultSupplyAmount = (assetStatus.supply * assetState.totalSupplyAmount) / assetState.totalSupplyShare;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Account not deployed
|
|
105
|
+
}
|
|
106
|
+
poolInfo[poolAddress] = {
|
|
107
|
+
cash: assetState.cash,
|
|
108
|
+
totalSupplyAmount: assetState.totalSupplyAmount,
|
|
109
|
+
totalSupplyShare: assetState.totalSupplyShare,
|
|
110
|
+
vaultSupplyAmount,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
return poolInfo;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Estimate how many pools need to be withdrawn from to fulfill a withdrawal request
|
|
117
|
+
*/
|
|
118
|
+
async function estimateWithdrawPoolCount(ctx, vaultData, requestedShares) {
|
|
119
|
+
const poolInfo = await getPoolInfoForShareVault(ctx, vaultData);
|
|
120
|
+
const totalAssetAmount = Object.values(poolInfo).reduce((acc, p) => acc + p.vaultSupplyAmount, 0n) + vaultData.cash;
|
|
121
|
+
const sortedPools = (0, computation_1.getPoolTupleSortedByTargetWeight)(vaultData.whitelistedPools, totalAssetAmount, vaultData.totalTargetWeight, poolInfo);
|
|
122
|
+
if (vaultData.totalSupply === 0n) {
|
|
123
|
+
return { count: 0, sortedPools };
|
|
124
|
+
}
|
|
125
|
+
const requestedAmount = (requestedShares * totalAssetAmount) / vaultData.totalSupply;
|
|
126
|
+
let remainingAmount = requestedAmount - vaultData.cash;
|
|
127
|
+
if (remainingAmount <= 0n) {
|
|
128
|
+
return { count: 0, sortedPools };
|
|
129
|
+
}
|
|
130
|
+
let count = 0;
|
|
131
|
+
for (const pool of sortedPools) {
|
|
132
|
+
if (remainingAmount <= 0n)
|
|
133
|
+
break;
|
|
134
|
+
remainingAmount -= pool.withdrawableAmount;
|
|
135
|
+
count++;
|
|
136
|
+
}
|
|
137
|
+
return { count, sortedPools };
|
|
138
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Address, Cell } from "@ton/core";
|
|
2
|
+
import { AffluentContext } from "../../../context";
|
|
3
|
+
import { AddressSender } from "../../../types/sender";
|
|
4
|
+
import { SupplyParams, WithdrawParams } from "./types";
|
|
5
|
+
export * from "./types";
|
|
6
|
+
export declare function createSupplyMsg(ctx: AffluentContext, sender: AddressSender, params: SupplyParams, value?: bigint): Promise<{
|
|
7
|
+
opts: {
|
|
8
|
+
recipient: Address;
|
|
9
|
+
response: Address;
|
|
10
|
+
amount: bigint;
|
|
11
|
+
forwardTonAmount: bigint;
|
|
12
|
+
forwardPayload: Cell;
|
|
13
|
+
queryId: bigint | undefined;
|
|
14
|
+
};
|
|
15
|
+
input: {
|
|
16
|
+
to: Address;
|
|
17
|
+
value: bigint;
|
|
18
|
+
body: Cell;
|
|
19
|
+
};
|
|
20
|
+
}>;
|
|
21
|
+
export declare function createWithdrawMsg(ctx: AffluentContext, sender: AddressSender, params: WithdrawParams, value?: bigint): Promise<{
|
|
22
|
+
opts: {
|
|
23
|
+
amount: bigint;
|
|
24
|
+
response: Address;
|
|
25
|
+
forwardPayload: Cell;
|
|
26
|
+
queryId: bigint | undefined;
|
|
27
|
+
};
|
|
28
|
+
input: {
|
|
29
|
+
to: Address;
|
|
30
|
+
value: bigint;
|
|
31
|
+
body: Cell;
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.createSupplyMsg = createSupplyMsg;
|
|
18
|
+
exports.createWithdrawMsg = createWithdrawMsg;
|
|
19
|
+
const utils_1 = require("../../../contracts/common/utils");
|
|
20
|
+
const share_vault_1 = require("../../../contracts/vault/share-vault");
|
|
21
|
+
const jetton_minter_1 = require("../../../contracts/jetton/jetton-minter");
|
|
22
|
+
const jetton_wallet_1 = require("../../../contracts/jetton/jetton-wallet");
|
|
23
|
+
const jetton_wallet_2 = require("../../../contracts/wton/jetton-wallet");
|
|
24
|
+
const jetton_minter_2 = require("../../../contracts/wton/jetton-minter");
|
|
25
|
+
const query_1 = require("../query");
|
|
26
|
+
__exportStar(require("./types"), exports);
|
|
27
|
+
// ============================================================
|
|
28
|
+
// Supply
|
|
29
|
+
// ============================================================
|
|
30
|
+
async function createSupplyMsg(ctx, sender, params, value) {
|
|
31
|
+
const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
|
|
32
|
+
const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
|
|
33
|
+
const vaultData = await vault.getVaultData();
|
|
34
|
+
const assetAddress = vaultData.asset;
|
|
35
|
+
const isWTON = ctx.isWTON(assetAddress);
|
|
36
|
+
const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Supply, share_vault_1.ShareVault.Gas.baseFee, Object.keys(vaultData.whitelistedPools).length, vaultData.minimumGasFee, isWTON);
|
|
37
|
+
const forwardPayload = share_vault_1.ShareVault.createSupplyForwardPayload({
|
|
38
|
+
responseAddress: sender.address,
|
|
39
|
+
jettonForwardTonAmount: isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n,
|
|
40
|
+
jettonForwardPayload: isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined,
|
|
41
|
+
});
|
|
42
|
+
const opts = {
|
|
43
|
+
recipient: vaultAddress,
|
|
44
|
+
response: sender.address,
|
|
45
|
+
amount: params.amount,
|
|
46
|
+
forwardTonAmount: gas,
|
|
47
|
+
forwardPayload,
|
|
48
|
+
queryId: params.queryId,
|
|
49
|
+
};
|
|
50
|
+
if (isWTON) {
|
|
51
|
+
const vaultWalletAddress = await ctx.getByContract(jetton_minter_1.JettonMinter, assetAddress).getWalletAddress(vaultAddress);
|
|
52
|
+
const vaultWTONWallet = ctx.getByContract(jetton_wallet_2.WTONWallet, vaultWalletAddress);
|
|
53
|
+
return {
|
|
54
|
+
opts,
|
|
55
|
+
input: {
|
|
56
|
+
to: vaultWTONWallet.address,
|
|
57
|
+
value: value ?? jetton_wallet_2.WTONWallet.Gas.ExternalTransfer,
|
|
58
|
+
body: vaultWTONWallet.createExternalTransferBody(opts),
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const senderWalletAddress = await ctx.getByContract(jetton_minter_1.JettonMinter, assetAddress).getWalletAddress(sender.address);
|
|
64
|
+
const senderWallet = ctx.getByContract(jetton_wallet_1.JettonWallet, senderWalletAddress);
|
|
65
|
+
return {
|
|
66
|
+
opts,
|
|
67
|
+
input: {
|
|
68
|
+
to: senderWallet.address,
|
|
69
|
+
value: value ?? gas + jetton_wallet_1.JettonWallet.Gas.Transfer,
|
|
70
|
+
body: senderWallet.createTransferBody(opts),
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// ============================================================
|
|
76
|
+
// Withdraw
|
|
77
|
+
// ============================================================
|
|
78
|
+
async function createWithdrawMsg(ctx, sender, params, value) {
|
|
79
|
+
const vaultAddress = (0, utils_1.toAddress)(params.vaultAddress);
|
|
80
|
+
const vault = ctx.getByContract(share_vault_1.ShareVault, vaultAddress);
|
|
81
|
+
const vaultData = await vault.getVaultData();
|
|
82
|
+
const assetAddress = vaultData.asset;
|
|
83
|
+
const isWTON = ctx.isWTON(assetAddress);
|
|
84
|
+
// Estimate pool count for gas calculation
|
|
85
|
+
const { count: poolCount } = await (0, query_1.estimateWithdrawPoolCount)(ctx, vaultData, params.amount);
|
|
86
|
+
const gas = share_vault_1.ShareVault.calculateGasFee(share_vault_1.ShareVault.Op.Withdraw, share_vault_1.ShareVault.Gas.baseFee, poolCount, vaultData.minimumGasFee, isWTON);
|
|
87
|
+
const forwardPayload = share_vault_1.ShareVault.createWithdrawForwardPayload({
|
|
88
|
+
jettonForwardTonAmount: isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n,
|
|
89
|
+
jettonForwardPayload: isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined,
|
|
90
|
+
});
|
|
91
|
+
const senderVaultWallet = await (0, query_1.getVaultWallet)(ctx, vaultAddress, sender.address);
|
|
92
|
+
const opts = {
|
|
93
|
+
amount: params.amount,
|
|
94
|
+
response: sender.address,
|
|
95
|
+
forwardPayload,
|
|
96
|
+
queryId: params.queryId,
|
|
97
|
+
};
|
|
98
|
+
return {
|
|
99
|
+
opts,
|
|
100
|
+
input: {
|
|
101
|
+
to: senderVaultWallet.address,
|
|
102
|
+
value: value ?? gas,
|
|
103
|
+
body: senderVaultWallet.createBurnBody(opts),
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AddressInput } from "../../../contracts/common/type";
|
|
2
|
+
export type SupplyParams = {
|
|
3
|
+
vaultAddress: AddressInput;
|
|
4
|
+
amount: bigint;
|
|
5
|
+
queryId?: bigint;
|
|
6
|
+
value?: bigint;
|
|
7
|
+
};
|
|
8
|
+
export type WithdrawParams = {
|
|
9
|
+
vaultAddress: AddressInput;
|
|
10
|
+
amount: bigint;
|
|
11
|
+
queryId?: bigint;
|
|
12
|
+
value?: bigint;
|
|
13
|
+
};
|