Create
Documentation
Reference

ABI

Every ABI below is emitted straight from the compiler by foci/backend/ops/scripts/emit-ui-docs.ts, so it matches the deployed bytecode on arc-mainnet (chain 5042). Each file is the bare ABI array — exactly what viem, ethers, wagmi and cast expect.

Everything at once#

foci.json — every contract with its address, the chain id, the factory's start block and the third-party addresses (Uniswap, Permit2, USDC) you need alongside them. One download is enough to build a client.

bash
curl -O https://foci.family/abi/foci.json
ts
import foci from "./foci.json";

const factory = foci.contracts.find((c) => c.name === "FociLaunchFactory")!;
await client.readContract({
  address: factory.address as `0x${string}`,
  abi: factory.abi,
  functionName: "launchFee",
});

Individual contracts#

FileSurfaceAddress
FociLaunchFactory.json54 fn · 22 ev · 49 err0xa392D6eca5242715517eeCd43406aeD19424FAC0
FociBondingCurve.json39 fn · 11 ev · 20 errper launch — no fixed address
FociLauncherToken.json18 fn · 2 ev · 7 errper launch — no fixed address
FociLaunchAndBuy.json8 fn · 4 ev · 9 err0x5C5c202271E1300bD5Ce43A4F5C1cEA8efd57B63
FociMemeHook.json47 fn · 19 ev · 22 err0xF847790B6fA5DA300BB3f56f10d743e71E98e044
FociFeeEscrow.json8 fn · 4 ev · 6 err0x5a76a44B49ca0f7c4dB181f289C1eCA91d928406
FociReferralRegistry.json5 fn · 1 ev · 5 err0xe047D0F0ce0dD600732793762B1f1929Adc5015d
FociLaunchLocker.json14 fn · 5 ev · 10 err0x539fD9e6a6316B65bEd9dDb9A570959e0bc8C31A
FociLaunchDeployer.json4 fn · 0 ev · 6 err0xa93f9CeFD92A77e1EAffa3246B6F4DB91a5c5659
FociGraduationExecutor.json5 fn · 2 ev · 6 err0xEB286974C35d2741B0fe9b2a1Cd41E53d06aE406
FociRewardsDistributorFactory.json8 fn · 1 ev · 8 err0xdac447110867954F00638125bbd5c66D8E0a7195
FociRewardsDistributor.json22 fn · 7 ev · 18 errper launch — no fixed address
Note
FociBondingCurve and FociLauncherToken are deployed once per launch, so they have no fixed address. Read the pair from the factory with getLaunchedToken(token) — see Addresses.

Using one file#

bash
curl -O https://foci.family/abi/FociLaunchFactory.json
ts
import factoryAbi from "./FociLaunchFactory.json";

The JSON is the array itself, not an object wrapping one, so it drops straight into abi: with no unwrapping.