ts: Settle and close in script, including borrows
This commit is contained in:
parent
3257017770
commit
68c52dbdc8
|
@ -34,12 +34,43 @@ async function main() {
|
||||||
const group = await client.getGroupForCreator(admin.publicKey, GROUP_NUM);
|
const group = await client.getGroupForCreator(admin.publicKey, GROUP_NUM);
|
||||||
console.log(group.toString());
|
console.log(group.toString());
|
||||||
|
|
||||||
const accounts = await client.getMangoAccountsForOwner(
|
let accounts = await client.getMangoAccountsForOwner(
|
||||||
group,
|
group,
|
||||||
admin.publicKey,
|
admin.publicKey,
|
||||||
);
|
);
|
||||||
for (let account of accounts) {
|
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()) {
|
for (let token of account.tokensActive()) {
|
||||||
const bank = group.findBank(token.tokenIndex);
|
const bank = group.findBank(token.tokenIndex);
|
||||||
const amount = token.native(bank).toNumber();
|
const amount = token.native(bank).toNumber();
|
||||||
|
@ -62,7 +93,9 @@ async function main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// close account
|
||||||
try {
|
try {
|
||||||
|
console.log(`closing account: ${account}`);
|
||||||
await client.closeMangoAccount(group, account);
|
await client.closeMangoAccount(group, account);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(`failed to close ${account.publicKey}: ${error}`);
|
console.log(`failed to close ${account.publicKey}: ${error}`);
|
Loading…
Reference in New Issue