/** * This code was AUTOGENERATED using the Codama library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun Codama to update it. * * @see https://github.com/codama-idl/codama */ import { addDecoderSizePrefix, addEncoderSizePrefix, combineCodec, fixDecoderSize, fixEncoderSize, getBytesDecoder, getBytesEncoder, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getOptionDecoder, getOptionEncoder, getStructDecoder, getStructEncoder, getTupleDecoder, getTupleEncoder, getU16Decoder, getU16Encoder, getU32Decoder, getU32Encoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, getUnitDecoder, getUnitEncoder, getUtf8Decoder, getUtf8Encoder, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, type Option, type OptionOrNullable, type ReadonlyUint8Array, } from "@solana/kit"; import { getOracleTypeDecoder, getOracleTypeEncoder, type OracleType, type OracleTypeArgs, } from "."; export type UpdateOracleMappingAndMetadataEntry = | { __kind: "RemoveEntry" } | { __kind: "MappingConfig"; priceType: OracleType; genericData: ReadonlyUint8Array; } | { __kind: "MappingTwapEntry"; priceType: OracleType; twapSource: number } | { __kind: "MappingTwapEnabledBitmask"; fields: readonly [number] } | { __kind: "MappingRefPrice"; refPriceIndex: Option; refPriceToleranceBps: Option; } | { __kind: "MetadataName"; fields: readonly [string] } | { __kind: "MetadataMaxPriceAgeSlots"; fields: readonly [bigint] } | { __kind: "MetadataGroupIdsBitset"; fields: readonly [bigint] }; export type UpdateOracleMappingAndMetadataEntryArgs = | { __kind: "RemoveEntry" } | { __kind: "MappingConfig"; priceType: OracleTypeArgs; genericData: ReadonlyUint8Array; } | { __kind: "MappingTwapEntry"; priceType: OracleTypeArgs; twapSource: number; } | { __kind: "MappingTwapEnabledBitmask"; fields: readonly [number] } | { __kind: "MappingRefPrice"; refPriceIndex: OptionOrNullable; refPriceToleranceBps: OptionOrNullable; } | { __kind: "MetadataName"; fields: readonly [string] } | { __kind: "MetadataMaxPriceAgeSlots"; fields: readonly [number | bigint] } | { __kind: "MetadataGroupIdsBitset"; fields: readonly [number | bigint] }; export function getUpdateOracleMappingAndMetadataEntryEncoder(): Encoder { return getDiscriminatedUnionEncoder([ ["RemoveEntry", getUnitEncoder()], [ "MappingConfig", getStructEncoder([ ["priceType", getOracleTypeEncoder()], ["genericData", fixEncoderSize(getBytesEncoder(), 20)], ]), ], [ "MappingTwapEntry", getStructEncoder([ ["priceType", getOracleTypeEncoder()], ["twapSource", getU16Encoder()], ]), ], [ "MappingTwapEnabledBitmask", getStructEncoder([["fields", getTupleEncoder([getU8Encoder()])]]), ], [ "MappingRefPrice", getStructEncoder([ ["refPriceIndex", getOptionEncoder(getU16Encoder())], ["refPriceToleranceBps", getOptionEncoder(getU16Encoder())], ]), ], [ "MetadataName", getStructEncoder([ [ "fields", getTupleEncoder([ addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()), ]), ], ]), ], [ "MetadataMaxPriceAgeSlots", getStructEncoder([["fields", getTupleEncoder([getU64Encoder()])]]), ], [ "MetadataGroupIdsBitset", getStructEncoder([["fields", getTupleEncoder([getU64Encoder()])]]), ], ]); } export function getUpdateOracleMappingAndMetadataEntryDecoder(): Decoder { return getDiscriminatedUnionDecoder([ ["RemoveEntry", getUnitDecoder()], [ "MappingConfig", getStructDecoder([ ["priceType", getOracleTypeDecoder()], ["genericData", fixDecoderSize(getBytesDecoder(), 20)], ]), ], [ "MappingTwapEntry", getStructDecoder([ ["priceType", getOracleTypeDecoder()], ["twapSource", getU16Decoder()], ]), ], [ "MappingTwapEnabledBitmask", getStructDecoder([["fields", getTupleDecoder([getU8Decoder()])]]), ], [ "MappingRefPrice", getStructDecoder([ ["refPriceIndex", getOptionDecoder(getU16Decoder())], ["refPriceToleranceBps", getOptionDecoder(getU16Decoder())], ]), ], [ "MetadataName", getStructDecoder([ [ "fields", getTupleDecoder([ addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder()), ]), ], ]), ], [ "MetadataMaxPriceAgeSlots", getStructDecoder([["fields", getTupleDecoder([getU64Decoder()])]]), ], [ "MetadataGroupIdsBitset", getStructDecoder([["fields", getTupleDecoder([getU64Decoder()])]]), ], ]); } export function getUpdateOracleMappingAndMetadataEntryCodec(): Codec< UpdateOracleMappingAndMetadataEntryArgs, UpdateOracleMappingAndMetadataEntry > { return combineCodec( getUpdateOracleMappingAndMetadataEntryEncoder(), getUpdateOracleMappingAndMetadataEntryDecoder(), ); } // Data Enum Helpers. export function updateOracleMappingAndMetadataEntry( kind: "RemoveEntry", ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "RemoveEntry" >; export function updateOracleMappingAndMetadataEntry( kind: "MappingConfig", data: GetDiscriminatedUnionVariantContent< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingConfig" >, ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingConfig" >; export function updateOracleMappingAndMetadataEntry( kind: "MappingTwapEntry", data: GetDiscriminatedUnionVariantContent< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingTwapEntry" >, ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingTwapEntry" >; export function updateOracleMappingAndMetadataEntry( kind: "MappingTwapEnabledBitmask", data: GetDiscriminatedUnionVariantContent< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingTwapEnabledBitmask" >["fields"], ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingTwapEnabledBitmask" >; export function updateOracleMappingAndMetadataEntry( kind: "MappingRefPrice", data: GetDiscriminatedUnionVariantContent< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingRefPrice" >, ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MappingRefPrice" >; export function updateOracleMappingAndMetadataEntry( kind: "MetadataName", data: GetDiscriminatedUnionVariantContent< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MetadataName" >["fields"], ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MetadataName" >; export function updateOracleMappingAndMetadataEntry( kind: "MetadataMaxPriceAgeSlots", data: GetDiscriminatedUnionVariantContent< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MetadataMaxPriceAgeSlots" >["fields"], ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MetadataMaxPriceAgeSlots" >; export function updateOracleMappingAndMetadataEntry( kind: "MetadataGroupIdsBitset", data: GetDiscriminatedUnionVariantContent< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MetadataGroupIdsBitset" >["fields"], ): GetDiscriminatedUnionVariant< UpdateOracleMappingAndMetadataEntryArgs, "__kind", "MetadataGroupIdsBitset" >; export function updateOracleMappingAndMetadataEntry< K extends UpdateOracleMappingAndMetadataEntryArgs["__kind"], Data, >(kind: K, data?: Data) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isUpdateOracleMappingAndMetadataEntry< K extends UpdateOracleMappingAndMetadataEntry["__kind"], >( kind: K, value: UpdateOracleMappingAndMetadataEntry, ): value is UpdateOracleMappingAndMetadataEntry & { __kind: K } { return value.__kind === kind; }