import type { ContractMeta, MergeContractMeta } from "./types.js";

export function mergeContractMeta<
  TCurrent extends ContractMeta,
  TNext extends ContractMeta,
>(current: TCurrent, next: TNext): MergeContractMeta<TCurrent, TNext> {
  const metadata: ContractMeta = {
    ...current,
    ...next,
  };

  if (next.openapi !== undefined) {
    metadata.openapi = {
      ...current.openapi,
      ...next.openapi,
    };
  }

  return metadata as MergeContractMeta<TCurrent, TNext>;
}
