@antefinance/ante-sdk
Version:
Library for interacting with Ante smart contracts
23 lines (22 loc) • 989 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AllowlistGate = void 0;
const merkle_tree_1 = require("@openzeppelin/merkle-tree");
const viem_1 = require("viem");
const buildMerkleTree = (addresses) => {
return merkle_tree_1.StandardMerkleTree.of(addresses.map((address) => [(0, viem_1.getAddress)(address)]), ['address'], { sortLeaves: true });
};
const buildConfiguration = (manager, addresses) => {
const tree = buildMerkleTree(addresses);
const root = tree.root;
return (0, viem_1.encodeAbiParameters)([{ type: 'address' }, { type: 'bytes' }], [manager, (0, viem_1.encodeAbiParameters)([{ type: 'bytes32' }], [root])]);
};
const getProof = (candidate, addresses) => {
const tree = buildMerkleTree(addresses);
const proof = tree.getProof([(0, viem_1.getAddress)(candidate)]);
return (0, viem_1.encodeAbiParameters)([{ type: 'bytes32[]' }], [proof]);
};
exports.AllowlistGate = {
buildConfiguration,
getProof,
};