solana-dex-parser
Version: 
Solana Dex Transaction Parser
130 lines • 5.02 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.JupiterLimitOrderV2CreateOrderLayout = exports.JupiterLimitOrderV2TradeLayout = void 0;
const bs58_1 = __importDefault(require("bs58"));
const binary_reader_1 = require("../../binary-reader");
class JupiterLimitOrderV2TradeLayout {
    constructor(fields) {
        this.orderKey = fields.orderKey;
        this.taker = fields.taker;
        this.remainingMakingAmount = fields.remainingMakingAmount;
        this.remainingTakingAmount = fields.remainingTakingAmount;
        this.makingAmount = fields.makingAmount;
        this.takingAmount = fields.takingAmount;
    }
    toObject() {
        return {
            orderKey: bs58_1.default.encode(this.orderKey),
            taker: bs58_1.default.encode(this.taker),
            remainingMakingAmount: this.remainingMakingAmount,
            remainingTakingAmount: this.remainingTakingAmount,
            makingAmount: this.makingAmount,
            takingAmount: this.takingAmount,
        };
    }
}
exports.JupiterLimitOrderV2TradeLayout = JupiterLimitOrderV2TradeLayout;
JupiterLimitOrderV2TradeLayout.schema = new Map([
    [
        JupiterLimitOrderV2TradeLayout,
        {
            kind: 'struct',
            fields: [
                ['orderKey', [32]],
                ['taker', [32]],
                ['remainingMakingAmount', 'u64'],
                ['remainingTakingAmount', 'u64'],
                ['makingAmount', 'u64'],
                ['takingAmount', 'u64'],
            ],
        },
    ],
]);
class JupiterLimitOrderV2CreateOrderLayout {
    constructor(fields) {
        this.orderKey = fields.orderKey;
        this.maker = fields.maker;
        this.inputMint = fields.inputMint;
        this.outputMint = fields.outputMint;
        this.inputTokenProgram = fields.inputTokenProgram;
        this.outputTokenProgram = fields.outputTokenProgram;
        this.makingAmount = fields.makingAmount;
        this.takingAmount = fields.takingAmount;
        this.expiredAt = fields.expiredAt;
        this.feeBps = fields.feeBps;
        this.feeAccount = fields.feeAccount;
    }
    static deserialize(data) {
        const reader = new binary_reader_1.BinaryReader(data);
        const orderKey = reader.readFixedArray(32);
        const maker = reader.readFixedArray(32);
        const inputMint = reader.readFixedArray(32);
        const outputMint = reader.readFixedArray(32);
        const inputTokenProgram = reader.readFixedArray(32);
        const outputTokenProgram = reader.readFixedArray(32);
        const makingAmount = reader.readU64();
        const takingAmount = reader.readU64();
        // Handle optional expiredAt
        const expiredAtDiscriminator = reader.readU8(); // Read 1-byte discriminator
        let expiredAt = null;
        if (expiredAtDiscriminator === 1) {
            expiredAt = reader.readI64(); // Read i64 only if value is present
        }
        const feeBps = reader.readU16();
        const feeAccount = reader.readFixedArray(32);
        return new JupiterLimitOrderV2CreateOrderLayout({
            orderKey,
            maker,
            inputMint,
            outputMint,
            inputTokenProgram,
            outputTokenProgram,
            makingAmount,
            takingAmount,
            expiredAt,
            feeBps,
            feeAccount,
        });
    }
    toObject() {
        return {
            orderKey: bs58_1.default.encode(this.orderKey),
            maker: bs58_1.default.encode(this.maker),
            inputMint: bs58_1.default.encode(this.inputMint),
            outputMint: bs58_1.default.encode(this.outputMint),
            inputTokenProgram: bs58_1.default.encode(this.inputTokenProgram),
            outputTokenProgram: bs58_1.default.encode(this.outputTokenProgram),
            makingAmount: this.makingAmount,
            takingAmount: this.takingAmount,
            expiredAt: this.expiredAt !== null ? this.expiredAt.toString() : null,
            feeBps: this.feeBps,
            feeAccount: bs58_1.default.encode(this.feeAccount),
        };
    }
}
exports.JupiterLimitOrderV2CreateOrderLayout = JupiterLimitOrderV2CreateOrderLayout;
JupiterLimitOrderV2CreateOrderLayout.schema = new Map([
    [
        JupiterLimitOrderV2CreateOrderLayout,
        {
            kind: 'struct',
            fields: [
                ['orderKey', [32]],
                ['maker', [32]],
                ['inputMint', [32]],
                ['outputMint', [32]],
                ['inputTokenProgram', [32]],
                ['outputTokenProgram', [32]],
                ['makingAmount', 'u64'],
                ['takingAmount', 'u64'],
                ['expiredAt', { option: 'i64' }],
                ['feeBps', 'u16'],
                ['feeAccount', [32]],
            ],
        },
    ],
]);
//# sourceMappingURL=jupiter-limit.layout.js.map