@antefinance/ante-sdk
Version:
Library for interacting with Ante smart contracts
20 lines (19 loc) • 839 B
JavaScript
import { StandardMerkleTree } from '@openzeppelin/merkle-tree';
import { encodeAbiParameters, getAddress } from 'viem';
const buildMerkleTree = (addresses) => {
return StandardMerkleTree.of(addresses.map((address) => [getAddress(address)]), ['address'], { sortLeaves: true });
};
const buildConfiguration = (manager, addresses) => {
const tree = buildMerkleTree(addresses);
const root = tree.root;
return encodeAbiParameters([{ type: 'address' }, { type: 'bytes' }], [manager, encodeAbiParameters([{ type: 'bytes32' }], [root])]);
};
const getProof = (candidate, addresses) => {
const tree = buildMerkleTree(addresses);
const proof = tree.getProof([getAddress(candidate)]);
return encodeAbiParameters([{ type: 'bytes32[]' }], [proof]);
};
export const AllowlistGate = {
buildConfiguration,
getProof,
};