-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
import { PublicKey } from "@solana/web3.js"; | ||
Check failure on line 1 in ts/sdk/cli/commands/decodeLogs.ts
|
||
import { | ||
OptionValues, | ||
Command | ||
} from "commander"; | ||
import { getCommandContext } from "../utils"; | ||
import { VaultDepositorRecord } from "../../src"; | ||
import { BN, TEN, convertToNumber, getVariant } from "@drift-labs/sdk"; | ||
import { conversationContext } from "@slack/bolt/dist/conversation-store"; | ||
Check failure on line 9 in ts/sdk/cli/commands/decodeLogs.ts
|
||
|
||
export const decodeLogs = async (program: Command, cmdOpts: OptionValues) => { | ||
|
||
let txId: string; | ||
try { | ||
txId = cmdOpts.tx as string; | ||
} catch (err) { | ||
console.error("Invalid transaction hash"); | ||
process.exit(1); | ||
} | ||
if (!txId) { | ||
console.error("Invalid transaction hash"); | ||
process.exit(1); | ||
} | ||
|
||
const { | ||
driftVault, | ||
driftClient, | ||
} = await getCommandContext(program, false); | ||
|
||
const tx = await driftClient.connection.getParsedTransaction(txId, { | ||
commitment: "confirmed", | ||
maxSupportedTransactionVersion: 0, | ||
}); | ||
|
||
// @ts-ignore | ||
for (const event of driftVault.program._events._eventParser.parseLogs( | ||
tx!.meta!.logMessages | ||
)) { | ||
switch (event.name) { | ||
case "VaultDepositorRecord": | ||
const data: VaultDepositorRecord = event.data; | ||
Check failure on line 41 in ts/sdk/cli/commands/decodeLogs.ts
|
||
|
||
// const vault = await driftVault.getVault(data.vault); | ||
const spotMarket = driftClient.getSpotMarketAccount(data.spotMarketIndex); | ||
Check failure on line 44 in ts/sdk/cli/commands/decodeLogs.ts
|
||
const spotPrecision = TEN.pow(new BN(spotMarket!.decimals)); | ||
Check failure on line 45 in ts/sdk/cli/commands/decodeLogs.ts
|
||
|
||
console.log(event.name); | ||
const date = new Date(data.ts.toNumber() * 1000); | ||
Check failure on line 48 in ts/sdk/cli/commands/decodeLogs.ts
|
||
console.log(` ts: ${date.toISOString()} (${data.ts.toNumber()})`); | ||
console.log(` vault: ${data.vault.toBase58()}`); | ||
console.log(` depositorAuthority: ${data.depositorAuthority.toBase58()}`); | ||
console.log(` action: ${getVariant(data.action)}`); | ||
console.log(` amount: ${convertToNumber(data.amount, spotPrecision)}`); | ||
console.log(` vaultSharesBefore: ${data.vaultSharesBefore.toNumber()}`); | ||
console.log(` vaultSharesAfter: ${data.vaultSharesAfter.toNumber()} (${data.vaultSharesAfter.toNumber() - data.vaultSharesBefore.toNumber()})`); | ||
console.log(` vaultEquityBefore: ${convertToNumber(data.vaultEquityBefore, spotPrecision)}`); | ||
console.log(` userVaultSharesBefore: ${data.userVaultSharesBefore.toNumber()}`); | ||
console.log(` userVaultSharesAfter: ${data.userVaultSharesAfter.toNumber()} (${data.userVaultSharesAfter.toNumber() - data.userVaultSharesBefore.toNumber()})`); | ||
console.log(` totalVaultSharesBefore: ${data.totalVaultSharesBefore.toNumber()}`); | ||
console.log(` totalVaultSharesAfter: ${data.totalVaultSharesAfter.toNumber()} (${data.totalVaultSharesAfter.toNumber() - data.totalVaultSharesBefore.toNumber()})`); | ||
console.log(` profitShare: ${data.profitShare.toNumber()}`); | ||
console.log(` managementFee: ${data.managementFee.toNumber()}`); | ||
console.log(` managementFeeShares: ${data.managementFeeShares.toNumber()}`); | ||
break; | ||
} | ||
} | ||
|
||
}; |