v2.0.0-rc.1 release candidate
The API is frozen and later candidates carry fixes only, except the receipt-free and Safe create surface of /fhe-airdrop, which is @beta. Published on the next dist-tag; latest stays on 1.6.0 until 2.0.0.Testnet Faucet 2.0 · ABIs · 2
Raw Testnet Faucet 2.0 ABI exports.
Confidential token ABI for the backed ERC-7984 faucet mint, plain ERC-20 ABI for the 18-decimal underlying. Both are byte-identical to the 1.6 exports. Sepolia only.
Available ABIs
confidentialTokenopsTestTokenAbi@tokenops/sdk/testnet-faucetCTTT: 6-decimal ERC-7984 confidential wrapper (UUPS proxy). Open backed faucet mint(to, amount) returning a euint64; encrypted balances, disclosure, wrap and unwrap, operator and upgrade surface.
41 fns13 eventstokenopsTestTokenAbi@tokenops/sdk/testnet-faucetTTT: plain 18-decimal ERC-20 underlying token. Open mint(to, amount); standard Transfer / Approval surface.
10 fns2 events
Direct viem usage
The SDK client classes are the recommended surface — they handle address resolution, typed errors, receipt/event parsing, and telemetry. But the ABIs themselves ship for one-off reads, indexing, or third-party tooling integration.
@tokenops/sdk/testnet-faucet
ts
import { getContract } from "viem";
import { confidentialTokenopsTestTokenAbi } from "@tokenops/sdk/testnet-faucet";
// Attach directly to viem if you'd rather skip the SDK client class —
// useful for one-off reads or for surfacing the contract in your own tooling.
const contract = getContract({
address: contractAddress,
abi: confidentialTokenopsTestTokenAbi,
client: { public: publicClient, wallet: walletClient },
});
// Now you have a viem-typed contract — every method exists on contract.read /
// contract.write. The SDK client class wraps this with address resolution, typed errors, receipt/event parsing, and telemetry —
// but the underlying ABI is the same.