"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TOKEN_MESSENGER_DISCRIMINATOR = void 0;
exports.getTokenMessengerDiscriminatorBytes = getTokenMessengerDiscriminatorBytes;
exports.getTokenMessengerEncoder = getTokenMessengerEncoder;
exports.getTokenMessengerDecoder = getTokenMessengerDecoder;
exports.getTokenMessengerCodec = getTokenMessengerCodec;
exports.decodeTokenMessenger = decodeTokenMessenger;
exports.fetchTokenMessenger = fetchTokenMessenger;
exports.fetchMaybeTokenMessenger = fetchMaybeTokenMessenger;
exports.fetchAllTokenMessenger = fetchAllTokenMessenger;
exports.fetchAllMaybeTokenMessenger = fetchAllMaybeTokenMessenger;
exports.getTokenMessengerSize = getTokenMessengerSize;
var tslib_1 = require("tslib");
var kit_1 = require("@solana/kit");
exports.TOKEN_MESSENGER_DISCRIMINATOR = new Uint8Array([
    162, 4, 242, 52, 147, 243, 221, 96,
]);
function getTokenMessengerDiscriminatorBytes() {
    return (0, kit_1.fixEncoderSize)((0, kit_1.getBytesEncoder)(), 8).encode(exports.TOKEN_MESSENGER_DISCRIMINATOR);
}
function getTokenMessengerEncoder() {
    return (0, kit_1.transformEncoder)((0, kit_1.getStructEncoder)([
        ["discriminator", (0, kit_1.fixEncoderSize)((0, kit_1.getBytesEncoder)(), 8)],
        ["denylister", (0, kit_1.getAddressEncoder)()],
        ["owner", (0, kit_1.getAddressEncoder)()],
        ["pendingOwner", (0, kit_1.getAddressEncoder)()],
        ["messageBodyVersion", (0, kit_1.getU32Encoder)()],
        ["authorityBump", (0, kit_1.getU8Encoder)()],
        ["feeRecipient", (0, kit_1.getAddressEncoder)()],
        ["minFeeController", (0, kit_1.getAddressEncoder)()],
        ["minFee", (0, kit_1.getU32Encoder)()],
    ]), function (value) { return (tslib_1.__assign(tslib_1.__assign({}, value), { discriminator: exports.TOKEN_MESSENGER_DISCRIMINATOR })); });
}
function getTokenMessengerDecoder() {
    return (0, kit_1.getStructDecoder)([
        ["discriminator", (0, kit_1.fixDecoderSize)((0, kit_1.getBytesDecoder)(), 8)],
        ["denylister", (0, kit_1.getAddressDecoder)()],
        ["owner", (0, kit_1.getAddressDecoder)()],
        ["pendingOwner", (0, kit_1.getAddressDecoder)()],
        ["messageBodyVersion", (0, kit_1.getU32Decoder)()],
        ["authorityBump", (0, kit_1.getU8Decoder)()],
        ["feeRecipient", (0, kit_1.getAddressDecoder)()],
        ["minFeeController", (0, kit_1.getAddressDecoder)()],
        ["minFee", (0, kit_1.getU32Decoder)()],
    ]);
}
function getTokenMessengerCodec() {
    return (0, kit_1.combineCodec)(getTokenMessengerEncoder(), getTokenMessengerDecoder());
}
function decodeTokenMessenger(encodedAccount) {
    return (0, kit_1.decodeAccount)(encodedAccount, getTokenMessengerDecoder());
}
function fetchTokenMessenger(rpc, address, config) {
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var maybeAccount;
        return tslib_1.__generator(this, function (_a) {
            switch (_a.label) {
                case 0: return [4, fetchMaybeTokenMessenger(rpc, address, config)];
                case 1:
                    maybeAccount = _a.sent();
                    (0, kit_1.assertAccountExists)(maybeAccount);
                    return [2, maybeAccount];
            }
        });
    });
}
function fetchMaybeTokenMessenger(rpc, address, config) {
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var maybeAccount;
        return tslib_1.__generator(this, function (_a) {
            switch (_a.label) {
                case 0: return [4, (0, kit_1.fetchEncodedAccount)(rpc, address, config)];
                case 1:
                    maybeAccount = _a.sent();
                    return [2, decodeTokenMessenger(maybeAccount)];
            }
        });
    });
}
function fetchAllTokenMessenger(rpc, addresses, config) {
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var maybeAccounts;
        return tslib_1.__generator(this, function (_a) {
            switch (_a.label) {
                case 0: return [4, fetchAllMaybeTokenMessenger(rpc, addresses, config)];
                case 1:
                    maybeAccounts = _a.sent();
                    (0, kit_1.assertAccountsExist)(maybeAccounts);
                    return [2, maybeAccounts];
            }
        });
    });
}
function fetchAllMaybeTokenMessenger(rpc, addresses, config) {
    return tslib_1.__awaiter(this, void 0, void 0, function () {
        var maybeAccounts;
        return tslib_1.__generator(this, function (_a) {
            switch (_a.label) {
                case 0: return [4, (0, kit_1.fetchEncodedAccounts)(rpc, addresses, config)];
                case 1:
                    maybeAccounts = _a.sent();
                    return [2, maybeAccounts.map(function (maybeAccount) {
                            return decodeTokenMessenger(maybeAccount);
                        })];
            }
        });
    });
}
function getTokenMessengerSize() {
    return 177;
}
//# sourceMappingURL=tokenMessenger.js.map