@shyft-to/solana-transaction-parser
Version:
Tool for parsing arbitrary Solana transactions with IDL/custom parsers
73 lines • 2.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.decodeComputeBudgetInstruction = void 0;
const web3_js_1 = require("@solana/web3.js");
const bn_js_1 = require("bn.js");
function decodeComputeBudgetInstruction(instruction) {
const type = web3_js_1.ComputeBudgetInstruction.decodeInstructionType(instruction);
let parsed;
switch (type) {
case "RequestHeapFrame": {
const decoded = web3_js_1.ComputeBudgetInstruction.decodeRequestHeapFrame(instruction);
parsed = {
name: "requestHeapFrame",
accounts: [],
args: {
bytes: decoded.bytes,
},
programId: instruction.programId,
};
break;
}
case "RequestUnits": {
const decoded = web3_js_1.ComputeBudgetInstruction.decodeRequestUnits(instruction);
parsed = {
name: "requestUnits",
accounts: [],
args: {
units: decoded.units,
additionalFee: decoded.additionalFee,
},
programId: instruction.programId,
};
break;
}
case "SetComputeUnitLimit": {
const decoded = web3_js_1.ComputeBudgetInstruction.decodeSetComputeUnitLimit(instruction);
parsed = {
name: "setComputeUnitLimit",
accounts: [],
args: {
units: decoded.units,
},
programId: instruction.programId,
};
break;
}
case "SetComputeUnitPrice": {
const decoded = web3_js_1.ComputeBudgetInstruction.decodeSetComputeUnitPrice(instruction);
parsed = {
name: "setComputeUnitPrice",
accounts: [],
args: {
microLamports: new bn_js_1.BN(decoded.microLamports.toString()),
},
programId: instruction.programId,
};
break;
}
default: {
parsed = null;
}
}
return parsed
? parsed
: {
programId: instruction.programId,
name: "unknown",
accounts: instruction.keys,
args: { unknown: instruction.data },
};
}
exports.decodeComputeBudgetInstruction = decodeComputeBudgetInstruction;
//# sourceMappingURL=compute.budget.js.map