@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,89 @@
|
|
|
1
|
+
import { Address, Cell } from "@ton/core";
|
|
2
|
+
import { AffluentContext } from "../../../context";
|
|
3
|
+
import { AddressSender } from "../../../types/sender";
|
|
4
|
+
import { DepositAssetParams, BurnVaultAssetParams, CreateDepositQueueParams, CreateWithdrawQueueParams, CancelQueueParams } from "./types";
|
|
5
|
+
export * from "./types";
|
|
6
|
+
export declare function createDepositAssetMsg(ctx: AffluentContext, sender: AddressSender, params: DepositAssetParams, value?: bigint): Promise<{
|
|
7
|
+
opts: {
|
|
8
|
+
recipient: Address;
|
|
9
|
+
amount: bigint;
|
|
10
|
+
response: Address;
|
|
11
|
+
forwardTonAmount: bigint;
|
|
12
|
+
forwardPayload: Cell;
|
|
13
|
+
queryId: bigint;
|
|
14
|
+
};
|
|
15
|
+
input: {
|
|
16
|
+
to: Address;
|
|
17
|
+
value: bigint;
|
|
18
|
+
body: Cell;
|
|
19
|
+
};
|
|
20
|
+
}>;
|
|
21
|
+
export declare function createBurnVaultAssetMsg(ctx: AffluentContext, sender: AddressSender, params: BurnVaultAssetParams, value?: bigint): Promise<{
|
|
22
|
+
opts: {
|
|
23
|
+
amount: bigint;
|
|
24
|
+
response: Address;
|
|
25
|
+
forwardPayload: Cell;
|
|
26
|
+
queryId: bigint;
|
|
27
|
+
};
|
|
28
|
+
input: {
|
|
29
|
+
to: Address;
|
|
30
|
+
value: bigint;
|
|
31
|
+
body: Cell;
|
|
32
|
+
};
|
|
33
|
+
}>;
|
|
34
|
+
export declare function createDepositQueueMsg(ctx: AffluentContext, sender: AddressSender, params: CreateDepositQueueParams): Promise<{
|
|
35
|
+
opts: {
|
|
36
|
+
recipient: Address;
|
|
37
|
+
amount: bigint;
|
|
38
|
+
response: Address;
|
|
39
|
+
forwardTonAmount: bigint;
|
|
40
|
+
forwardPayload: Cell;
|
|
41
|
+
queryId: bigint;
|
|
42
|
+
};
|
|
43
|
+
input: {
|
|
44
|
+
to: Address;
|
|
45
|
+
value: bigint;
|
|
46
|
+
body: Cell;
|
|
47
|
+
};
|
|
48
|
+
}>;
|
|
49
|
+
export declare function createWithdrawQueueMsg(ctx: AffluentContext, sender: AddressSender, params: CreateWithdrawQueueParams): Promise<{
|
|
50
|
+
opts: {
|
|
51
|
+
amount: bigint;
|
|
52
|
+
response: Address;
|
|
53
|
+
forwardPayload: Cell;
|
|
54
|
+
queryId: bigint;
|
|
55
|
+
};
|
|
56
|
+
input: {
|
|
57
|
+
to: Address;
|
|
58
|
+
value: bigint;
|
|
59
|
+
body: Cell;
|
|
60
|
+
};
|
|
61
|
+
}>;
|
|
62
|
+
export declare function createCancelDepositQueueMsg(ctx: AffluentContext, params: CancelQueueParams): Promise<{
|
|
63
|
+
opts: {
|
|
64
|
+
to: Address;
|
|
65
|
+
value: bigint;
|
|
66
|
+
assetAddress: Address;
|
|
67
|
+
userAddress: Address;
|
|
68
|
+
queryId: bigint;
|
|
69
|
+
};
|
|
70
|
+
input: {
|
|
71
|
+
to: Address;
|
|
72
|
+
value: bigint;
|
|
73
|
+
body: Cell;
|
|
74
|
+
};
|
|
75
|
+
}>;
|
|
76
|
+
export declare function createCancelWithdrawQueueMsg(ctx: AffluentContext, params: CancelQueueParams): Promise<{
|
|
77
|
+
opts: {
|
|
78
|
+
to: Address;
|
|
79
|
+
value: bigint;
|
|
80
|
+
assetAddress: Address;
|
|
81
|
+
userAddress: Address;
|
|
82
|
+
queryId: bigint;
|
|
83
|
+
};
|
|
84
|
+
input: {
|
|
85
|
+
to: Address;
|
|
86
|
+
value: bigint;
|
|
87
|
+
body: Cell;
|
|
88
|
+
};
|
|
89
|
+
}>;
|
|
@@ -0,0 +1,219 @@
|
|
|
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.createDepositAssetMsg = createDepositAssetMsg;
|
|
18
|
+
exports.createBurnVaultAssetMsg = createBurnVaultAssetMsg;
|
|
19
|
+
exports.createDepositQueueMsg = createDepositQueueMsg;
|
|
20
|
+
exports.createWithdrawQueueMsg = createWithdrawQueueMsg;
|
|
21
|
+
exports.createCancelDepositQueueMsg = createCancelDepositQueueMsg;
|
|
22
|
+
exports.createCancelWithdrawQueueMsg = createCancelWithdrawQueueMsg;
|
|
23
|
+
const core_1 = require("@ton/core");
|
|
24
|
+
const utils_1 = require("../../../contracts/common/utils");
|
|
25
|
+
const jetton_minter_1 = require("../../../contracts/jetton/jetton-minter");
|
|
26
|
+
const jetton_wallet_1 = require("../../../contracts/jetton/jetton-wallet");
|
|
27
|
+
const strategy_vault_1 = require("../../../contracts/vault/strategy-vault");
|
|
28
|
+
const computation_1 = require("../../../contracts/vault/strategy-vault/computation");
|
|
29
|
+
const jetton_minter_2 = require("../../../contracts/wton/jetton-minter");
|
|
30
|
+
const jetton_wallet_2 = require("../../../contracts/wton/jetton-wallet");
|
|
31
|
+
const oracle_1 = require("../oracle");
|
|
32
|
+
const query_1 = require("../query");
|
|
33
|
+
__exportStar(require("./types"), exports);
|
|
34
|
+
// ============================================================
|
|
35
|
+
// Shared Helpers
|
|
36
|
+
// ============================================================
|
|
37
|
+
async function createJettonTransferMsg(ctx, senderAddress, assetAddress, transferOpts, sendValue) {
|
|
38
|
+
if (ctx.isWTON(assetAddress)) {
|
|
39
|
+
const wtonMaster = ctx.getByContract(jetton_minter_2.WTONMinter, assetAddress);
|
|
40
|
+
const wtonWallet = ctx.getByContract(jetton_wallet_2.WTONWallet, (0, utils_1.toAddress)(await wtonMaster.getWalletAddress(transferOpts.recipient)));
|
|
41
|
+
return {
|
|
42
|
+
to: wtonWallet.address,
|
|
43
|
+
value: transferOpts.amount + transferOpts.forwardTonAmount + sendValue,
|
|
44
|
+
body: wtonWallet.createExternalTransferBody(transferOpts),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const jettonMaster = ctx.getByContract(jetton_minter_1.JettonMinter, assetAddress);
|
|
49
|
+
const jettonWalletAddress = await jettonMaster.getWalletAddress(senderAddress);
|
|
50
|
+
const jettonWallet = ctx.getByContract(jetton_wallet_1.JettonWallet, jettonWalletAddress);
|
|
51
|
+
return {
|
|
52
|
+
to: jettonWallet.address,
|
|
53
|
+
value: sendValue,
|
|
54
|
+
body: jettonWallet.createTransferBody(transferOpts),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// ============================================================
|
|
59
|
+
// Deposit Functions
|
|
60
|
+
// ============================================================
|
|
61
|
+
async function createDepositAssetMsg(ctx, sender, params, value) {
|
|
62
|
+
const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
|
|
63
|
+
const vaultData = await vault.getVaultData();
|
|
64
|
+
const oracle = new oracle_1.OracleHelper(ctx);
|
|
65
|
+
const { oracleParams: oraclePayload } = await oracle.getOracleParamsForStrategyVaultV2(vaultData, [
|
|
66
|
+
params.assetAddress.toString(),
|
|
67
|
+
...Object.keys(vaultData.assets),
|
|
68
|
+
]);
|
|
69
|
+
const isWTON = ctx.isWTON(params.assetAddress);
|
|
70
|
+
const jettonResponseTonAmount = isWTON ? (0, core_1.toNano)(0.02) : 0n;
|
|
71
|
+
const jettonResponsePayload = isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
|
|
72
|
+
const forwardPayload = strategy_vault_1.StrategyVault.createDepositPayload(sender.address, oraclePayload, jettonResponseTonAmount, jettonResponsePayload);
|
|
73
|
+
const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
|
|
74
|
+
const fee = vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.Deposit] +
|
|
75
|
+
vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.DepositLogic] +
|
|
76
|
+
jettonResponseTonAmount;
|
|
77
|
+
const opts = {
|
|
78
|
+
recipient: vault.address,
|
|
79
|
+
amount: params.amount,
|
|
80
|
+
response: sender.address,
|
|
81
|
+
forwardTonAmount: fee,
|
|
82
|
+
forwardPayload,
|
|
83
|
+
queryId: params.queryId ?? (0, computation_1.createQueryId)({ ...params, forwardPayload }),
|
|
84
|
+
};
|
|
85
|
+
const sendValue = isWTON
|
|
86
|
+
? (value ?? jetton_wallet_2.WTONWallet.Gas.ExternalTransfer)
|
|
87
|
+
: (value ?? fee + (0, core_1.toNano)(0.1));
|
|
88
|
+
const input = await createJettonTransferMsg(ctx, sender.address, assetAddress, opts, sendValue);
|
|
89
|
+
return { opts, input };
|
|
90
|
+
}
|
|
91
|
+
// ============================================================
|
|
92
|
+
// Withdraw Functions
|
|
93
|
+
// ============================================================
|
|
94
|
+
async function createBurnVaultAssetMsg(ctx, sender, params, value) {
|
|
95
|
+
const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
|
|
96
|
+
const vaultData = await vault.getVaultData();
|
|
97
|
+
const vaultAssetWalllet = await (0, query_1.getVaultWallet)(ctx, params.strategyVaultAddress, sender.address);
|
|
98
|
+
const oracle = new oracle_1.OracleHelper(ctx);
|
|
99
|
+
const { oracleParams: oraclePayload } = await oracle.getOracleParamsForStrategyVaultV2(vaultData, [
|
|
100
|
+
params.withdrawAssetAddress.toString(),
|
|
101
|
+
...Object.keys(vaultData.assets),
|
|
102
|
+
]);
|
|
103
|
+
const withdrawAssetAddress = (0, utils_1.toAddress)(params.withdrawAssetAddress);
|
|
104
|
+
const isWTON = ctx.isWTON(withdrawAssetAddress);
|
|
105
|
+
const jettonResponseTonAmount = isWTON ? (0, core_1.toNano)(0.02) : 0n;
|
|
106
|
+
const jettonResponsePayload = isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
|
|
107
|
+
const forwardPayload = strategy_vault_1.StrategyVault.createWithdrawPayload(withdrawAssetAddress, oraclePayload, jettonResponseTonAmount, jettonResponsePayload);
|
|
108
|
+
const fee = vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.Withdraw] +
|
|
109
|
+
vaultData.gasConfig[strategy_vault_1.StrategyVault.GasKey.WithdrawLogic] +
|
|
110
|
+
jettonResponseTonAmount +
|
|
111
|
+
(0, core_1.toNano)(0.1);
|
|
112
|
+
const opts = {
|
|
113
|
+
amount: params.vaultShareAmountForBurn,
|
|
114
|
+
response: sender.address,
|
|
115
|
+
forwardPayload: forwardPayload,
|
|
116
|
+
queryId: (0, computation_1.createQueryId)({ ...params, forwardPayload }),
|
|
117
|
+
};
|
|
118
|
+
return {
|
|
119
|
+
opts,
|
|
120
|
+
input: {
|
|
121
|
+
to: vaultAssetWalllet.address,
|
|
122
|
+
value: value ?? fee,
|
|
123
|
+
body: vaultAssetWalllet.createBurnBody(opts),
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// ============================================================
|
|
128
|
+
// Queue Create Functions
|
|
129
|
+
// ============================================================
|
|
130
|
+
async function createDepositQueueMsg(ctx, sender, params) {
|
|
131
|
+
const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
|
|
132
|
+
const isWTON = ctx.isWTON(assetAddress);
|
|
133
|
+
const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
|
|
134
|
+
const jettonForwardParams = params.jettonForwardParams ?? {};
|
|
135
|
+
const queueItemParams = params.queueItemParams ?? {};
|
|
136
|
+
queueItemParams.jettonForwardTonAmount ??= isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n;
|
|
137
|
+
queueItemParams.jettonForwardPayload ??= isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
|
|
138
|
+
queueItemParams.actionForwardTonAmount ??= 0n;
|
|
139
|
+
const vaultData = await vault.getVaultData();
|
|
140
|
+
jettonForwardParams.forwardPayload ??= strategy_vault_1.StrategyVault.createDepositQueuePayload(params.responseAddress ?? sender.address, queueItemParams.jettonForwardTonAmount, queueItemParams.jettonForwardPayload);
|
|
141
|
+
const isFirst = !vaultData.depositQueueManager.pendingAssetQueue[assetAddress.toString()]?.dict[sender.address.toString()];
|
|
142
|
+
jettonForwardParams.forwardTonAmount ??=
|
|
143
|
+
strategy_vault_1.StrategyVault.calcQueueResistGas(vaultData, queueItemParams, isFirst) + (0, core_1.toNano)(0.03);
|
|
144
|
+
const sendValue = params.value ?? jettonForwardParams.forwardTonAmount + (0, core_1.toNano)(0.1);
|
|
145
|
+
const opts = {
|
|
146
|
+
recipient: vault.address,
|
|
147
|
+
amount: params.amount,
|
|
148
|
+
response: sender.address,
|
|
149
|
+
forwardTonAmount: jettonForwardParams.forwardTonAmount,
|
|
150
|
+
forwardPayload: jettonForwardParams.forwardPayload,
|
|
151
|
+
queryId: params.queryId ?? (0, computation_1.createQueryId)(params),
|
|
152
|
+
};
|
|
153
|
+
const input = await createJettonTransferMsg(ctx, sender.address, assetAddress, opts, sendValue);
|
|
154
|
+
return { opts, input };
|
|
155
|
+
}
|
|
156
|
+
async function createWithdrawQueueMsg(ctx, sender, params) {
|
|
157
|
+
const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
|
|
158
|
+
const isWTON = ctx.isWTON(assetAddress);
|
|
159
|
+
const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
|
|
160
|
+
const jettonForwardParams = params.jettonForwardParams ?? {};
|
|
161
|
+
const queueItemParams = params.queueItemParams ?? {};
|
|
162
|
+
queueItemParams.jettonForwardTonAmount ??= isWTON ? jetton_minter_2.WTON_UNWRAP_GAS : 0n;
|
|
163
|
+
queueItemParams.jettonForwardPayload ??= isWTON ? jetton_minter_2.WTON_UNWRAP_CELL : undefined;
|
|
164
|
+
queueItemParams.actionForwardTonAmount ??= 0n;
|
|
165
|
+
const vaultData = await vault.getVaultData();
|
|
166
|
+
jettonForwardParams.forwardPayload ??= strategy_vault_1.StrategyVault.createWithdrawQueuePayload(assetAddress, queueItemParams.jettonForwardTonAmount, queueItemParams.jettonForwardPayload, queueItemParams.actionForwardTonAmount, queueItemParams.actionForwardPayload);
|
|
167
|
+
const isFirst = !vaultData.withdrawQueueManager.pendingAssetQueue[assetAddress.toString()]?.dict[sender.address.toString()];
|
|
168
|
+
jettonForwardParams.forwardTonAmount ??=
|
|
169
|
+
strategy_vault_1.StrategyVault.calcQueueResistGas(vaultData, queueItemParams, isFirst) + (0, core_1.toNano)(0.03);
|
|
170
|
+
const sendValue = params.value ?? jettonForwardParams.forwardTonAmount + (0, core_1.toNano)(0.1);
|
|
171
|
+
const opts = {
|
|
172
|
+
amount: params.shareAmount,
|
|
173
|
+
response: sender.address,
|
|
174
|
+
forwardPayload: jettonForwardParams.forwardPayload,
|
|
175
|
+
queryId: params.queryId ?? (0, computation_1.createQueryId)(params),
|
|
176
|
+
};
|
|
177
|
+
const vaultWalllet = await (0, query_1.getVaultWallet)(ctx, params.strategyVaultAddress, sender.address);
|
|
178
|
+
return {
|
|
179
|
+
opts,
|
|
180
|
+
input: {
|
|
181
|
+
to: vaultWalllet.address,
|
|
182
|
+
value: sendValue,
|
|
183
|
+
body: vaultWalllet.createBurnBody(opts),
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
// ============================================================
|
|
188
|
+
// Queue Cancel Functions
|
|
189
|
+
// ============================================================
|
|
190
|
+
async function createCancelDepositQueueMsg(ctx, params) {
|
|
191
|
+
const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
|
|
192
|
+
const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
|
|
193
|
+
const userAddress = (0, utils_1.toAddress)(params.userAddress);
|
|
194
|
+
const queryId = params.queryId ?? (0, computation_1.createQueryId)(params);
|
|
195
|
+
const value = params.value ?? (0, core_1.toNano)(0.1);
|
|
196
|
+
return {
|
|
197
|
+
opts: { to: vault.address, value, assetAddress, userAddress, queryId },
|
|
198
|
+
input: {
|
|
199
|
+
to: vault.address,
|
|
200
|
+
value,
|
|
201
|
+
body: strategy_vault_1.StrategyVault.createCancelDepositQueueBody({ assetAddress, userAddress, queryId }),
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
async function createCancelWithdrawQueueMsg(ctx, params) {
|
|
206
|
+
const vault = (0, query_1.getVault)(ctx, params.strategyVaultAddress);
|
|
207
|
+
const assetAddress = (0, utils_1.toAddress)(params.assetAddress);
|
|
208
|
+
const userAddress = (0, utils_1.toAddress)(params.userAddress);
|
|
209
|
+
const queryId = params.queryId ?? (0, computation_1.createQueryId)(params);
|
|
210
|
+
const value = params.value ?? (0, core_1.toNano)(0.1);
|
|
211
|
+
return {
|
|
212
|
+
opts: { to: vault.address, value, assetAddress, userAddress, queryId },
|
|
213
|
+
input: {
|
|
214
|
+
to: vault.address,
|
|
215
|
+
value,
|
|
216
|
+
body: strategy_vault_1.StrategyVault.createCancelWithdrawQueueBody({ assetAddress, userAddress, queryId }),
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Address, Cell } from "@ton/core";
|
|
2
|
+
import { AddressInput, AddressLike } from "../../../contracts/common/type";
|
|
3
|
+
import { VaultResponseOptions } from "../../../contracts/vault/strategy-vault";
|
|
4
|
+
export type DepositAssetParams = {
|
|
5
|
+
strategyVaultAddress: AddressInput;
|
|
6
|
+
assetAddress: AddressLike;
|
|
7
|
+
amount: bigint;
|
|
8
|
+
queryId?: bigint;
|
|
9
|
+
};
|
|
10
|
+
export type BurnVaultAssetParams = {
|
|
11
|
+
strategyVaultAddress: AddressInput;
|
|
12
|
+
withdrawAssetAddress: AddressLike;
|
|
13
|
+
vaultShareAmountForBurn: bigint;
|
|
14
|
+
queryID?: bigint;
|
|
15
|
+
};
|
|
16
|
+
export type JettonForwardParams = {
|
|
17
|
+
forwardTonAmount?: bigint;
|
|
18
|
+
forwardPayload?: Cell;
|
|
19
|
+
};
|
|
20
|
+
export type CreateDepositQueueParams = {
|
|
21
|
+
strategyVaultAddress: AddressInput;
|
|
22
|
+
assetAddress: AddressLike;
|
|
23
|
+
amount: bigint;
|
|
24
|
+
responseAddress?: Address;
|
|
25
|
+
jettonForwardParams?: JettonForwardParams;
|
|
26
|
+
queueItemParams?: VaultResponseOptions;
|
|
27
|
+
queryId?: bigint;
|
|
28
|
+
value?: bigint;
|
|
29
|
+
};
|
|
30
|
+
export type CreateWithdrawQueueParams = {
|
|
31
|
+
strategyVaultAddress: AddressInput;
|
|
32
|
+
shareAmount: bigint;
|
|
33
|
+
assetAddress: AddressLike;
|
|
34
|
+
responseAddress?: Address;
|
|
35
|
+
jettonForwardParams?: JettonForwardParams;
|
|
36
|
+
queueItemParams?: VaultResponseOptions;
|
|
37
|
+
queryId?: bigint;
|
|
38
|
+
value?: bigint;
|
|
39
|
+
};
|
|
40
|
+
export type CancelQueueParams = {
|
|
41
|
+
strategyVaultAddress: AddressInput;
|
|
42
|
+
assetAddress: AddressLike;
|
|
43
|
+
userAddress: AddressLike;
|
|
44
|
+
queryId?: bigint;
|
|
45
|
+
value?: bigint;
|
|
46
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Cell } from "@ton/core";
|
|
2
|
+
export declare function parseAction(cell: Cell): {
|
|
3
|
+
contractType: string;
|
|
4
|
+
opCode: number;
|
|
5
|
+
opName: string;
|
|
6
|
+
data: import("..").SuccessActionNotificationMsgBody | import("..").SuccessRepayActionNotificationMsgBody | import("..").SuccessLiquidateActionNotificationMsgBody | import("..").FailTransferInActionNotificationMsgBody | import("..").FailLiquidateActionNotificationMsgBody | import("..").FailTransferOutActionNotificationMsgBody;
|
|
7
|
+
} | null;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseAction = parseAction;
|
|
4
|
+
const pool_1 = require("../contracts/core/pool");
|
|
5
|
+
const parser_1 = require("./parser");
|
|
6
|
+
function parseAction(cell) {
|
|
7
|
+
try {
|
|
8
|
+
const notification = (0, parser_1.parseActionNotification)(cell);
|
|
9
|
+
if (notification) {
|
|
10
|
+
return {
|
|
11
|
+
contractType: "Pool",
|
|
12
|
+
opCode: pool_1.Pool.Op.ActionNotification,
|
|
13
|
+
opName: "ActionNotification",
|
|
14
|
+
data: notification,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
catch (e) { }
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Address, Cell } from "@ton/core";
|
|
2
|
+
/**
|
|
3
|
+
* Compute the hash of an external message for tracking via toncenter API.
|
|
4
|
+
*
|
|
5
|
+
* TEP-467 normalization is applied for consistent hashing:
|
|
6
|
+
* - src: undefined
|
|
7
|
+
* - importFee: 0n
|
|
8
|
+
* - init: null
|
|
9
|
+
* - body: stored as reference (forceRef: true)
|
|
10
|
+
*
|
|
11
|
+
* @param walletAddress - The wallet contract address (where external message is sent)
|
|
12
|
+
* @param signedBody - The signed wallet transfer body (from wallet.createTransfer())
|
|
13
|
+
* @returns Hash in multiple formats
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { WalletContractV4 } from "@ton/ton";
|
|
18
|
+
*
|
|
19
|
+
* const wallet = WalletContractV4.create({ workchain: 0, publicKey });
|
|
20
|
+
* const seqno = await wallet.getSeqno(provider);
|
|
21
|
+
*
|
|
22
|
+
* // Create the signed transfer
|
|
23
|
+
* const transfer = wallet.createTransfer({
|
|
24
|
+
* seqno,
|
|
25
|
+
* secretKey,
|
|
26
|
+
* messages: [internal({ to: strategyVault, value: toNano(1), body: msgBody })],
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* // Compute the external message hash BEFORE sending
|
|
30
|
+
* const { hashHex } = computeExternalMessageHash(wallet.address, transfer);
|
|
31
|
+
*
|
|
32
|
+
* // Send the transaction
|
|
33
|
+
* await wallet.send(provider, transfer);
|
|
34
|
+
*
|
|
35
|
+
* // Track via toncenter API
|
|
36
|
+
* const response = await fetch(
|
|
37
|
+
* `https://toncenter.com/api/v3/pendingTraces?ext_msg_hash=${hashHex}`
|
|
38
|
+
* );
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function computeExternalMessageHash(walletAddress: Address, signedBody: Cell): {
|
|
42
|
+
hash: Buffer;
|
|
43
|
+
hashHex: string;
|
|
44
|
+
hashBase64: string;
|
|
45
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeExternalMessageHash = computeExternalMessageHash;
|
|
4
|
+
const core_1 = require("@ton/core");
|
|
5
|
+
/**
|
|
6
|
+
* Compute the hash of an external message for tracking via toncenter API.
|
|
7
|
+
*
|
|
8
|
+
* TEP-467 normalization is applied for consistent hashing:
|
|
9
|
+
* - src: undefined
|
|
10
|
+
* - importFee: 0n
|
|
11
|
+
* - init: null
|
|
12
|
+
* - body: stored as reference (forceRef: true)
|
|
13
|
+
*
|
|
14
|
+
* @param walletAddress - The wallet contract address (where external message is sent)
|
|
15
|
+
* @param signedBody - The signed wallet transfer body (from wallet.createTransfer())
|
|
16
|
+
* @returns Hash in multiple formats
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { WalletContractV4 } from "@ton/ton";
|
|
21
|
+
*
|
|
22
|
+
* const wallet = WalletContractV4.create({ workchain: 0, publicKey });
|
|
23
|
+
* const seqno = await wallet.getSeqno(provider);
|
|
24
|
+
*
|
|
25
|
+
* // Create the signed transfer
|
|
26
|
+
* const transfer = wallet.createTransfer({
|
|
27
|
+
* seqno,
|
|
28
|
+
* secretKey,
|
|
29
|
+
* messages: [internal({ to: strategyVault, value: toNano(1), body: msgBody })],
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Compute the external message hash BEFORE sending
|
|
33
|
+
* const { hashHex } = computeExternalMessageHash(wallet.address, transfer);
|
|
34
|
+
*
|
|
35
|
+
* // Send the transaction
|
|
36
|
+
* await wallet.send(provider, transfer);
|
|
37
|
+
*
|
|
38
|
+
* // Track via toncenter API
|
|
39
|
+
* const response = await fetch(
|
|
40
|
+
* `https://toncenter.com/api/v3/pendingTraces?ext_msg_hash=${hashHex}`
|
|
41
|
+
* );
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
function computeExternalMessageHash(walletAddress, signedBody) {
|
|
45
|
+
// TEP-467 normalized external-in message
|
|
46
|
+
const normalizedMessage = {
|
|
47
|
+
info: {
|
|
48
|
+
type: "external-in",
|
|
49
|
+
dest: walletAddress,
|
|
50
|
+
src: undefined,
|
|
51
|
+
importFee: 0n,
|
|
52
|
+
},
|
|
53
|
+
init: null,
|
|
54
|
+
body: signedBody,
|
|
55
|
+
};
|
|
56
|
+
const hash = (0, core_1.beginCell)()
|
|
57
|
+
.store((0, core_1.storeMessage)(normalizedMessage, { forceRef: true }))
|
|
58
|
+
.endCell()
|
|
59
|
+
.hash();
|
|
60
|
+
return {
|
|
61
|
+
hash,
|
|
62
|
+
hashHex: hash.toString("hex"),
|
|
63
|
+
hashBase64: hash.toString("base64"),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReadonlyCachedRedstone = void 0;
|
|
4
|
+
const query_cache_1 = require("../../../lib/query-cache");
|
|
5
|
+
const redstoneHelper_1 = require("./redstoneHelper");
|
|
6
|
+
const cachedRedstoneClient = (0, query_cache_1.withQueryCache)((0, redstoneHelper_1.createRedstoneHelper)("prod"));
|
|
7
|
+
class ReadonlyCachedRedstone {
|
|
8
|
+
static getPrices(assets) {
|
|
9
|
+
const whitelistedAssets = [
|
|
10
|
+
"TON",
|
|
11
|
+
"USDT",
|
|
12
|
+
"stTON_FUNDAMENTAL",
|
|
13
|
+
"tsTON_FUNDAMENTAL",
|
|
14
|
+
"XAU",
|
|
15
|
+
"USDe",
|
|
16
|
+
"tsUSDe_FUNDAMENTAL",
|
|
17
|
+
];
|
|
18
|
+
const isWhitelistedAssetsRequest = assets.every((item) => whitelistedAssets.includes(item));
|
|
19
|
+
if (isWhitelistedAssetsRequest) {
|
|
20
|
+
assets = whitelistedAssets;
|
|
21
|
+
}
|
|
22
|
+
return cachedRedstoneClient.getPrices(assets);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.ReadonlyCachedRedstone = ReadonlyCachedRedstone;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare function parseDataPackageHex(dataPackageHex: string): {
|
|
2
|
+
timestamp: bigint;
|
|
3
|
+
price: bigint;
|
|
4
|
+
feedId: bigint;
|
|
5
|
+
};
|
|
6
|
+
export declare function createPayload(assets: string[]): Promise<import("@ton/core").Cell>;
|
|
7
|
+
export declare function getHexlifiedFeedIds(assets: string[]): string[];
|
|
8
|
+
export declare function getDataFeedIdTuples(assets: string[]): import("@ton/core").Cell;
|
|
9
|
+
export declare function createRedstoneHelper(type: "demo" | "prod"): {
|
|
10
|
+
createPayload: (assets: string[]) => Promise<import("@ton/core").Cell>;
|
|
11
|
+
getHexlifiedFeedIds: (assets: string[]) => string[];
|
|
12
|
+
getDataFeedIdTuples: (assets: string[]) => import("@ton/core").Cell;
|
|
13
|
+
getPrices: (assets: string[]) => Promise<any>;
|
|
14
|
+
};
|
|
15
|
+
declare const _default: {
|
|
16
|
+
getDataFeedIdTuples: typeof getDataFeedIdTuples;
|
|
17
|
+
getHexlifiedFeedIds: typeof getHexlifiedFeedIds;
|
|
18
|
+
createPayload: typeof createPayload;
|
|
19
|
+
createRedstoneHelper: typeof createRedstoneHelper;
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|