import { TSchema, Data } from '@evolution-sdk/evolution';
import { OnChainDecimalSchema } from '../../types/on-chain-decimal';

export const InterestOracleDatumSchema = TSchema.Struct({
  unitaryInterest: TSchema.Integer,
  interestRate: OnChainDecimalSchema,
  lastUpdated: TSchema.Integer,
});
export type InterestOracleDatum = typeof InterestOracleDatumSchema.Type;

const InterestOracleRedeemerSchema = TSchema.Struct({
  newInterestRate: OnChainDecimalSchema,
  currentTime: TSchema.Integer,
});

export type InterestOracleRedeemer = typeof InterestOracleRedeemerSchema.Type;

export function serialiseFeedInterestOracleRedeemer(
  redeemer: InterestOracleRedeemer,
): string {
  return Data.withSchema(InterestOracleRedeemerSchema).toCBORHex(redeemer);
}

export function parseInterestOracleDatum(datum: string): InterestOracleDatum {
  return Data.withSchema(InterestOracleDatumSchema).fromCBORHex(datum);
}

export function serialiseInterestOracleDatum(
  datum: InterestOracleDatum,
): string {
  return Data.withSchema(InterestOracleDatumSchema).toCBORHex(datum);
}
