@ledgerhq/coin-celo
Version:
54 lines • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.sync = exports.getAccountShape = void 0;
const sdk_1 = require("../network/sdk");
const jsHelpers_1 = require("@ledgerhq/coin-framework/bridge/jsHelpers");
const account_1 = require("@ledgerhq/coin-framework/account");
const live_env_1 = require("@ledgerhq/live-env");
const network_1 = require("../network");
const sdk_2 = require("../network/sdk");
const synchronization_1 = require("@ledgerhq/coin-evm/bridge/synchronization");
const kit = (0, sdk_2.celoKit)();
const getAccountShape = async (info, config) => {
const { address, currency, initialAccount, derivationMode } = info;
const oldOperations = initialAccount?.operations || [];
const election = await kit.contracts.getElection();
const electionConfig = await election.getConfig();
const lockedGold = await kit.contracts.getLockedGold();
const accountId = (0, account_1.encodeAccountId)({
type: "js",
version: "2",
currencyId: currency.id,
xpubOrAddress: address,
derivationMode,
});
const { blockHeight, balance, spendableBalance, operations: newOperations, lockedBalance, nonvotingLockedBalance, } = await (0, network_1.getAccountDetails)(address, accountId);
const accountRegistrationStatus = await (0, sdk_1.getAccountRegistrationStatus)(address);
const pendingWithdrawals = accountRegistrationStatus ? await (0, sdk_1.getPendingWithdrawals)(address) : [];
const votes = accountRegistrationStatus ? await (0, sdk_1.getVotes)(address) : [];
const fromEvm = await (0, synchronization_1.getAccountShape)(info, config);
const operations = (0, jsHelpers_1.mergeOps)(oldOperations, newOperations);
const shape = {
id: accountId,
balance,
blockHeight,
operationsCount: operations.length,
spendableBalance,
subAccounts: (0, live_env_1.getEnv)("ENABLE_CELO_TOKENS") === false ? [] : fromEvm.subAccounts || [],
syncHash: fromEvm.syncHash,
celoResources: {
registrationStatus: accountRegistrationStatus,
lockedBalance,
nonvotingLockedBalance,
pendingWithdrawals,
votes,
electionAddress: election.address,
lockedGoldAddress: lockedGold.address,
maxNumGroupsVotedFor: electionConfig.maxNumGroupsVotedFor,
},
};
return { ...shape, operations };
};
exports.getAccountShape = getAccountShape;
exports.sync = (0, jsHelpers_1.makeSync)({ getAccountShape: exports.getAccountShape });
//# sourceMappingURL=synchronisation.js.map