Skip to content

Conversation

@PaulRBerg
Copy link
Member

@PaulRBerg PaulRBerg commented Nov 3, 2025

Summary

Adds Claude Code skill to convert JSON ABI files to TypeScript with proper type exports, and adds the missing Flow ABI functions.

Closes #72
Closes #73

The ABI diff is large because of this new Biome rule:

{
  "includes": ["src/evm/releases/**/abi/**/*.ts"],
  "javascript": {
    "formatter": {
      "expand": "never" // Never expand objects in the ABI to save number of lines
    }
  }
}

Add Claude Code skill to convert JSON ABI files to TypeScript with
proper type exports. Regenerate all contract ABIs using new tooling,
reducing codebase by 8.5k lines through optimized type inference.
@coderabbitai
Copy link

coderabbitai bot commented Nov 3, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This PR introduces an ABI code generation tool that automatically converts JSON ABI files into TypeScript constant exports. It includes a new codegen script (codegen.ts), configuration files for the Skill(abi-codegen), and updates to biome.jsonc for formatting generated files. The PR then regenerates and reformats all TypeScript ABI files across multiple protocol versions (airdrops v1.1-v2.0, flow v1.0-v2.0, lockup v1.0-v1.2) to ensure consistency and completeness.

Possibly related PRs

Suggested reviewers

  • razgraf
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/abi-codegen-skill

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3837bc7 and 531666a.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (40)
  • .claude/settings.json (1 hunks)
  • .claude/skills/abi-codegen/SKILL.md (1 hunks)
  • .claude/skills/abi-codegen/codegen.ts (1 hunks)
  • biome.jsonc (1 hunks)
  • package.json (1 hunks)
  • src/evm/releases/airdrops/v1.1/abi/SablierV2MerkleStreamer.ts (2 hunks)
  • src/evm/releases/airdrops/v1.1/abi/SablierV2MerkleStreamerFactory.ts (1 hunks)
  • src/evm/releases/airdrops/v1.1/abi/SablierV2MerkleStreamerLL.ts (2 hunks)
  • src/evm/releases/airdrops/v1.2/abi/SablierV2MerkleLL.ts (4 hunks)
  • src/evm/releases/airdrops/v1.2/abi/SablierV2MerkleLT.ts (6 hunks)
  • src/evm/releases/airdrops/v1.2/abi/SablierV2MerkleLockup.ts (3 hunks)
  • src/evm/releases/airdrops/v1.2/abi/SablierV2MerkleLockupFactory.ts (1 hunks)
  • src/evm/releases/airdrops/v1.3/abi/SablierMerkleBase.ts (3 hunks)
  • src/evm/releases/airdrops/v1.3/abi/SablierMerkleInstant.ts (3 hunks)
  • src/evm/releases/airdrops/v1.3/abi/SablierMerkleLL.ts (1 hunks)
  • src/evm/releases/airdrops/v1.3/abi/SablierMerkleLT.ts (1 hunks)
  • src/evm/releases/airdrops/v1.3/abi/SablierMerkleLockup.ts (3 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierFactoryMerkleInstant.ts (1 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierFactoryMerkleLL.ts (1 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierFactoryMerkleLT.ts (1 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierFactoryMerkleVCA.ts (1 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierMerkleBase.ts (4 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierMerkleInstant.ts (7 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierMerkleLL.ts (6 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierMerkleLT.ts (8 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierMerkleLockup.ts (4 hunks)
  • src/evm/releases/airdrops/v2.0/abi/SablierMerkleVCA.ts (6 hunks)
  • src/evm/releases/flow/v1.0/abi/SablierFlow.ts (1 hunks)
  • src/evm/releases/flow/v1.1/abi/SablierFlow.ts (1 hunks)
  • src/evm/releases/flow/v2.0/abi/SablierFlow.ts (1 hunks)
  • src/evm/releases/lockup/v1.0/abi/SablierV2Lockup.ts (7 hunks)
  • src/evm/releases/lockup/v1.0/abi/SablierV2LockupDynamic.ts (2 hunks)
  • src/evm/releases/lockup/v1.0/abi/SablierV2LockupLinear.ts (2 hunks)
  • src/evm/releases/lockup/v1.1/abi/SablierV2Lockup.ts (7 hunks)
  • src/evm/releases/lockup/v1.1/abi/SablierV2LockupDynamic.ts (2 hunks)
  • src/evm/releases/lockup/v1.1/abi/SablierV2LockupLinear.ts (2 hunks)
  • src/evm/releases/lockup/v1.2/abi/SablierV2Lockup.ts (4 hunks)
  • src/evm/releases/lockup/v1.2/abi/SablierV2LockupDynamic.ts (3 hunks)
  • src/evm/releases/lockup/v1.2/abi/SablierV2LockupLinear.ts (3 hunks)
  • src/evm/releases/lockup/v1.2/abi/SablierV2LockupTranched.ts (3 hunks)

Comment @coderabbitai help to get the list of available commands and usage tips.

@PaulRBerg PaulRBerg force-pushed the feat/abi-codegen-skill branch from a403444 to 531666a Compare November 3, 2025 17:08
@PaulRBerg PaulRBerg merged commit e3d6759 into main Nov 3, 2025
2 of 3 checks passed
@PaulRBerg
Copy link
Member Author

merged this PR right away, if you need this fix integrated in a different repo @gavriliumircea, feel free to cut a new release (v1.4.3)

This was referenced Nov 5, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Create script that transforms a json abi into a typescript object. Flow typescript ABIS are missing function

2 participants