import { string } from '@/lib/yup'
import { galoyBlinkDashboardUrl } from '@/wallets/blink/common'

export const name = 'blink'
export const walletType = 'BLINK'
export const walletField = 'walletBlink'

export const fields = [
  {
    name: 'apiKey',
    label: 'api key',
    type: 'password',
    placeholder: 'blink_...',
    clientOnly: true,
    validate: string()
      .matches(/^blink_[A-Za-z0-9]+$/, { message: 'must match pattern blink_A-Za-z0-9' }),
    help: `you can get an API key from [Blink Dashboard](${galoyBlinkDashboardUrl}).\nPlease make sure to select ONLY the 'Read' and 'Write' scopes when generating this API key.`,
    requiredWithout: 'apiKeyRecv',
    optional: 'for sending'
  },
  {
    name: 'currency',
    label: 'wallet type',
    type: 'text',
    help: 'the blink wallet to use for sending (BTC or USD for stablesats)',
    placeholder: 'BTC',
    defaultValue: 'BTC',
    clear: true,
    autoComplete: 'off',
    clientOnly: true,
    validate: string()
      .transform(value => value ? value.toUpperCase() : 'BTC')
      .oneOf(['USD', 'BTC'], 'must be BTC or USD'),
    optional: 'for sending',
    requiredWithout: 'currencyRecv'
  },
  {
    name: 'apiKeyRecv',
    label: 'receive api key',
    type: 'password',
    help: `you can get an API key from [Blink Dashboard](${galoyBlinkDashboardUrl}).\nPlease make sure to select ONLY the 'Read' and 'Receive' scopes when generating this API key.`,
    placeholder: 'blink_...',
    serverOnly: true,
    validate: string()
      .matches(/^blink_[A-Za-z0-9]+$/, { message: 'must match pattern blink_A-Za-z0-9' }),
    optional: 'for receiving',
    requiredWithout: 'apiKey'
  },
  {
    name: 'currencyRecv',
    label: 'receive wallet type',
    type: 'text',
    help: 'the blink wallet to use for receiving (only BTC available)',
    defaultValue: 'BTC',
    clear: true,
    autoComplete: 'off',
    placeholder: 'BTC',
    serverOnly: true,
    validate: string()
      .transform(value => value ? value.toUpperCase() : 'BTC')
      .oneOf(['BTC'], 'must be BTC'),
    optional: 'for receiving',
    requiredWithout: 'currency'
  }
]

export const card = {
  title: 'Blink',
  subtitle: 'use [Blink](https://blink.sv/) for payments',
  image: { src: '/wallets/blink.svg' }
}