@perena/bankineco-sdk 1.0.153 → 1.0.156
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/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/utils/glowUtils.d.ts +0 -47
- package/dist/utils/glowUtils.d.ts.map +0 -1
- package/dist/utils/glowUtils.js +0 -246
- package/dist/utils/glowUtils.js.map +0 -1
package/dist/utils/index.d.ts
CHANGED
|
@@ -10,7 +10,6 @@ export * from "./marginfiUtils";
|
|
|
10
10
|
export * from "./kaminoUtils";
|
|
11
11
|
export * from "./accountUtils";
|
|
12
12
|
export * from "./apiUtils";
|
|
13
|
-
export * from "./glowUtils";
|
|
14
13
|
export * from "./nestUtils";
|
|
15
14
|
export * from "./hastraVaultStake";
|
|
16
15
|
export * from "./hastraOperations";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -26,7 +26,6 @@ __exportStar(require("./marginfiUtils"), exports);
|
|
|
26
26
|
__exportStar(require("./kaminoUtils"), exports);
|
|
27
27
|
__exportStar(require("./accountUtils"), exports);
|
|
28
28
|
__exportStar(require("./apiUtils"), exports);
|
|
29
|
-
__exportStar(require("./glowUtils"), exports);
|
|
30
29
|
__exportStar(require("./nestUtils"), exports);
|
|
31
30
|
__exportStar(require("./hastraVaultStake"), exports);
|
|
32
31
|
__exportStar(require("./hastraOperations"), exports);
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B;AAC7B,8CAA4B;AAC5B,6CAA2B;AAC3B,+CAA6B;AAC7B,qDAAmC;AACnC,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,8CAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,mDAAiC;AACjC,+CAA6B;AAC7B,8CAA4B;AAC5B,6CAA2B;AAC3B,+CAA6B;AAC7B,qDAAmC;AACnC,kDAAgC;AAChC,kDAAgC;AAChC,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,8CAA4B;AAC5B,qDAAmC;AACnC,qDAAmC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@perena/bankineco-sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.156",
|
|
4
4
|
"description": "SDK for interacting with Bankineco program on Solana.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -26,16 +26,15 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@coral-xyz/anchor": "=0.30.1",
|
|
29
|
-
"@jup-ag/api": "
|
|
29
|
+
"@jup-ag/api": "=6.0.44",
|
|
30
30
|
"@kamino-finance/klend-sdk": "=7.3.18",
|
|
31
31
|
"@metaplex-foundation/mpl-token-metadata": "2",
|
|
32
|
-
"@mrgnlabs/marginfi-client-v2": "
|
|
32
|
+
"@mrgnlabs/marginfi-client-v2": "=6.4.1",
|
|
33
33
|
"@solana/kit": "^2.3.0",
|
|
34
34
|
"@solana/spl-token": "=0.4.13",
|
|
35
35
|
"@solana/web3.js": "=1.98.4",
|
|
36
36
|
"@sqds/multisig": "^2.1.4",
|
|
37
37
|
"bs58": "^6.0.0",
|
|
38
|
-
"glow-vaults-sdk": "github:Blueprint-Finance/glow-vault-sdk",
|
|
39
38
|
"ts-retry": "^6.0.0"
|
|
40
39
|
},
|
|
41
40
|
"devDependencies": {
|
|
@@ -44,6 +43,7 @@
|
|
|
44
43
|
"@types/mocha": "^9.1.1",
|
|
45
44
|
"@types/node": "^24.3.1",
|
|
46
45
|
"chai": "^4.3.4",
|
|
46
|
+
"glow-vaults-sdk": "github:Blueprint-Finance/glow-vault-sdk",
|
|
47
47
|
"mocha": "^9.0.3",
|
|
48
48
|
"prettier": "^2.6.2",
|
|
49
49
|
"ts-mocha": "^10.0.0",
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { AnchorProvider, BN } from "@coral-xyz/anchor";
|
|
2
|
-
import { Connection, PublicKey, Transaction } from "@solana/web3.js";
|
|
3
|
-
type AddressLike = PublicKey | string;
|
|
4
|
-
export interface CreateGlowUsdtTransactionResponse {
|
|
5
|
-
transaction: Transaction;
|
|
6
|
-
}
|
|
7
|
-
export interface CreateGlowUsdtRedemptionTransactionResponse extends CreateGlowUsdtTransactionResponse {
|
|
8
|
-
rawAmountShareMint: number;
|
|
9
|
-
tokenPrice?: number;
|
|
10
|
-
}
|
|
11
|
-
export interface CreateGlowUsdtDepositTransactionArgs {
|
|
12
|
-
provider: AnchorProvider;
|
|
13
|
-
depositor: AddressLike;
|
|
14
|
-
rawAmountUsdt: number;
|
|
15
|
-
}
|
|
16
|
-
export interface CreateGlowUsdtRedemptionTransactionArgs {
|
|
17
|
-
provider: AnchorProvider;
|
|
18
|
-
withdrawer: AddressLike;
|
|
19
|
-
rawAmountShareMint?: number;
|
|
20
|
-
usdtBaseUnits?: number;
|
|
21
|
-
tokenPrice?: number;
|
|
22
|
-
}
|
|
23
|
-
export interface CreateGlowUsdtExecuteRedemptionTransactionArgs {
|
|
24
|
-
provider: AnchorProvider;
|
|
25
|
-
withdrawer: AddressLike;
|
|
26
|
-
withdrawalIndex?: number;
|
|
27
|
-
}
|
|
28
|
-
export declare function fetchGlowUsdtTokenPrice(): Promise<number>;
|
|
29
|
-
/**
|
|
30
|
-
* Derives the associated token account for Glow usdt share tokens escrowed in the VaultUser PDA.
|
|
31
|
-
* Shares are not held directly by the owner; they are escrowed in a VaultUser account, and the
|
|
32
|
-
* share token account is owned by that VaultUser PDA.
|
|
33
|
-
*
|
|
34
|
-
* @param owner - The owner/depositor address (used to derive the VaultUser PDA)
|
|
35
|
-
* @returns The ATA for the share mint owned by the VaultUser PDA
|
|
36
|
-
*/
|
|
37
|
-
export declare function getGlowUsdtShareHolderAta(owner: PublicKey): PublicKey;
|
|
38
|
-
/**
|
|
39
|
-
* Fetches the USDT value of the Glow usdt vault position (share balance × share price).
|
|
40
|
-
* For oracle pending yield, subtract the vault's `external_yielding_amount` principal (see Kamino/MarginFi oracles).
|
|
41
|
-
*/
|
|
42
|
-
export declare function fetchGlowUsdtOwed(connection: Connection, shareHolder: PublicKey): Promise<BN>;
|
|
43
|
-
export declare function createGlowUsdtDepositTransaction(args: CreateGlowUsdtDepositTransactionArgs): Promise<CreateGlowUsdtTransactionResponse>;
|
|
44
|
-
export declare function createGlowUsdtRedemptionTransaction(args: CreateGlowUsdtRedemptionTransactionArgs): Promise<CreateGlowUsdtRedemptionTransactionResponse>;
|
|
45
|
-
export declare function createGlowUsdtExecuteRedemptionTransaction(args: CreateGlowUsdtExecuteRedemptionTransactionArgs): Promise<CreateGlowUsdtTransactionResponse>;
|
|
46
|
-
export {};
|
|
47
|
-
//# sourceMappingURL=glowUtils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"glowUtils.d.ts","sourceRoot":"","sources":["../../src/utils/glowUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,EAAE,EAAW,MAAM,mBAAmB,CAAC;AAUhE,OAAO,EACL,UAAU,EACV,SAAS,EAET,WAAW,EAEZ,MAAM,iBAAiB,CAAC;AAazB,KAAK,WAAW,GAAG,SAAS,GAAG,MAAM,CAAC;AAmBtC,MAAM,WAAW,iCAAiC;IAChD,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,MAAM,WAAW,2CACf,SAAQ,iCAAiC;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uCAAuC;IACtD,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,8CAA8C;IAC7D,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,WAAW,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAyFD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CA6B/D;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAOrE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,SAAS,GACrB,OAAO,CAAC,EAAE,CAAC,CAab;AA4LD,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,oCAAoC,GACzC,OAAO,CAAC,iCAAiC,CAAC,CAiB5C;AAED,wBAAsB,mCAAmC,CACvD,IAAI,EAAE,uCAAuC,GAC5C,OAAO,CAAC,2CAA2C,CAAC,CAkCtD;AAED,wBAAsB,0CAA0C,CAC9D,IAAI,EAAE,8CAA8C,GACnD,OAAO,CAAC,iCAAiC,CAAC,CAiB5C"}
|
package/dist/utils/glowUtils.js
DELETED
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.fetchGlowUsdtTokenPrice = fetchGlowUsdtTokenPrice;
|
|
7
|
-
exports.getGlowUsdtShareHolderAta = getGlowUsdtShareHolderAta;
|
|
8
|
-
exports.fetchGlowUsdtOwed = fetchGlowUsdtOwed;
|
|
9
|
-
exports.createGlowUsdtDepositTransaction = createGlowUsdtDepositTransaction;
|
|
10
|
-
exports.createGlowUsdtRedemptionTransaction = createGlowUsdtRedemptionTransaction;
|
|
11
|
-
exports.createGlowUsdtExecuteRedemptionTransaction = createGlowUsdtExecuteRedemptionTransaction;
|
|
12
|
-
const anchor_1 = require("@coral-xyz/anchor");
|
|
13
|
-
const glow_vault_json_1 = __importDefault(require("glow-vaults-sdk/src/idls/glow_vault.json"));
|
|
14
|
-
const spl_token_1 = require("@solana/spl-token");
|
|
15
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
16
|
-
const constants_1 = require("../constants");
|
|
17
|
-
const general_1 = require("../constants/general");
|
|
18
|
-
const mathUtils_1 = require("./mathUtils");
|
|
19
|
-
function toPublicKey(address) {
|
|
20
|
-
return typeof address === "string" ? new web3_js_1.PublicKey(address) : address;
|
|
21
|
-
}
|
|
22
|
-
function buildTransaction(payer, instructions) {
|
|
23
|
-
const transaction = new web3_js_1.Transaction();
|
|
24
|
-
transaction.feePayer = payer;
|
|
25
|
-
transaction.add(...instructions);
|
|
26
|
-
return transaction;
|
|
27
|
-
}
|
|
28
|
-
function derivePda(seed, ...keys) {
|
|
29
|
-
return web3_js_1.PublicKey.findProgramAddressSync([Buffer.from(seed), ...keys.map((key) => key.toBuffer())], constants_1.GLOW_VAULT_PROGRAM_ID)[0];
|
|
30
|
-
}
|
|
31
|
-
function deriveAta(mint, tokenProgram, owner) {
|
|
32
|
-
return web3_js_1.PublicKey.findProgramAddressSync([owner.toBuffer(), tokenProgram.toBuffer(), mint.toBuffer()], spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID)[0];
|
|
33
|
-
}
|
|
34
|
-
function deriveVaultUser(vault, owner) {
|
|
35
|
-
return derivePda("vault_user", vault, owner);
|
|
36
|
-
}
|
|
37
|
-
function deriveVaultPendingWithdrawals(vault, owner) {
|
|
38
|
-
return derivePda("vault_pending_withdrawals", vault, owner);
|
|
39
|
-
}
|
|
40
|
-
function deriveVaultShareMint(vault) {
|
|
41
|
-
return derivePda("vault_deposit_mint", vault);
|
|
42
|
-
}
|
|
43
|
-
function assertGlowConfig() {
|
|
44
|
-
const derivedShareMint = deriveVaultShareMint(constants_1.GLOW_USDT_VAULT);
|
|
45
|
-
if (!derivedShareMint.equals(constants_1.GLOW_USDT_SHARE_MINT)) {
|
|
46
|
-
throw new Error(`Configured Glow share mint does not match PDA. Expected ${derivedShareMint.toBase58()}, got ${constants_1.GLOW_USDT_SHARE_MINT.toBase58()}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
function createGlowProgram(provider) {
|
|
50
|
-
return new anchor_1.Program({
|
|
51
|
-
...glow_vault_json_1.default,
|
|
52
|
-
address: constants_1.GLOW_VAULT_PROGRAM_ID.toBase58(),
|
|
53
|
-
}, provider);
|
|
54
|
-
}
|
|
55
|
-
async function fetchGlowVault(program) {
|
|
56
|
-
const account = await program.account.vault.fetch(constants_1.GLOW_USDT_VAULT);
|
|
57
|
-
return {
|
|
58
|
-
address: constants_1.GLOW_USDT_VAULT,
|
|
59
|
-
account,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
async function readJson(response) {
|
|
63
|
-
if (!response.ok) {
|
|
64
|
-
throw new Error(`Glow API request failed: ${response.status} ${response.statusText}`);
|
|
65
|
-
}
|
|
66
|
-
return (await response.json());
|
|
67
|
-
}
|
|
68
|
-
async function fetchGlowUsdtTokenPrice() {
|
|
69
|
-
const response = await fetch(`${constants_1.GLOW_API_BASE_URL}/vaults/${constants_1.GLOW_USDT_VAULT_SLUG}`);
|
|
70
|
-
const details = await readJson(response);
|
|
71
|
-
if (details.address !== constants_1.GLOW_USDT_VAULT.toBase58()) {
|
|
72
|
-
throw new Error(`Unexpected Glow vault address returned by API: ${details.address}`);
|
|
73
|
-
}
|
|
74
|
-
if (details.shareMint !== constants_1.GLOW_USDT_SHARE_MINT.toBase58()) {
|
|
75
|
-
throw new Error(`Unexpected Glow share mint returned by API: ${details.shareMint}`);
|
|
76
|
-
}
|
|
77
|
-
if (details.depositTokens[0]?.address !== constants_1.USDT_MINT.toBase58()) {
|
|
78
|
-
throw new Error(`Unexpected Glow underlying mint returned by API: ${details.depositTokens[0]?.address}`);
|
|
79
|
-
}
|
|
80
|
-
if (!Number.isFinite(details.exchangeRate) || details.exchangeRate <= 0) {
|
|
81
|
-
throw new Error(`Invalid Glow exchange rate returned: ${details.exchangeRate}`);
|
|
82
|
-
}
|
|
83
|
-
return details.exchangeRate;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Derives the associated token account for Glow usdt share tokens escrowed in the VaultUser PDA.
|
|
87
|
-
* Shares are not held directly by the owner; they are escrowed in a VaultUser account, and the
|
|
88
|
-
* share token account is owned by that VaultUser PDA.
|
|
89
|
-
*
|
|
90
|
-
* @param owner - The owner/depositor address (used to derive the VaultUser PDA)
|
|
91
|
-
* @returns The ATA for the share mint owned by the VaultUser PDA
|
|
92
|
-
*/
|
|
93
|
-
function getGlowUsdtShareHolderAta(owner) {
|
|
94
|
-
const vaultUser = deriveVaultUser(constants_1.GLOW_USDT_VAULT, owner);
|
|
95
|
-
return deriveAta(constants_1.GLOW_USDT_SHARE_MINT, spl_token_1.TOKEN_2022_PROGRAM_ID, vaultUser);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Fetches the USDT value of the Glow usdt vault position (share balance × share price).
|
|
99
|
-
* For oracle pending yield, subtract the vault's `external_yielding_amount` principal (see Kamino/MarginFi oracles).
|
|
100
|
-
*/
|
|
101
|
-
async function fetchGlowUsdtOwed(connection, shareHolder) {
|
|
102
|
-
const sharePrice = await fetchGlowUsdtTokenPrice();
|
|
103
|
-
const shareAta = getGlowUsdtShareHolderAta(shareHolder);
|
|
104
|
-
let shareBalanceBase;
|
|
105
|
-
try {
|
|
106
|
-
const info = await connection.getTokenAccountBalance(shareAta, "confirmed");
|
|
107
|
-
shareBalanceBase = new anchor_1.BN(info.value.amount);
|
|
108
|
-
}
|
|
109
|
-
catch {
|
|
110
|
-
shareBalanceBase = new anchor_1.BN(0);
|
|
111
|
-
}
|
|
112
|
-
const shareBalanceUi = (0, mathUtils_1.toUiAmount)(shareBalanceBase, constants_1.GLOW_USDT_SHARE_MINT_DECIMALS);
|
|
113
|
-
const usdtOwedUi = shareBalanceUi * sharePrice;
|
|
114
|
-
return (0, mathUtils_1.fromUiAmount)(usdtOwedUi, general_1.USDT_DECIMALS);
|
|
115
|
-
}
|
|
116
|
-
async function withUpdateVaultBalances(program, vault, instructions) {
|
|
117
|
-
instructions.push(await program.methods
|
|
118
|
-
.updateVaultBalances()
|
|
119
|
-
.accountsPartial({ vault: vault.address })
|
|
120
|
-
.instruction());
|
|
121
|
-
}
|
|
122
|
-
async function withCreatePendingWithdrawal(program, vault, owner, instructions) {
|
|
123
|
-
instructions.push(await program.methods
|
|
124
|
-
.createVaultPendingWithdrawal()
|
|
125
|
-
.accountsPartial({
|
|
126
|
-
payer: owner,
|
|
127
|
-
withdrawer: owner,
|
|
128
|
-
vault: vault.address,
|
|
129
|
-
})
|
|
130
|
-
.instruction());
|
|
131
|
-
}
|
|
132
|
-
async function withWalletDeposit(program, vault, depositor, amount, instructions) {
|
|
133
|
-
const shareMint = deriveVaultShareMint(vault.address);
|
|
134
|
-
const vaultUser = deriveVaultUser(vault.address, depositor);
|
|
135
|
-
const shareTokenAccount = deriveAta(shareMint, spl_token_1.TOKEN_2022_PROGRAM_ID, vaultUser);
|
|
136
|
-
if (vault.account.underlyingMint.equals(spl_token_1.NATIVE_MINT)) {
|
|
137
|
-
const wrappedSolAta = deriveAta(spl_token_1.NATIVE_MINT, spl_token_1.TOKEN_PROGRAM_ID, depositor);
|
|
138
|
-
instructions.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(depositor, wrappedSolAta, depositor, spl_token_1.NATIVE_MINT, spl_token_1.TOKEN_PROGRAM_ID), web3_js_1.SystemProgram.transfer({
|
|
139
|
-
fromPubkey: depositor,
|
|
140
|
-
toPubkey: wrappedSolAta,
|
|
141
|
-
lamports: amount.toNumber(),
|
|
142
|
-
}), (0, spl_token_1.createSyncNativeInstruction)(wrappedSolAta, spl_token_1.TOKEN_PROGRAM_ID));
|
|
143
|
-
}
|
|
144
|
-
if (!(await program.provider.connection.getAccountInfo(shareTokenAccount))) {
|
|
145
|
-
instructions.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(depositor, shareTokenAccount, vaultUser, shareMint, spl_token_1.TOKEN_2022_PROGRAM_ID, spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID));
|
|
146
|
-
}
|
|
147
|
-
await withUpdateVaultBalances(program, vault, instructions);
|
|
148
|
-
instructions.push(await program.methods
|
|
149
|
-
.depositToVault({
|
|
150
|
-
kind: { shiftBy: {} },
|
|
151
|
-
tokens: amount,
|
|
152
|
-
})
|
|
153
|
-
.accountsPartial({
|
|
154
|
-
payer: depositor,
|
|
155
|
-
depositor,
|
|
156
|
-
vault: vault.address,
|
|
157
|
-
shareMint,
|
|
158
|
-
underlyingMint: vault.account.underlyingMint,
|
|
159
|
-
depositorUnderlyingTokenAccount: deriveAta(vault.account.underlyingMint, vault.account.underlyingMintTokenProgram, depositor),
|
|
160
|
-
shareTokenAccount,
|
|
161
|
-
vaultUser,
|
|
162
|
-
tokenProgram: spl_token_1.TOKEN_PROGRAM_ID,
|
|
163
|
-
associatedTokenProgram: spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID,
|
|
164
|
-
underlyingMintTokenProgram: vault.account.underlyingMintTokenProgram,
|
|
165
|
-
shareTokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID,
|
|
166
|
-
})
|
|
167
|
-
.instruction());
|
|
168
|
-
}
|
|
169
|
-
async function withInitiateWithdrawal(program, vault, withdrawer, shareAmount, instructions) {
|
|
170
|
-
const pendingWithdrawals = deriveVaultPendingWithdrawals(vault.address, withdrawer);
|
|
171
|
-
const shareMint = deriveVaultShareMint(vault.address);
|
|
172
|
-
const vaultUser = deriveVaultUser(vault.address, withdrawer);
|
|
173
|
-
await withUpdateVaultBalances(program, vault, instructions);
|
|
174
|
-
if (!(await program.provider.connection.getAccountInfo(pendingWithdrawals))) {
|
|
175
|
-
await withCreatePendingWithdrawal(program, vault, withdrawer, instructions);
|
|
176
|
-
}
|
|
177
|
-
instructions.push(await program.methods
|
|
178
|
-
.initiateVaultWithdrawal(shareAmount)
|
|
179
|
-
.accountsPartial({
|
|
180
|
-
withdrawer,
|
|
181
|
-
vault: vault.address,
|
|
182
|
-
shareMint,
|
|
183
|
-
shareTokenAccount: deriveAta(shareMint, spl_token_1.TOKEN_2022_PROGRAM_ID, vaultUser),
|
|
184
|
-
tokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID,
|
|
185
|
-
vaultUser,
|
|
186
|
-
})
|
|
187
|
-
.instruction());
|
|
188
|
-
}
|
|
189
|
-
async function withExecuteWithdrawal(program, vault, withdrawer, withdrawalIndex, instructions) {
|
|
190
|
-
const destinationUnderlyingTokenAccount = deriveAta(vault.account.underlyingMint, vault.account.underlyingMintTokenProgram, withdrawer);
|
|
191
|
-
await withUpdateVaultBalances(program, vault, instructions);
|
|
192
|
-
instructions.push((0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(withdrawer, destinationUnderlyingTokenAccount, withdrawer, vault.account.underlyingMint, vault.account.underlyingMintTokenProgram));
|
|
193
|
-
instructions.push(await program.methods
|
|
194
|
-
.executeVaultWithdrawal(withdrawalIndex)
|
|
195
|
-
.accountsPartial({
|
|
196
|
-
withdrawer,
|
|
197
|
-
vault: vault.address,
|
|
198
|
-
shareMint: deriveVaultShareMint(vault.address),
|
|
199
|
-
underlyingMint: vault.account.underlyingMint,
|
|
200
|
-
destinationUnderlyingTokenAccount,
|
|
201
|
-
mintTokenProgram: spl_token_1.TOKEN_2022_PROGRAM_ID,
|
|
202
|
-
underlyingMintTokenProgram: vault.account.underlyingMintTokenProgram,
|
|
203
|
-
})
|
|
204
|
-
.instruction());
|
|
205
|
-
}
|
|
206
|
-
async function createGlowUsdtDepositTransaction(args) {
|
|
207
|
-
assertGlowConfig();
|
|
208
|
-
const depositor = toPublicKey(args.depositor);
|
|
209
|
-
const program = createGlowProgram(args.provider);
|
|
210
|
-
const vault = await fetchGlowVault(program);
|
|
211
|
-
const instructions = [];
|
|
212
|
-
await withWalletDeposit(program, vault, depositor, new anchor_1.BN(args.rawAmountUsdt), instructions);
|
|
213
|
-
return { transaction: buildTransaction(depositor, instructions) };
|
|
214
|
-
}
|
|
215
|
-
async function createGlowUsdtRedemptionTransaction(args) {
|
|
216
|
-
assertGlowConfig();
|
|
217
|
-
const withdrawer = toPublicKey(args.withdrawer);
|
|
218
|
-
const program = createGlowProgram(args.provider);
|
|
219
|
-
const vault = await fetchGlowVault(program);
|
|
220
|
-
let rawAmountShareMint = args.rawAmountShareMint;
|
|
221
|
-
let tokenPrice = args.tokenPrice;
|
|
222
|
-
if (rawAmountShareMint === undefined) {
|
|
223
|
-
if (args.usdtBaseUnits === undefined) {
|
|
224
|
-
throw new Error("Provide rawAmountShareMint or usdtBaseUnits to create a Glow redemption transaction");
|
|
225
|
-
}
|
|
226
|
-
tokenPrice = tokenPrice ?? (await fetchGlowUsdtTokenPrice());
|
|
227
|
-
rawAmountShareMint = Math.floor(args.usdtBaseUnits / tokenPrice);
|
|
228
|
-
}
|
|
229
|
-
const instructions = [];
|
|
230
|
-
await withInitiateWithdrawal(program, vault, withdrawer, new anchor_1.BN(rawAmountShareMint), instructions);
|
|
231
|
-
return {
|
|
232
|
-
transaction: buildTransaction(withdrawer, instructions),
|
|
233
|
-
rawAmountShareMint,
|
|
234
|
-
tokenPrice,
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
async function createGlowUsdtExecuteRedemptionTransaction(args) {
|
|
238
|
-
assertGlowConfig();
|
|
239
|
-
const withdrawer = toPublicKey(args.withdrawer);
|
|
240
|
-
const program = createGlowProgram(args.provider);
|
|
241
|
-
const vault = await fetchGlowVault(program);
|
|
242
|
-
const instructions = [];
|
|
243
|
-
await withExecuteWithdrawal(program, vault, withdrawer, args.withdrawalIndex ?? 0, instructions);
|
|
244
|
-
return { transaction: buildTransaction(withdrawer, instructions) };
|
|
245
|
-
}
|
|
246
|
-
//# sourceMappingURL=glowUtils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"glowUtils.js","sourceRoot":"","sources":["../../src/utils/glowUtils.ts"],"names":[],"mappings":"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"}
|