Testnet Faucet type surface.
Testnet-only surface (Sepolia + Anvil). Mints take plaintext bigint amounts — no encryptor, no @zama-fhe dependency.
Args· 2
MintUnderlyingArgs{ amount, to?, account? }Mint plain 18-decimal TTT (TokenopsTestToken) via the open mint(to, amount). amount is a plaintext bigint; to defaults to the wallet account.
MintConfidentialArgs{ amount, to?, account? }Mint backed 6-decimal CTTT (ConfidentialTokenopsTestToken, ERC-7984) via the open faucet mint(to, amount uint64). amount is plaintext bigint — the encrypted euint64 is produced on-chain, not client-side.
Result· 4
MintUnderlyingResult{ amount, hash, to }Returned by mintUnderlying(). amount + recipient echo the validated input; hash is the tx hash.
MintConfidentialResult{ amount, handle, hash, to, underlyingMinted }Returned by mintConfidential(). handle is the euint64 ciphertext handle; underlyingMinted is the uint256 backing amount — both parsed from the ConfidentialMint event.
Concept primer →FaucetTokenMetadata{ address, decimals, name, symbol }Per-token descriptor. CTTT reports decimals 6; TTT reports decimals 18 — mind the mismatch when formatting amounts.
FaucetMetadata{ confidential, underlying, maxTotalSupply, rate }Returned by getMetadata(). Pairs the confidential + underlying FaucetTokenMetadata with the on-chain maxTotalSupply and rate bigints.
Config· 1
TestnetFaucetClientConfig{ publicClient, walletClient?, chainId?, address?, telemetry? }Headless client constructor (new TestnetFaucetClient(...) or the createTestnetFaucetClient helper; no on-chain factory). Reads need only publicClient; mints need walletClient. address overrides the resolved CTTT proxy — the TTT backing token is always read from that wrapper's underlying() getter, never supplied separately. chainId is guarded to Sepolia (11155111) or Anvil (31337).