@tribecahq/registry
Version:
Registry of Tribeca DAOs.
84 lines • 3.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadGovernorConfig = void 0;
const web3_js_1 = require("@solana/web3.js");
const lodash_1 = require("lodash");
const loadQuarryConfig = ({ rewarder, mintWrapper, redeemer, additionalRewarders, ...rest }) => {
return {
...rest,
rewarder: rewarder ? new web3_js_1.PublicKey(rewarder) : undefined,
mintWrapper: mintWrapper ? new web3_js_1.PublicKey(mintWrapper) : undefined,
redeemer: redeemer ? new web3_js_1.PublicKey(redeemer) : undefined,
additionalRewarders: additionalRewarders.map((rew) => new web3_js_1.PublicKey(rew)),
};
};
const loadTrackedAccountInfo = (infos) => {
return (0, lodash_1.mapValues)(infos, ({ address, ...info }) => ({
...info,
address: new web3_js_1.PublicKey(address),
}));
};
/**
* Loads a Governor from its JSON representation.
* @returns
*/
const loadGovernorConfig = ({ address, governance, quarry, saves, minter, gauge, mndeNftLocker, nftLockerGauges, addresses, ...rest }) => {
return {
address: new web3_js_1.PublicKey(address),
governance: {
...governance,
address: new web3_js_1.PublicKey(governance.address),
parameters: governance.parameters
? {
governor: governance.parameters.governor,
locker: governance.parameters.locker,
}
: undefined,
},
quarry: quarry ? loadQuarryConfig(quarry) : undefined,
saves: saves
? saves.map(({ mint, duration }) => ({
mint: new web3_js_1.PublicKey(mint),
duration,
}))
: undefined,
minter: minter
? {
mintWrapper: minter.mintWrapper
? new web3_js_1.PublicKey(minter.mintWrapper)
: undefined,
redeemer: minter.redeemer
? new web3_js_1.PublicKey(minter.redeemer)
: undefined,
}
: undefined,
gauge: gauge
? {
...gauge,
gaugemeister: new web3_js_1.PublicKey(gauge.gaugemeister),
}
: undefined,
mndeNftLocker: mndeNftLocker
? {
...mndeNftLocker,
address: new web3_js_1.PublicKey(mndeNftLocker.address),
creators: mndeNftLocker.creators.map((c) => new web3_js_1.PublicKey(c)),
}
: undefined,
nftLockerGauges: nftLockerGauges
? nftLockerGauges.map((gaugeType) => {
return {
...gaugeType,
address: new web3_js_1.PublicKey(gaugeType.address),
stateAccount: gaugeType.stateAccount
? new web3_js_1.PublicKey(gaugeType.stateAccount)
: undefined,
};
})
: undefined,
...rest,
addresses: addresses ? loadTrackedAccountInfo(addresses) : undefined,
};
};
exports.loadGovernorConfig = loadGovernorConfig;
//# sourceMappingURL=loadConfig.js.map