|
| 1 | +// Test configuration constants |
| 2 | +export const TEST_CONFIG = { |
| 3 | + // Network configuration |
| 4 | + RPC_URL: process.env.TEST_RPC_URL || 'http://127.0.0.1:8545', |
| 5 | + CHAIN_ID: process.env.TEST_CHAIN_ID ? parseInt(process.env.TEST_CHAIN_ID) : 31337, |
| 6 | + |
| 7 | + // Test accounts from Anvil/Hardhat default test mnemonic: |
| 8 | + // "test test test test test test test test test test test junk" |
| 9 | + // These addresses are deterministically generated and have public private keys |
| 10 | + ACCOUNTS: { |
| 11 | + DEPLOYER: { |
| 12 | + address: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266' as const, // Account #0 |
| 13 | + privateKey: '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' as const, |
| 14 | + }, |
| 15 | + USER: { |
| 16 | + address: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8' as const, // Account #1 |
| 17 | + privateKey: '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' as const, |
| 18 | + }, |
| 19 | + TEE_WORKER: { |
| 20 | + address: '0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC' as const, // Account #2 |
| 21 | + privateKey: '0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a' as const, |
| 22 | + }, |
| 23 | + }, |
| 24 | + |
| 25 | + // Contract addresses - these are deployed by local-deploy.sh |
| 26 | + CONTRACTS: { |
| 27 | + ENTRY_POINT: process.env.TEST_ENTRY_POINT_ADDRESS || '0x5FbDB2315678afecb367f032d93F642f64180aa3', |
| 28 | + OMNI_ACCOUNT_FACTORY: process.env.TEST_FACTORY_ADDRESS || '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', |
| 29 | + SIMPLE_PAYMASTER: process.env.TEST_PAYMASTER_ADDRESS || '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', |
| 30 | + TEST_USDC: process.env.TEST_USDC_ADDRESS || '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', |
| 31 | + TEST_USDT: process.env.TEST_USDT_ADDRESS || '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', |
| 32 | + }, |
| 33 | + |
| 34 | + // TEE Worker RPC configuration |
| 35 | + TEE_WORKER: { |
| 36 | + RPC_URL: process.env.TEE_WORKER_RPC_URL || 'http://localhost:2100', |
| 37 | + CLIENT_ID: 'wildmeta' as const, |
| 38 | + CHAIN_TYPE: 'Evm' as const, |
| 39 | + SIGNER_INDEX: 0, |
| 40 | + }, |
| 41 | + |
| 42 | + // Gas configuration for UserOperations |
| 43 | + GAS_CONFIG: { |
| 44 | + CALL_GAS_LIMIT: BigInt(2000000), |
| 45 | + VERIFICATION_GAS_LIMIT: BigInt(3000000), |
| 46 | + PRE_VERIFICATION_GAS: BigInt(100000), |
| 47 | + MAX_FEE_PER_GAS: BigInt(20000000000), // 20 gwei |
| 48 | + MAX_PRIORITY_FEE_PER_GAS: BigInt(1000000000), // 1 gwei |
| 49 | + }, |
| 50 | + |
| 51 | + // Token amounts |
| 52 | + AMOUNTS: { |
| 53 | + FUNDING_ETH: '1', // ETH amount to fund OmniAccount |
| 54 | + MINT_TOKENS: '1000', // Amount of test tokens to mint |
| 55 | + TRANSFER_TOKENS: '500', // Amount to transfer to OmniAccount |
| 56 | + SEND_TOKENS: '100', // Amount to send in test transaction |
| 57 | + }, |
| 58 | + |
| 59 | + // UserOp signer types |
| 60 | + SIGNER_TYPES: { |
| 61 | + OWNER: 0x00, |
| 62 | + ROOT_KEY: 0x01, |
| 63 | + SESSION_KEY: 0x02, |
| 64 | + PASSKEY: 0x03, |
| 65 | + } as const, |
| 66 | + |
| 67 | + // Test timeouts |
| 68 | + TIMEOUTS: { |
| 69 | + DEFAULT: 120000, // 2 minutes |
| 70 | + TRANSACTION: 30000, // 30 seconds |
| 71 | + }, |
| 72 | +} as const; |
| 73 | + |
| 74 | +// Utility type for contract addresses |
| 75 | +export type ContractAddress = `0x${string}`; |
| 76 | + |
| 77 | +// Environment validation |
| 78 | +export function validateTestEnvironment() { |
| 79 | + const requiredEnvVars = ['TEST_RPC_URL', 'TEST_ENTRY_POINT_ADDRESS', 'TEST_FACTORY_ADDRESS']; |
| 80 | + |
| 81 | + const missing = requiredEnvVars.filter((envVar) => envVar.startsWith('TEST_') && !process.env[envVar]); |
| 82 | + |
| 83 | + if (missing.length > 0) { |
| 84 | + console.warn('⚠️ Missing environment variables (using defaults):', missing.join(', ')); |
| 85 | + console.warn(' Set these variables or run local-deploy.sh to deploy contracts'); |
| 86 | + } |
| 87 | + |
| 88 | + return { |
| 89 | + rpcUrl: TEST_CONFIG.RPC_URL, |
| 90 | + chainId: TEST_CONFIG.CHAIN_ID, |
| 91 | + contracts: TEST_CONFIG.CONTRACTS, |
| 92 | + }; |
| 93 | +} |
0 commit comments