@tribecahq/registry
Version:
Registry of Tribeca DAOs.
80 lines • 2.9 kB
JavaScript
import { PublicKey } from "@solana/web3.js";
import { mapValues } from "lodash";
const loadQuarryConfig = ({ rewarder, mintWrapper, redeemer, additionalRewarders, ...rest }) => {
return {
...rest,
rewarder: rewarder ? new PublicKey(rewarder) : undefined,
mintWrapper: mintWrapper ? new PublicKey(mintWrapper) : undefined,
redeemer: redeemer ? new PublicKey(redeemer) : undefined,
additionalRewarders: additionalRewarders.map((rew) => new PublicKey(rew)),
};
};
const loadTrackedAccountInfo = (infos) => {
return mapValues(infos, ({ address, ...info }) => ({
...info,
address: new PublicKey(address),
}));
};
/**
* Loads a Governor from its JSON representation.
* @returns
*/
export const loadGovernorConfig = ({ address, governance, quarry, saves, minter, gauge, mndeNftLocker, nftLockerGauges, addresses, ...rest }) => {
return {
address: new PublicKey(address),
governance: {
...governance,
address: new 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 PublicKey(mint),
duration,
}))
: undefined,
minter: minter
? {
mintWrapper: minter.mintWrapper
? new PublicKey(minter.mintWrapper)
: undefined,
redeemer: minter.redeemer
? new PublicKey(minter.redeemer)
: undefined,
}
: undefined,
gauge: gauge
? {
...gauge,
gaugemeister: new PublicKey(gauge.gaugemeister),
}
: undefined,
mndeNftLocker: mndeNftLocker
? {
...mndeNftLocker,
address: new PublicKey(mndeNftLocker.address),
creators: mndeNftLocker.creators.map((c) => new PublicKey(c)),
}
: undefined,
nftLockerGauges: nftLockerGauges
? nftLockerGauges.map((gaugeType) => {
return {
...gaugeType,
address: new PublicKey(gaugeType.address),
stateAccount: gaugeType.stateAccount
? new PublicKey(gaugeType.stateAccount)
: undefined,
};
})
: undefined,
...rest,
addresses: addresses ? loadTrackedAccountInfo(addresses) : undefined,
};
};
//# sourceMappingURL=loadConfig.js.map