import { Data } from '@lucid-evolution/lucid';
import { AssetClassSchema } from '../../types/generic';

const CDPCreatorParamsSchema = Data.Object({
  cdpCreatorNft: AssetClassSchema,
  cdpAssetCs: Data.Bytes(),
  cdpAuthTk: AssetClassSchema,
  iAssetAuthTk: AssetClassSchema,
  collateralAssetAuthTk: AssetClassSchema,
  upgradeToken: AssetClassSchema,
  versionRecordToken: AssetClassSchema,
  cdpScriptHash: Data.Bytes(),
  treasuryValHash: Data.Bytes(),
  iassetValHash: Data.Bytes(),
  biasTime: Data.Integer(),
});

export type CDPCreatorParams = Data.Static<typeof CDPCreatorParamsSchema>;
export const CDPCreatorParams =
  CDPCreatorParamsSchema as unknown as CDPCreatorParams;

export function castCDPCreatorParams(params: CDPCreatorParams): Data {
  return Data.castTo(params, CDPCreatorParams);
}
