Package Exports
- @lit-protocol/contracts
- @lit-protocol/contracts/custom-network-signatures
- @lit-protocol/contracts/dev/develop
- @lit-protocol/contracts/prod/datil
- @lit-protocol/contracts/prod/datil-dev
- @lit-protocol/contracts/prod/datil-test
- @lit-protocol/contracts/prod/naga-dev
- @lit-protocol/contracts/prod/naga-staging
- @lit-protocol/contracts/prod/naga-test
- @lit-protocol/contracts/signatures/datil
- @lit-protocol/contracts/signatures/datil-dev
- @lit-protocol/contracts/signatures/datil-test
- @lit-protocol/contracts/signatures/develop
- @lit-protocol/contracts/signatures/naga-dev
- @lit-protocol/contracts/signatures/naga-staging
- @lit-protocol/contracts/signatures/naga-test
Readme
Lit Protocol Contract Fetcher
A TypeScript utility for fetching and caching Lit Protocol contract ABIs and addresses. This tool maintains consistent contract data formats across the Lit Protocol ecosystem.
Architecture
flowchart TB
subgraph Main Process
main["main()"] --> procProd["Process Production Networks"]
main --> procDev["Process Development Networks"]
main --> genIndex["Generate Index File"]
main --> summary["Print Network Summary"]
end
subgraph Production Flow
procProd --> |"For each network"| updateProdCache["updateProdCache()"]
updateProdCache --> getProdABIs["getProdContractABIs()"]
updateProdCache --> getLastMod["getLastModified()"]
updateProdCache --> writeCache["Write Cache File"]
end
subgraph Development Flow
procDev --> updateDevCache["updateDevCache()"]
updateDevCache --> getDevABIs["getDevContractABIs()"]
updateDevCache --> getLastMod
updateDevCache --> writeCache
end
subgraph File Generation
genIndex --> |"Generate"| indexTS["dist/index.ts"]
writeCache --> |"Generate"| prodTS["dist/prod/*.ts"]
writeCache --> |"Generate"| devTS["dist/dev/*.ts"]
end
subgraph Configuration
config["Constants & Config"]
networks["Network Definitions"]
contractMap["Contract Name Mappings"]
config --> main
networks --> main
contractMap --> updateProdCache
contractMap --> updateDevCache
end
subgraph GitHub API
getProdABIs --> |"Fetch"| ghAPI["GitHub API"]
getDevABIs --> |"Fetch"| ghAPI
getLastMod --> |"Fetch"| ghAPI
end
style main fill:#f9f,stroke:#333,stroke-width:4px
style ghAPI fill:#b8d4ff,stroke:#333
style config fill:#d4ffb8,stroke:#333
Project Structure
src/
├── config/ # Configuration constants and network definitions
├── services/ # Core business logic services
├── types/ # TypeScript type definitions
├── utils/ # Utility functions
└── index.ts # Main entry point
Prerequisites
- Node.js 16 or higher
- GitHub Personal Access Token with read permissions
Environment Variables
GH_API_KEY
: GitHub Personal Access Token (required)DEV_BRANCH
: Development branch name (defaults to 'develop')
Installation
yarn add @lit-protocol/contracts
Usage
Production Networks (from 'networks' repo)
import { datilDev, datilTest, datil } from "@lit-protocol/contracts";
console.log("datilDev:", datilDev);
console.log("datilTest:", datilTest);
console.log("datil:", datil);
Development Networks (from 'lit-assets' repo)
import { develop } from "@lit-protocol/contracts";
console.log("Development contracts:", develop);
Local Development
Clone the repository
Install dependencies:
yarn install
Set up environment variables:
export GH_API_KEY=your_github_token export LIT_ABI_SOURCE=prod # or 'dev'
Run the fetcher:
# For default branch bun run fetch-contracts.ts # For specific branch DEV_BRANCH=develop bun run fetch-contracts.ts
CI/CD Workflow
License
MIT