Integrate

One view call. No keys, no subscription, no gas for off-chain callers. A vault checks a launch before deploying capital; an agent checks before recommending it.

Check one launch (viem)

import { createPublicClient, http, parseAbi } from 'viem';
import { xLayer } from 'viem/chains';

const gate = '0x649373f612d278634Ba8656aF53bCA7D8dc0f940';
const abi = parseAbi([
  'function check(address token, uint256 filterId) view returns (bool pass, uint16 inputs)',
  'function checkMany(address[] tokens, uint256 filterId) view returns (bool[] passes, uint16[] ins)',
]);
const client = createPublicClient({ chain: xLayer, transport: http() });

const [pass, inputs] = await client.readContract({
  address: gate, abi, functionName: 'check', args: [token, 1n], // 1 = BASIC_SAFETY
});

Gate a vault (Solidity)

interface ILatchGate {
    function checkMany(address[] calldata tokens, uint256 filterId)
        external view returns (bool[] memory passes, uint16[] memory inputs);
}

function _deployable(address[] calldata candidates) internal view returns (address[] memory ok) {
    (bool[] memory passes,) = GATE.checkMany(candidates, FILTER_ID);
    // keep only unlatched launches…
}

Semantics

Lock an allocation

LatchLock.createLock(token, amount, beneficiary, [(filterId, bps)…]). bps must sum to 10,000; unlock filters must be combinational. release(lockId, trancheIdx) is callable by anyone and pays only the beneficiary.