import { applyParamsToScript, SpendingValidator } from '@lucid-evolution/lucid';
import { castRobParams, RobParams } from './types';
import {
  fromSystemParamsAssetLucid,
  RobParamsSP,
} from '../../types/system-params';
import { _robValidator } from '../../validators/rob-validator';

export const mkRobValidator = (params: RobParams): SpendingValidator => {
  return {
    type: 'PlutusV3',
    script: applyParamsToScript(_robValidator.cborHex, [castRobParams(params)]),
  };
};

export const mkRobValidatorFromSP = (
  params: RobParamsSP,
): SpendingValidator => {
  return {
    type: 'PlutusV3',
    script: applyParamsToScript(_robValidator.cborHex, [
      castRobParams({
        versionRecordToken: fromSystemParamsAssetLucid(
          params.versionRecordToken,
        ),
        iassetValHash: params.iassetValHash,
        iassetAuthToken: fromSystemParamsAssetLucid(params.iassetAuthToken),
        collateralAssetAuthToken: fromSystemParamsAssetLucid(
          params.collateralAssetAuthToken,
        ),
        iassetPolicyId: params.iassetPolicyId.unCurrencySymbol,
      }),
    ]),
  };
};
