import { RhoSDKConfig, RhoSDKParams } from './sdk-typings'

export const MainnetConfig: RhoSDKConfig = {
  routerAddress: '0xbEF0110560921824AF49dE900f2f0bF9ceb87E8C',
  viewAddress: '0xdcb233560Ef093eBf7be820eE6de1dF8c9f86586',
  quoterAddress: '0x1e50242e9c5fB0b1E6B9DaF9676793D284D5AaCa',
  rpcUrl: 'https://arb1.arbitrum.io/rpc',
  oracleServiceUrl: ['https://v2.roaracle.app'],
}

export const TestnetConfig: RhoSDKConfig = {
  routerAddress: '0x8a471EFaCBAb12d208591563137d36bC3bFF1B11',
  viewAddress: '0x794589eb6b036314dB3ab18e73dEA13ba71f1739',
  quoterAddress: '0x7c67afB326BfE712b1B3EC06E555CDAf64Cc001b',
  rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc',
  oracleServiceUrl: ['https://testnet-v2.roaracle.app'],
}

export const DevnetConfig: RhoSDKConfig = {
  routerAddress: '0xd1C8cf53af805658BA0973fe48C5B71D54FB099E',
  viewAddress: '0xe5FCccE16D38B3D11Eaa3B8186B5Eb771dCD95C3',
  quoterAddress: '0xAe02aa198718c26e83a61bbE09BCC2ba34E4Ef5a',
  rpcUrl: 'https://sepolia-rollup.arbitrum.io/rpc',
  oracleServiceUrl: ['https://v2.roaracle.dev'],
}

export const parseConfig = (params: RhoSDKParams = {}): RhoSDKConfig => {
  const { network = 'mainnet' } = params

  let baseConfig = {}

  if(network === 'mainnet') {
    baseConfig = MainnetConfig
  } else if (network === 'testnet') {
    baseConfig = TestnetConfig
  } else if(network === 'devnet') {
    baseConfig = DevnetConfig
  } else if(network === 'custom') {
    baseConfig = {...params}
  }

  return <RhoSDKConfig>{
    ...baseConfig,
    ...params,
  }
}
