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

const ExecuteParamsSchema = Data.Object({
  govNFT: AssetClassSchema,
  upgradeToken: AssetClassSchema,
  iAssetToken: AssetClassSchema,
  collateralAssetToken: AssetClassSchema,
  stabilityPoolToken: AssetClassSchema,
  cdpCreatorToken: AssetClassSchema,
  cdpToken: AssetClassSchema,
  versionRecordToken: AssetClassSchema,
  iassetValHash: Data.Bytes(),
  cdpValHash: Data.Bytes(),
  sPoolValHash: Data.Bytes(),
  versionRegistryValHash: Data.Bytes(),
  treasuryValHash: Data.Bytes(),
});
export type ExecuteParams = Data.Static<typeof ExecuteParamsSchema>;
export const ExecuteParams = ExecuteParamsSchema as unknown as ExecuteParams;

export function castExecuteParams(params: ExecuteParams): Data {
  return Data.castTo(params, ExecuteParams);
}
