UNPKG

@antefinance/ante-sdk

Version:

Library for interacting with Ante smart contracts

20 lines (19 loc) 839 B
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, };