Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
7506c3a
feat: integrate Mantle (chainId 5000) as second-class EVM chain with …
NeOMakinG Feb 17, 2026
70fbffe
feat: integrate Cronos (chainId 25) as second-class EVM chain with Re…
NeOMakinG Feb 17, 2026
150c1cb
fix: add mantle coingecko generated adapter and fix test
NeOMakinG Feb 17, 2026
46d51b4
fix: add cronos coingecko generated adapter and fix test
NeOMakinG Feb 17, 2026
b4a9910
fix: add missing Cronos targetNetwork entry in EvmBaseAdapter
NeOMakinG Feb 17, 2026
5d93fd9
fix: add Mantle TX status polling via useSendActionSubscriber
NeOMakinG Feb 17, 2026
9fe2839
fix: add Cronos TX status polling and relay native asset mapping
NeOMakinG Feb 17, 2026
fe27283
fix: add mantle to coingecko supported chains and zerion
NeOMakinG Feb 17, 2026
d49b10f
fix: add cronos to coingecko supported chains and zerion
NeOMakinG Feb 17, 2026
7bf5ad3
chore: add bead context files (ss-dx5.3 + master ss-dx5)
NeOMakinG Feb 19, 2026
a91456e
chore: add bead context files (ss-dx5.4 + master ss-dx5)
NeOMakinG Feb 19, 2026
6b57992
Merge remote-tracking branch 'origin/develop' into feat/integrate-man…
gomesalexandre Feb 20, 2026
d689825
fix: broken merge conflict resolutions for mantle entries
gomesalexandre Feb 20, 2026
a057785
chore: regenerate mantle assets via generate:chain
gomesalexandre Feb 20, 2026
20e0f22
Merge remote-tracking branch 'origin/develop' into feat/integrate-cro…
gomesalexandre Feb 20, 2026
e2c1826
Merge branch 'feat/integrate-mantle-relay' into feat/integrate-cronos…
gomesalexandre Feb 20, 2026
763b3cd
fix: resolve merge conflicts and regenerate cronos assets
gomesalexandre Feb 20, 2026
e89b577
fix: lint import sort
gomesalexandre Feb 20, 2026
eb47d3d
Merge branch 'feat/integrate-mantle-relay' into feat/integrate-cronos…
gomesalexandre Feb 20, 2026
218766e
Merge branch 'develop' into feat/integrate-mantle-relay
gomesalexandre Feb 20, 2026
2a8915f
fix: generalize wrapped native detection, fix linea icon, update cont…
gomesalexandre Feb 20, 2026
ee8bba9
chore: update pr beads context
gomesalexandre Feb 20, 2026
0cbc863
merge: feat/integrate-mantle-relay into feat/integrate-cronos-relay
gomesalexandre Feb 20, 2026
45489e0
fix: add WCRO to wrapped native mapping, regen cronos assets
gomesalexandre Feb 20, 2026
bed81cc
squash merge feat/integrate-mantle-relay
gomesalexandre Feb 20, 2026
2ba70b8
chore: regen cronos, linea, mantle assets
gomesalexandre Feb 20, 2026
543a570
Merge branch 'develop' into feat/integrate-cronos-relay
gomesalexandre Feb 20, 2026
ba7d999
chore: regen cronos, linea, mantle assets
gomesalexandre Feb 20, 2026
da4c21a
fix: add CRO cross-chain relation, state migration, orphan key recovery
gomesalexandre Feb 20, 2026
c1cc36f
fix: null-safe effectiveGasPrice in SecondClassEvmAdapter, add state …
gomesalexandre Feb 20, 2026
5f6fce2
chore: add lint-before-push rule to CLAUDE.md
gomesalexandre Feb 20, 2026
07848e7
chore: trigger CI
gomesalexandre Feb 20, 2026
c1a723c
fix: address coderabbitai review comments
gomesalexandre Feb 20, 2026
de42e3c
revert: remove AGENTS.md changes from cronos pr
gomesalexandre Feb 20, 2026
093b000
fix: type-check OOM on CI by increasing node heap size
gomesalexandre Feb 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .beads/ss-dx5.4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
[
{
"id": "ss-dx5.4",
"title": "Integrate Cronos (chainId: 25, CRO, EVM Sidechain)",
"description": "TVL: $376.1M | RPC: https://cronos.drpc.org | Explorer: https://cronoscan.com | Token Support: All | Pattern B (RPC-only) | Crypto.com ecosystem",
"notes": "Logo: https://assets.relay.link/icons/25/light.png (dark: dark.png)\nCoinGecko: cronos\nArch: EVM Sidechain (Crypto.com)\nViem key: cronos\n⚠️ NON-ETH GAS: CRO - must configure in chainIdToFeeAssetId.ts\nChecklist: [ ] chain-adapters [ ] caip [ ] asset-service [ ] feature-flag [ ] plugin [ ] env-config [ ] icon/logo [ ] fee-asset-config\n\n--- RELAY ACTIVATION ---\n[ ] Add to chainIdToRelayChainId in packages/swapper/src/swappers/RelaySwapper/constant.ts\n[ ] Add native asset case in packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts\n--- ASSET DATA REGEN ---\n[ ] Create scripts/generateAssetData/\u003cchainname\u003e/index.ts\n[ ] Add case to scripts/generateAssetData/coingecko.ts\n[ ] Add import + getAssets call to scripts/generateAssetData/generateAssetData.ts\n[ ] Run: yarn generate:asset-data\n--- DRAFT PR ---\n[ ] Branch: feat/integrate-\u003cchainname\u003e-relay (off develop)\n[ ] gh pr create --draft using .github/PULL_REQUEST_TEMPLATE.md\n[ ] Fill: Description, Issue (Part of #11902), Risk (Low - behind feature flag), Testing (enable flag + verify chain + relay bridge quote), Operations (behind flag checkbox)\n[ ] yarn lint --fix \u0026\u0026 yarn type-check must pass before PR",
"status": "open",
"priority": 1,
"issue_type": "task",
"owner": "[email protected]",
"created_at": "2026-02-17T10:55:24Z",
"created_by": "NeOMakinG",
"updated_at": "2026-02-17T11:21:35Z",
"labels": [
"evm",
"non-eth-gas",
"relay",
"tier-1"
],
"dependencies": [
{
"id": "ss-dx5",
"title": "Add support for missing Relay.link EVM chains",
"description": "Master epic tracking integration of ALL chains supported by Relay.link that ShapeShift web doesn't currently support. Enables cross-chain bridging capabilities via Relay infrastructure. See https://github.com/shapeshift/web/issues/11902 for full details. All new EVM chains will use Pattern B (RPC-only + getKnownTokens) since no ShapeShift unchained indexer infrastructure exists for these chains.",
"notes": "=== FROM ISSUE COMMENTS ===\n\nLOGO PATTERN: https://assets.relay.link/icons/{chainId}/light.png (dark: dark.png)\n\nARCHITECTURE GROUPS:\n- OP Stack (standard): Ink, Unichain, BOB, Mode, Hemi, World Chain, Soneium, Zircuit, Lisk, Cyber, Blast, Zora, Redstone, Shape, Superseed, Manta Pacific\n- zkEVM (special handling): Scroll, zkSync Era, Linea, Polygon zkEVM, Taiko, Abstract\n- Arbitrum Orbit: ApeChain, Xai, Sanko\n- Non-ETH gas (10 chains): Mantle(MNT), Metis(METIS), Cronos(CRO), Ronin(RON), Sonic(S), Flow(FLOW), Berachain(BERA), Plume(PLUME), Story(IP), Stable(gUSDT)\n\nCRITICAL CHAINS:\n1. Celo (42220): Native token is BOTH native AND ERC20. Relay uses wrapped CELO. Check relayTransactionMetadata.assetRequiringApproval\n2. Blast (81457): Rebasing ETH from L1 staking yield. USDB also rebases. Handle in balance displays.\n3. Ethereal (5064014): NOT in viem. Needs custom chain definition.\n4. zkSync Era (324) + Abstract (2741): Type 113 (EIP-712) transactions. Use viem zksync chainConfig.\n5. Linea (59144): Custom linea_estimateGas RPC method.\n6. Sei (1329): Parallelized EVM + CosmWasm interop. CoinGecko uses sei-v2 NOT sei.\n\nCOINGECKO GOTCHAS: sei-\u003esei-v2, plume-\u003eplume-network, zksync-\u003ezksync, metis-\u003emetis-andromeda, morph-\u003emorph-l2, gravity-\u003egravity-alpha, boba-\u003eboba, zora-\u003ezora-network, funkichain-\u003efunki, Superposition (capital S). BOB/Zero Network have null chain_identifier. 11 chains not on CoinGecko at all.\n\nPER-CHAIN CHECKLIST: [ ] chain-adapters [ ] caip [ ] asset-service [ ] feature-flag [ ] plugin [ ] env-config [ ] icon/logo\n\n=== RELAY SWAPPER INTEGRATION (per chain) ===\n\nFILE 1: packages/swapper/src/swappers/RelaySwapper/constant.ts\n - Add to chainIdToRelayChainId map: [newChainChainId]: \u003cviem_chain\u003e.id (or numeric chain ID)\n - Import the caip chainId (e.g., scrollChainId) from @shapeshiftoss/caip\n - Import viem chain from viem/chains (or use raw numeric ID if not in viem)\n - The reverse map relayChainIdToChainId auto-generates via invert()\n\nFILE 2: packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts\n - Add case CHAIN_REFERENCE.NewChainMainnet: with ASSET_REFERENCE.NewChain + ASSET_NAMESPACE.slip44\n\nNO CHANGES NEEDED (for EVM chains):\n - getRelayAssetAddress.ts (uses generic isNativeEvmAsset + DEFAULT_RELAY_EVM_TOKEN_ADDRESS)\n - getRelayDefaultUserAddress.ts (falls through to DEFAULT_RELAY_EVM_USER_ADDRESS default)\n\nUPSTREAM DEPS REQUIRED (in @shapeshiftoss packages):\n - @shapeshiftoss/caip: export newChainChainId, CHAIN_REFERENCE.NewChainMainnet, ASSET_REFERENCE.NewChain\n - @shapeshiftoss/types: KnownChainIds.NewChainMainnet\n - @shapeshiftoss/chain-adapters: NewChain chain adapter class\n - viem/chains: chain config (or custom if not in viem)\n\nRELAY API: https://api.relay.link (env: VITE_RELAY_API_URL) - no per-chain config needed\n\n=== ASSET DATA REGENERATION (per chain) ===\n\nAfter integrating each chain, run a partial assets data regen to populate the token list.\n\nFILE 1 (CREATE): scripts/generateAssetData/\u003cchainname\u003e/index.ts\n Pattern (identical for all EVM chains):\n import { \u003cchainname\u003eChainId } from '@shapeshiftoss/caip'\n import type { Asset } from '@shapeshiftoss/types'\n import { \u003cchainname\u003e, unfreeze } from '@shapeshiftoss/utils'\n import * as coingecko from '../coingecko'\n export const getAssets = async (): Promise\u003cAsset[]\u003e =\u003e {\n const assets = await coingecko.getAssets(\u003cchainname\u003eChainId)\n return [...assets, unfreeze(\u003cchainname\u003e)]\n }\n\nFILE 2 (MODIFY): scripts/generateAssetData/coingecko.ts\n - Import \u003cchainname\u003eChainId from @shapeshiftoss/caip\n - Import \u003cchainname\u003e native asset from @shapeshiftoss/utils\n - Add case in the switch: case \u003cchainname\u003eChainId: return { assetNamespace: ASSET_NAMESPACE.erc20, category: adapters.chainIdToCoingeckoAssetPlatform(chainId), explorer/explorerAddressLink/explorerTxLink from \u003cchainname\u003e utils }\n - NOTE: chains not on CoinGecko will only have the native asset (no ERC20 token list)\n\nFILE 3 (MODIFY): scripts/generateAssetData/generateAssetData.ts\n - Import: import * as \u003cchainname\u003e from './\u003cchainname\u003e'\n - Call: const \u003cchainname\u003eAssets = await \u003cchainname\u003e.getAssets()\n - Spread into unfilteredAssetData: ...\u003cchainname\u003eAssets\n\nCOMMAND: yarn generate:asset-data\n This regenerates: src/generated/asset-data.json + related-asset-index + manifest + compressed assets\n\n=== DRAFT PR CREATION (final step per chain) ===\n\nAfter all code changes are complete for a chain, open a draft PR using the repo template.\n\nBRANCH NAMING: feat/integrate-\u003cchainname\u003e-relay (e.g. feat/integrate-scroll-relay)\n\nCOMMAND:\n gh pr create --draft --title 'feat: integrate \u003cChainName\u003e (chainId: \u003cid\u003e) via Relay' --body \"$(cat \u003c\u003c'PREOF'\n ## Description\n\n Add \u003cChainName\u003e (chainId: \u003cid\u003e) as a second-class EVM chain in ShapeShift Web with Relay bridge support.\n\n **Changes:**\n - Plugin registration in src/plugins/\u003cchainname\u003e/\n - Feature flag `\u003cChainName\u003e` in preferencesSlice\n - Relay swapper chain mapping in RelaySwapper/constant.ts\n - Asset data generation via CoinGecko (`\u003ccoingecko_platform_id\u003e`)\n - Environment config for RPC URL\n\n **Chain details:**\n - TVL: \u003ctvl\u003e\n - Native token: \u003ctoken\u003e (18 decimals)\n - Architecture: \u003carch_type\u003e\n - RPC: \u003crpc_url\u003e\n - Explorer: \u003cexplorer_url\u003e\n\n ## Issue (if applicable)\n\n Part of #11902\n\n ## Risk\n\n Low risk — new chain behind feature flag (`\u003cChainName\u003e`), no existing functionality affected.\n\n \u003e New chain plugin + Relay bridge mapping. No modifications to existing chain logic.\n\n ## Testing\n\n ### Engineering\n\n 1. Enable feature flag: set `VITE_FEATURE_\u003cCHAINNAME\u003e=true` in .env\n 2. Verify chain appears in supported chains list\n 3. Verify native token balance loads (connect wallet with \u003ctoken\u003e on \u003cChainName\u003e)\n 4. Verify Relay bridge quote works: bridge ETH from Ethereum → \u003cChainName\u003e\n 5. Run `yarn lint --fix \u0026\u0026 yarn type-check` — must pass\n\n ### Operations\n\n - [x] :checkered_flag: My feature is behind a flag and doesn't require operations testing (yet)\n\n ## Screenshots (if applicable)\n\n N/A — chain integration, no UI changes.\n PREOF\n )\"\n\nNOTE: Replace all \u003cplaceholders\u003e with actual chain values from the bead description/notes.\nNOTE: Use --draft flag to create as draft PR.\nNOTE: Branch off develop (main branch is develop, not main).",
"status": "open",
"priority": 0,
"issue_type": "epic",
"owner": "[email protected]",
"created_at": "2026-02-17T10:55:02Z",
"created_by": "NeOMakinG",
"updated_at": "2026-02-17T11:21:27Z",
"external_ref": "gh-11902",
"dependency_type": "parent-child"
}
],
"parent": "ss-dx5"
}
]
3 changes: 2 additions & 1 deletion .claude/contracts/second-class-evm-chain.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ All integration points required when adding a new second-class EVM chain to Shap

7. **Feature Flag** - Multiple files:
- `src/state/slices/preferencesSlice/preferencesSlice.ts` - FeatureFlags type + initial state
- `src/config.ts` - `VITE_FEATURE_<CHAIN>` validation + `VITE_<CHAIN>_NODE_URL` validation
- `src/config.ts` - `VITE_FEATURE_<CHAIN>` validation (`bool({ default: false })`) + `VITE_<CHAIN>_NODE_URL` validation (must use `url()`, NOT `str()`)
- `src/test/mocks/store.ts` - Mock default
- `src/vite-env.d.ts` - Type declarations
- `.env` - Production default (usually `false`)
Expand Down Expand Up @@ -197,6 +197,7 @@ Some chains have an ERC20 contract that represents the native token (e.g., Mantl

40. **Related Asset Index** - `public/generated/relatedAssetIndex.json` + `scripts/generateAssetData/generateRelatedAssetIndex/generateRelatedAssetIndex.ts`
- If the native asset is ETH: verify it's in `manualRelatedAssetIndex[ethAssetId]` array
- **If the native asset is NOT ETH** (e.g., CRO, MNT): research whether the same token exists on Ethereum mainnet as an ERC20 (e.g., CRO has `eip155:1/erc20:0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b`). If it does, add a manual mapping in `manualRelatedAssetIndex` in BOTH `generateRelatedAssetIndex.ts` AND `generateChainRelatedAssetIndex.ts`, linking the Ethereum ERC20 to the chain's native `slip44:60`. Use a research agent to check CoinGecko/block explorer if unsure. Without this, the chain's native token won't show as a "Popular Asset" when filtering by the chain.
- Verify `relatedAssetIndex.json` has been regenerated and contains entries for the new chain's tokens
- Check `generatedAssetData.json` - the chain's ERC20 tokens should have `relatedAssetKey` values linking them to mainnet counterparts
- Without this, tokens won't appear in the trade modal "Popular Assets" section
Expand Down
34 changes: 30 additions & 4 deletions .claude/skills/chain-integration/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -1232,16 +1232,42 @@ export enum CoingeckoAssetPlatform {
}
```

**File**: `packages/caip/src/adapters/coingecko/utils.ts`
**File**: `packages/caip/src/adapters/coingecko/index.ts` (3 touchpoints — enum + 2 switch statements)

Add chain ID to platform mapping in the `chainIdToCoingeckoAssetPlatform` function:
CRITICAL: This file has 3 separate places to update. Missing any causes runtime failures.

Touchpoint 1 — Already shown above: `CoingeckoAssetPlatform` enum entry.

Touchpoint 2 — `chainIdToCoingeckoAssetPlatform()` forward mapping (CHAIN_REFERENCE → platform):
```typescript
// For EVM chains, add to the EVM switch statement
// For EVM chains, add to the EVM switch (inside chainNamespace Evm case)
case CHAIN_REFERENCE.[ChainName]Mainnet:
return CoingeckoAssetPlatform.[ChainName]
```

Touchpoint 3 — `coingeckoAssetPlatformToChainId()` reverse mapping (platform → chainId):
```typescript
case CoingeckoAssetPlatform.[ChainName]:
return [chainLower]ChainId
```
NOTE: This reverse mapping requires importing `[chainLower]ChainId` from `../../constants`. Only import what is used — `chainIdToCoingeckoAssetPlatform` uses `CHAIN_REFERENCE` not chainId constants.

**File**: `packages/caip/src/adapters/coingecko/utils.ts` (2 touchpoints)

// For non-EVM chains, add separate case in outer switch
Touchpoint 4 — Add chainId to `buildByChainId` loop in `COINGECKO_ASSET_PLATFORM_TO_CHAIN_ID_MAP` (~line 280-310):
```typescript
// Import chainId + assetId from constants at top of file
import { [chainLower]AssetId, [chainLower]ChainId, ... } from '../../constants'

// Add to the switch/if chain inside the buildByChainId loop
prev[[chainLower]ChainId][assetId] = id
```

Touchpoint 5 — Add native asset to `COINGECKO_NATIVE_ASSET_PLATFORM_TO_CHAIN_ID_MAP` (~line 370-390):
```typescript
[[chainLower]ChainId]: { [[chainLower]AssetId]: '[coingecko-native-coin-id]' },
// e.g., for Cronos: [cronosChainId]: { [cronosAssetId]: 'crypto-com-chain' }
// e.g., for ETH-native chains: [scrollChainId]: { [scrollAssetId]: 'ethereum' }
```

**File**: `packages/caip/src/adapters/coingecko/utils.test.ts`
Expand Down
2 changes: 2 additions & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,7 @@ VITE_MONAD_NODE_URL=https://rpc.monad.xyz
VITE_PLASMA_NODE_URL=https://rpc.plasma.to
VITE_MANTLE_NODE_URL=https://rpc.mantle.xyz
VITE_INK_NODE_URL=https://ink.drpc.org
VITE_CRONOS_NODE_URL=https://cronos.drpc.org
VITE_MEGAETH_NODE_URL=https://mainnet.megaeth.com/rpc
VITE_LINEA_NODE_URL=https://rpc.linea.build
VITE_SCROLL_NODE_URL=https://rpc.scroll.io/
Expand Down Expand Up @@ -307,6 +308,7 @@ VITE_HYPEREVM_NODE_URL=https://rpc.hyperliquid.xyz/evm
VITE_FEATURE_HYPEREVM=true
VITE_FEATURE_MANTLE=false
VITE_FEATURE_INK=false
VITE_FEATURE_CRONOS=false
VITE_FEATURE_MEGAETH=false
VITE_FEATURE_LINEA=false
VITE_BERACHAIN_NODE_URL=https://rpc.berachain.com
Expand Down
2 changes: 2 additions & 0 deletions .env.development
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ VITE_KATANA_NODE_URL=https://rpc.katana.network
VITE_HYPEREVM_NODE_URL=https://rpc.hyperliquid.xyz/evm
VITE_MANTLE_NODE_URL=https://rpc.mantle.xyz
VITE_INK_NODE_URL=https://ink.drpc.org
VITE_CRONOS_NODE_URL=https://cronos.drpc.org
VITE_MEGAETH_NODE_URL=https://mainnet.megaeth.com/rpc
VITE_LINEA_NODE_URL=https://rpc.linea.build
VITE_BERACHAIN_NODE_URL=https://rpc.berachain.com
Expand Down Expand Up @@ -101,6 +102,7 @@ VITE_FEATURE_WC_DIRECT_CONNECTION=true
VITE_FEATURE_CETUS_SWAP=true
VITE_FEATURE_MANTLE=true
VITE_FEATURE_INK=true
VITE_FEATURE_CRONOS=true
VITE_FEATURE_MEGAETH=true
VITE_FEATURE_LINEA=true
VITE_FEATURE_BERACHAIN=true
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
# Local issue tracking
.beads/

# Claude Code ephemeral plans
.claude/plan.md
.claude/plans/

# no zero installs
.pnp.*
.yarn/*
Expand Down
40 changes: 40 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Agent Instructions

This project uses **bd** (beads) for issue tracking. Run `bd onboard` to get started.

## Quick Reference

```bash
bd ready # Find available work
bd show <id> # View issue details
bd update <id> --status in_progress # Claim work
bd close <id> # Complete work
bd sync # Sync with git
```

## Landing the Plane (Session Completion)

**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds.

**MANDATORY WORKFLOW:**

1. **File issues for remaining work** - Create issues for anything that needs follow-up
2. **Run quality gates** (if code changed) - Tests, linters, builds
3. **Update issue status** - Close finished work, update in-progress items
4. **PUSH TO REMOTE** - This is MANDATORY:
```bash
git pull --rebase
bd sync
git push
git status # MUST show "up to date with origin"
```
5. **Clean up** - Clear stashes, prune remote branches
6. **Verify** - All changes committed AND pushed
7. **Hand off** - Provide context for next session

**CRITICAL RULES:**
- Work is NOT complete until `git push` succeeds
- NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds

1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
### Git & Version Control
- Never commit changes unless explicitly requested
- When creating commits, follow the Git Safety Protocol (see session notes)
- **Before pushing**: always run `yarn lint --fix`, and if there are lint fixes, commit them before pushing. Never push without verifying lint passes first.
- Main branch is `develop` - use this for PRs
- Branch naming: Use descriptive names (e.g., `feat_gridplus`, `fix_wallet_connect`)
- When opening PRs (via `gh`, Aviator `av`, or any CLI tool), ALWAYS use the `.github/PULL_REQUEST_TEMPLATE.md` template as the base for the PR body
Expand Down
10 changes: 10 additions & 0 deletions headers/csps/chains/cronos.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { loadEnv } from 'vite'

import type { Csp } from '../../types'

const mode = process.env.MODE ?? process.env.NODE_ENV ?? 'development'
const env = loadEnv(mode, process.cwd(), '')

export const csp: Csp = {
'connect-src': [env.VITE_CRONOS_NODE_URL],
}
2 changes: 2 additions & 0 deletions headers/csps/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { csp as bitcoin } from './chains/bitcoin'
import { csp as bitcoincash } from './chains/bitcoincash'
import { csp as bnbsmartchain } from './chains/bnbsmartchain'
import { csp as cosmos } from './chains/cosmos'
import { csp as cronos } from './chains/cronos'
import { csp as dogecoin } from './chains/dogecoin'
import { csp as ethereum } from './chains/ethereum'
import { csp as gnosis } from './chains/gnosis'
Expand Down Expand Up @@ -122,6 +123,7 @@ export const csps = [
berachain,
hyperevm,
ink,
cronos,
katana,
linea,
litecoin,
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
"test:packages": "yarn vitest run -c vitest-packages.config.mts",
"translations:count-words-invalidate-since": "yarn tsx ./scripts/translations/countWordsInvalidateSince.ts",
"translations:update-path": "yarn tsx ./scripts/translations/updateTranslationPath.ts",
"type-check": "yarn tsc --noEmit",
"type-check": "NODE_OPTIONS=--max-old-space-size=8192 yarn tsc --noEmit",
"type-check-watch": "yarn tsc --noEmit --watch"
},
"browserslist": {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"eip155:25/slip44:60":"crypto-com-chain"}
2 changes: 2 additions & 0 deletions packages/caip/src/adapters/coingecko/generated/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import mantle from "./eip155_5000/adapter.json";
import berachain from "./eip155_80094/adapter.json";
import ink from "./eip155_57073/adapter.json";
import scroll from "./eip155_534352/adapter.json";
import cronos from "./eip155_25/adapter.json";
import cosmos from "./cosmos_cosmoshub-4/adapter.json";
import thorchain from "./cosmos_thorchain-1/adapter.json";
import mayachain from "./cosmos_mayachain-mainnet-v1/adapter.json";
Expand Down Expand Up @@ -54,6 +55,7 @@ export {
berachain,
ink,
scroll,
cronos,
cosmos,
thorchain,
mayachain,
Expand Down
6 changes: 6 additions & 0 deletions packages/caip/src/adapters/coingecko/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
CHAIN_NAMESPACE,
CHAIN_REFERENCE,
cosmosChainId,
cronosChainId,
ethChainId,
gnosisChainId,
hyperEvmChainId,
Expand Down Expand Up @@ -62,6 +63,7 @@ export enum CoingeckoAssetPlatform {
MegaEth = 'megaeth',
Berachain = 'berachain',
Scroll = 'scroll',
Cronos = 'cronos',
Solana = 'solana',
Starknet = 'starknet',
Tron = 'tron',
Expand Down Expand Up @@ -134,6 +136,8 @@ export const chainIdToCoingeckoAssetPlatform = (chainId: ChainId): string => {
return CoingeckoAssetPlatform.Ink
case CHAIN_REFERENCE.ScrollMainnet:
return CoingeckoAssetPlatform.Scroll
case CHAIN_REFERENCE.CronosMainnet:
return CoingeckoAssetPlatform.Cronos
default:
throw new Error(
`chainNamespace ${chainNamespace}, chainReference ${chainReference} not supported.`,
Expand Down Expand Up @@ -253,6 +257,8 @@ export const coingeckoAssetPlatformToChainId = (
return inkChainId
case CoingeckoAssetPlatform.Scroll:
return scrollChainId
case CoingeckoAssetPlatform.Cronos:
return cronosChainId
case CoingeckoAssetPlatform.Cosmos:
return cosmosChainId
case CoingeckoAssetPlatform.Thorchain:
Expand Down
Loading
Loading