"use client";

import {
  defaultSwapsFormValues,
  swapsTransactionFormSchema,
  type SwapsFormValues,
} from "@/components/form/schemas/swaps-transaction-schema";

import {
  CurrencyPairTransactionForm,
  type CurrencyPairFormCopy,
  type LoadCurrencyPairFormOptionsClient,
} from "./currency-pair-transaction-form";

const SWAPS_COPY: CurrencyPairFormCopy = {
  sectionTitle: "Swap details",
  sectionDescription: "Placement date, currencies, rate, and maturity.",
  rateLabel: "Rate of Swap",
  amountLabel: "Amount (Currency Swapped)",
};

type SwapsTransactionFormProps = {
  formId: string;
  initialValues?: SwapsFormValues;
  onSubmit?: (values: SwapsFormValues) => void;
  loadFormOptions: LoadCurrencyPairFormOptionsClient;
};

export function SwapsTransactionForm({
  formId,
  initialValues,
  onSubmit,
  loadFormOptions,
}: SwapsTransactionFormProps) {
  return (
    <CurrencyPairTransactionForm
      formId={formId}
      initialValues={initialValues}
      onSubmit={onSubmit ? (values) => onSubmit(values as SwapsFormValues) : undefined}
      loadFormOptions={loadFormOptions}
      schema={swapsTransactionFormSchema}
      defaultValues={defaultSwapsFormValues}
      copy={SWAPS_COPY}
      showMaturityDate
    />
  );
}
