UNPKG

@indigo-labs/indigo-sdk

Version:

Indigo SDK for interacting with Indigo endpoints via lucid-evolution

51 lines (40 loc) 1.4 kB
import { TSchema, Data } from '@evolution-sdk/evolution'; import { Schema } from 'effect'; import { RationalSchema } from '../../types/rational'; const OpaqueData = Schema.typeSchema(Data.DataSchema); export const OracleIdxSchema = TSchema.Union( TSchema.Struct( { OracleRefInputIdx: TSchema.Integer, }, { flatInUnion: true }, ), TSchema.Struct( { OracleOutputIdx: TSchema.Integer, }, { flatInUnion: true }, ), TSchema.Literal('OracleVoid', { flatInUnion: true }), ); export type OracleIdx = typeof OracleIdxSchema.Type; const PriceOracleDatumSchema = TSchema.Struct({ price: RationalSchema, expirationTime: TSchema.Integer, auxiliaryData: OpaqueData, }); export type PriceOracleDatum = typeof PriceOracleDatumSchema.Type; const PriceOracleRedeemerSchema = TSchema.Struct({ currentTime: TSchema.Integer, newPrice: RationalSchema, }); export type PriceOracleRedeemer = typeof PriceOracleRedeemerSchema.Type; export function serialisePriceOracleRedeemer(r: PriceOracleRedeemer): string { return Data.withSchema(PriceOracleRedeemerSchema).toCBORHex(r); } export function serialisePriceOracleDatum(d: PriceOracleDatum): string { return Data.withSchema(PriceOracleDatumSchema).toCBORHex(d); } export function parsePriceOracleDatum(datum: string): PriceOracleDatum { return Data.withSchema(PriceOracleDatumSchema).fromCBORHex(datum); }