JSPM

  • Created
  • Published
  • Downloads 8296
  • Score
    100M100P100Q129022F

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

  1. Clone the repository

  2. Install dependencies:

    yarn install
  3. Set up environment variables:

    export GH_API_KEY=your_github_token
    export LIT_ABI_SOURCE=prod  # or 'dev'
  4. 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