From 68c52dbdc8aa8c210e89a541f77a5368a79b6526 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 8 Aug 2022 17:08:58 +0200 Subject: [PATCH] ts: Settle and close in script, including borrows --- ....ts => mb-liqtest-settle-and-close-all.ts} | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) rename ts/client/src/scripts/{mb-liqtest-withdraw-and-close-all.ts => mb-liqtest-settle-and-close-all.ts} (68%) diff --git a/ts/client/src/scripts/mb-liqtest-withdraw-and-close-all.ts b/ts/client/src/scripts/mb-liqtest-settle-and-close-all.ts similarity index 68% rename from ts/client/src/scripts/mb-liqtest-withdraw-and-close-all.ts rename to ts/client/src/scripts/mb-liqtest-settle-and-close-all.ts index 6fda9f2dc..2c8ca10fc 100644 --- a/ts/client/src/scripts/mb-liqtest-withdraw-and-close-all.ts +++ b/ts/client/src/scripts/mb-liqtest-settle-and-close-all.ts @@ -34,12 +34,43 @@ async function main() { const group = await client.getGroupForCreator(admin.publicKey, GROUP_NUM); console.log(group.toString()); - const accounts = await client.getMangoAccountsForOwner( + let accounts = await client.getMangoAccountsForOwner( group, admin.publicKey, ); for (let account of accounts) { - console.log(`account: ${account}`); + console.log(`settling borrows on account: ${account}`); + + // first, settle all borrows + for (let token of account.tokensActive()) { + const bank = group.findBank(token.tokenIndex); + const amount = token.native(bank).toNumber(); + if (amount < 0) { + try { + await client.tokenDepositNative( + group, + account, + bank.name, + amount, + ); + await account.reload(client, group); + } catch (error) { + console.log( + `failed to deposit ${bank.name} into ${account.publicKey}: ${error}`, + ); + } + } + } + } + + accounts = await client.getMangoAccountsForOwner( + group, + admin.publicKey, + ); + for (let account of accounts) { + console.log(`withdrawing deposits of account: ${account}`); + + // withdraw all funds for (let token of account.tokensActive()) { const bank = group.findBank(token.tokenIndex); const amount = token.native(bank).toNumber(); @@ -62,7 +93,9 @@ async function main() { } } + // close account try { + console.log(`closing account: ${account}`); await client.closeMangoAccount(group, account); } catch (error) { console.log(`failed to close ${account.publicKey}: ${error}`);