"use strict";
/**
 * This code was AUTOGENERATED using the kinobi library.
 * Please DO NOT EDIT THIS FILE, instead use visitors
 * to add features, then rerun kinobi to update it.
 *
 * @see https://github.com/metaplex-foundation/kinobi
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.getTokenOwnedEscrowGpaBuilder = exports.safeFetchAllTokenOwnedEscrow = exports.fetchAllTokenOwnedEscrow = exports.safeFetchTokenOwnedEscrow = exports.fetchTokenOwnedEscrow = exports.deserializeTokenOwnedEscrow = exports.getTokenOwnedEscrowAccountDataSerializer = void 0;
const umi_1 = require("@metaplex-foundation/umi");
const serializers_1 = require("@metaplex-foundation/umi/serializers");
const types_1 = require("../types");
function getTokenOwnedEscrowAccountDataSerializer() {
    return (0, serializers_1.mapSerializer)((0, serializers_1.struct)([
        ['key', (0, types_1.getKeySerializer)()],
        ['baseToken', (0, serializers_1.publicKey)()],
        ['authority', (0, types_1.getEscrowAuthoritySerializer)()],
        ['bump', (0, serializers_1.u8)()],
    ], { description: 'TokenOwnedEscrowAccountData' }), (value) => ({ ...value, key: types_1.Key.TokenOwnedEscrow }));
}
exports.getTokenOwnedEscrowAccountDataSerializer = getTokenOwnedEscrowAccountDataSerializer;
function deserializeTokenOwnedEscrow(rawAccount) {
    return (0, umi_1.deserializeAccount)(rawAccount, getTokenOwnedEscrowAccountDataSerializer());
}
exports.deserializeTokenOwnedEscrow = deserializeTokenOwnedEscrow;
async function fetchTokenOwnedEscrow(context, publicKey, options) {
    const maybeAccount = await context.rpc.getAccount((0, umi_1.publicKey)(publicKey, false), options);
    (0, umi_1.assertAccountExists)(maybeAccount, 'TokenOwnedEscrow');
    return deserializeTokenOwnedEscrow(maybeAccount);
}
exports.fetchTokenOwnedEscrow = fetchTokenOwnedEscrow;
async function safeFetchTokenOwnedEscrow(context, publicKey, options) {
    const maybeAccount = await context.rpc.getAccount((0, umi_1.publicKey)(publicKey, false), options);
    return maybeAccount.exists ? deserializeTokenOwnedEscrow(maybeAccount) : null;
}
exports.safeFetchTokenOwnedEscrow = safeFetchTokenOwnedEscrow;
async function fetchAllTokenOwnedEscrow(context, publicKeys, options) {
    const maybeAccounts = await context.rpc.getAccounts(publicKeys.map((key) => (0, umi_1.publicKey)(key, false)), options);
    return maybeAccounts.map((maybeAccount) => {
        (0, umi_1.assertAccountExists)(maybeAccount, 'TokenOwnedEscrow');
        return deserializeTokenOwnedEscrow(maybeAccount);
    });
}
exports.fetchAllTokenOwnedEscrow = fetchAllTokenOwnedEscrow;
async function safeFetchAllTokenOwnedEscrow(context, publicKeys, options) {
    const maybeAccounts = await context.rpc.getAccounts(publicKeys.map((key) => (0, umi_1.publicKey)(key, false)), options);
    return maybeAccounts
        .filter((maybeAccount) => maybeAccount.exists)
        .map((maybeAccount) => deserializeTokenOwnedEscrow(maybeAccount));
}
exports.safeFetchAllTokenOwnedEscrow = safeFetchAllTokenOwnedEscrow;
function getTokenOwnedEscrowGpaBuilder(context) {
    const programId = context.programs.getPublicKey('mplTokenMetadata', 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s');
    return (0, umi_1.gpaBuilder)(context, programId)
        .registerFields({
        key: [0, (0, types_1.getKeySerializer)()],
        baseToken: [1, (0, serializers_1.publicKey)()],
        authority: [33, (0, types_1.getEscrowAuthoritySerializer)()],
        bump: [null, (0, serializers_1.u8)()],
    })
        .deserializeUsing((account) => deserializeTokenOwnedEscrow(account))
        .whereField('key', types_1.Key.TokenOwnedEscrow);
}
exports.getTokenOwnedEscrowGpaBuilder = getTokenOwnedEscrowGpaBuilder;
//# sourceMappingURL=tokenOwnedEscrow.js.map