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

/** SP Parameters */
const StabilityPoolParamsSchema = Data.Object({
  assetSymbol: Data.Bytes(),
  stabilityPoolToken: AssetClassSchema,
  snapshotEpochToScaleToSumToken: AssetClassSchema,
  accountToken: AssetClassSchema,
  cdpToken: AssetClassSchema,
  iAssetAuthToken: AssetClassSchema,
  versionRecordToken: AssetClassSchema,
  iassetValHash: Data.Bytes(),
  accountCreateFeeLovelaces: Data.Integer(),
  accountProcessingCooldownMs: Data.Integer(),
  accountProcessingBiasMs: Data.Integer(),
  stakeCredential: Data.Nullable(StakeCredentialSchema),
});
export type StabilityPoolParams = Data.Static<typeof StabilityPoolParamsSchema>;
export const StabilityPoolParams =
  StabilityPoolParamsSchema as unknown as StabilityPoolParams;

export function castStabilityPoolParams(params: StabilityPoolParams): Data {
  return Data.castTo(params, StabilityPoolParams);
}
