import { type CloudProvider } from 'dbaas/features/Project'

import { PremiumCreateAzurePrivateEndpointForm } from '../../../networking/private-endpoint-azure/CreateAzurePrivateEndpointForm'
import { PremiumCreateAliPrivateEndpointForm } from '../../../networking/shared/private-endpoint-ali/CreateAliPrivateEndpointForm'
import { PremiumCreateAwsPrivateEndpointForm } from '../../../networking/shared/private-endpoint-aws/CreateAwsPrivateEndpointForm'

interface PrivateEndpointInitProps {
  tidbId: string
  cloudProvider: CloudProvider
  regionId: string
  onCancel: () => void
  onBack: () => void
  onConfirm: () => void
}

export const PrivateEndpointInit = ({
  tidbId,
  cloudProvider,
  regionId,
  onConfirm,
  ...restProps
}: PrivateEndpointInitProps) => {
  if (cloudProvider === 'aws') {
    return (
      <PremiumCreateAwsPrivateEndpointForm tidbId={tidbId} regionId={regionId} onFinish={onConfirm} {...restProps} />
    )
  } else if (cloudProvider === 'alicloud') {
    return (
      <PremiumCreateAliPrivateEndpointForm tidbId={tidbId} regionId={regionId} onFinish={onConfirm} {...restProps} />
    )
  } else if (cloudProvider === 'azure') {
    return (
      <PremiumCreateAzurePrivateEndpointForm tidbId={tidbId} regionId={regionId} onFinish={onConfirm} {...restProps} />
    )
  }

  return null
}
