Atlas Config - TypeScript
TypeScript package that provides chain configurations for Atlas Protocol smart contracts. This package is part of the Atlas Protocol suite and is designed to work seamlessly with the Atlas SDK.
Installation
npm install @fastlane-labs/atlas-config
pnpm add @fastlane-labs/atlas-config
yarn add @fastlane-labs/atlas-config
Usage
Basic Usage
import { getChainConfig } from '@fastlane-labs/atlas-config';
const sepoliaConfig = getChainConfig(11155111);
console.log(sepoliaConfig.contracts.atlas);
console.log(sepoliaConfig.eip712Domain);
Getting Supported Chain IDs
import { getSupportedChainIds } from '@fastlane-labs/atlas-config';
const chainIds = getSupportedChainIds();
console.log("Supported chain IDs:", chainIds);
Getting All Chain Configs
import { getAllChainConfigs } from '@fastlane-labs/atlas-config';
const allConfigs = getAllChainConfigs();
console.log("All chain configs:", allConfigs.map(config => ({
chainId: config.chainId,
name: config.config.eip712Domain.name
})));
Merging Custom Configurations
You can merge your own configurations with the default ones. This is useful for testing or using custom contract deployments.
import { mergeChainConfigs } from '@fastlane-labs/atlas-config';
const partialUpdate = {
'11155111': {
'1.0': {
contracts: {
atlas: { address: '0x1234567890123456789012345678901234567890' }
}
}
}
};
const newChainConfig = {
'999999': {
'1.0': {
contracts: {
atlas: { address: '0x0987654321098765432109876543210987654321' },
atlasVerification: { address: '0x0987654321098765432109876543210987654321' },
sorter: { address: '0x0987654321098765432109876543210987654321' },
simulator: { address: '0x0987654321098765432109876543210987654321' },
multicall3: { address: '0x0987654321098765432109876543210987654321' }
},
eip712Domain: {
name: 'New Test Chain',
version: '1.0',
chainId: 999999,
verifyingContract: '0x1111111111111111111111111111111111111111'
}
}
}
};
try {
const mergedConfigs = mergeChainConfigs({
...partialUpdate,
...newChainConfig
});
console.log("Updated Sepolia config:", mergedConfigs['11155111']);
console.log("New chain config:", mergedConfigs['999999']);
} catch (error) {
console.error("Error merging configs:", error);
}
Integration with Atlas SDK
The package is designed to work seamlessly with the Atlas SDK:
import { getChainConfig } from '@fastlane-labs/atlas-config';
import { OperationBuilder } from '@fastlane-labs/atlas-sdk';
OperationBuilder.newSolverOperation({
from: "0x...",
to: "0x...",
value: BigInt(0),
gas: BigInt(0),
maxFeePerGas: BigInt(0),
deadline: BigInt(0),
solver: "0x...",
control: "0x...",
userOpHash: "0x...",
bidToken: "0x...",
bidAmount: BigInt(10000000000000000),
data: "0x...",
signature: "0x..."
});
Configuration Types
Contract Configuration
type ContractConfig = {
atlas: string;
atlasVerification: string;
sorter: string;
simulator: string;
multicall3: string;
};
EIP-712 Domain Configuration
type EIP712Domain = {
name: string;
version: string;
chainId: number;
verifyingContract: string;
};
Version Configuration
type VersionConfig = {
contracts: ContractConfig;
eip712Domain: EIP712Domain;
};
Error Handling
The package includes proper error handling for common scenarios:
try {
const config = getChainConfig(999999);
} catch (error) {
console.error("Chain not supported:", error);
}
try {
const config = getChainConfig(11155111, '9.9');
} catch (error) {
console.error("Version not found:", error);
}
try {
const incompleteConfig = {
'888888': {
'1.0': {
contracts: {
atlas: { address: '0x1234567890123456789012345678901234567890' }
}
}
}
};
mergeChainConfigs(incompleteConfig);
} catch (error) {
console.error("Expected error:", error);
}
Development
To contribute to this package:
- Clone the repository
- Install dependencies:
pnpm install
- Run tests:
pnpm test
- Build:
pnpm build
License
MIT License - see the LICENSE file for details.