• Calling .on(chain) is required after each convenience method to set the target chain, except for requireLitAction.
  • Use validate() during development to catch operator ordering and empty builder issues.
  • For advanced conditions, prefer unifiedAccs() when you already have canonical unified condition objects.

Installation

npm install @lit-protocol/access-control-conditions@beta

Examples

Using the convenience helpers

import { createAccBuilder } from '@lit-protocol/access-control-conditions';

// Simple ETH balance check on Ethereum
const simple = createAccBuilder()
  .requireEthBalance('1000000000000000000')
  .on('ethereum')
  .build();

// Weather-gated content using Lit Action
const weatherGated = createAccBuilder()
  .requireLitAction('Qm...IPFSCID', 'checkTemperature', ['40'], 'true')
  .build();

// Complex: (ETH >= 0.001 on ethereum) OR (ERC20 >= 1000 on polygon) AND (Wallet ownership on ethereum)
const complex = createAccBuilder()
  .requireEthBalance('1000000000000000').on('ethereum')
  .or()
  .requireTokenBalance('0x123...', '1000').on('polygon')
  .and()
  .requireWalletOwnership('0x123...').on('ethereum')
  .build();
See Weather Check Lit Action for more details.

Using the raw conditions

import { createAccBuilder } from '@lit-protocol/access-control-conditions';

const rawCondition = {
  conditionType: 'evmBasic',
  contractAddress: '',
  standardContractType: '',
  chain: 'ethereum',
  method: 'eth_getBalance',
  parameters: [':userAddress', 'latest'],
  returnValueTest: {
    comparator: '>=',
    value: '1000000000000000000',
  },
};

const conditions = createAccBuilder()
  .unifiedAccs(rawCondition)
  .build();

Reference

Functions

createAccBuilder()
Builder for Access Control Conditions (ACC) supporting EVM, Solana, Cosmos, and Lit Actions with boolean logic, grouping, and helpers.

Parameters

No parameters.

Returns

AccBuilder
object
Fluent builder with convenience methods, boolean operators, grouping, and utilities.

Custom Access Control Conditions

Manually supply the access control conditions instead of using the chainable helper methods.
unifiedAccs(condition)
AccBuilder
evmBasic(params)
AccBuilder
evmContract(params)
AccBuilder
solRpc(params)
AccBuilder
cosmos(params)
AccBuilder

EVM Conditions

requireEthBalance(amount, comparator?)
ChainableEvmBuilder
Require ETH balance on a chain.
requireTokenBalance(contractAddress, amount, comparator?)
ChainableEvmBuilder
Require ERC‑20 token balance.
requireNftOwnership(contractAddress, tokenId?)
ChainableEvmBuilder
Require ERC‑721 or ERC‑1155 ownership.
requireWalletOwnership(address)
ChainableEvmBuilder
Verify that :userAddress equals the provided address.
requireTimestamp(timestamp, comparator?)
ChainableEvmBuilder
Compare latest block timestamp using comparator (default ’>=’).
requireDAOMembership(daoAddress)
ChainableEvmBuilder
Check membership for MolochDAOv2.1.
requirePOAPOwnership(eventId)
ChainableEvmBuilder
Check POAP event ownership.

Solana Conditions

requireSolBalance(amount, comparator?)
ChainableSolBuilder
requireSolNftOwnership(collectionAddress)
ChainableSolBuilder
requireSolWalletOwnership(address)
ChainableSolBuilder

Cosmos Conditions

requireCosmosBalance(amount, comparator?)
ChainableCosmosBuilder
requireCosmosWalletOwnership(address)
ChainableCosmosBuilder
requireCosmosCustom(path, key, value, comparator?)
ChainableCosmosBuilder

Lit Action Conditions

requireLitAction(ipfsCid, method, parameters, expectedValue, comparator?)
AccBuilder
Create a condition validated by a Lit Action.
See Weather Check Lit Action

Boolean operations

and()
AccBuilder
or()
AccBuilder

Build and utilities

build()
AccessControlConditions
Finalise and return the conditions array (unformatted; canonical formatting occurs downstream).
validate()
{ valid: boolean; errors: string[] }
humanize()
Promise<string>
Generate a human-readable explanation of the built conditions.