/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
import * as z from "zod";
import { remap as remap$ } from "../lib/primitives.js";
import { safeParse } from "../lib/schemas.js";
import { Result as SafeParseResult } from "../types/fp.js";
import {
Direction,
Direction$inboundSchema,
Direction$outboundSchema,
} from "./direction.js";
import { SDKValidationError } from "./errors/sdkvalidationerror.js";
import {
NetworkIdentifier,
NetworkIdentifier$inboundSchema,
NetworkIdentifier$Outbound,
NetworkIdentifier$outboundSchema,
} from "./networkidentifier.js";
import {
TransactionIdentifier,
TransactionIdentifier$inboundSchema,
TransactionIdentifier$Outbound,
TransactionIdentifier$outboundSchema,
} from "./transactionidentifier.js";
/**
* The related_transaction allows implementations to link together multiple transactions. An unpopulated network identifier indicates that the related transaction is on the same network.
*/
export type RelatedTransaction = {
/**
* The network_identifier specifies which network a particular object is associated with.
*/
networkIdentifier?: NetworkIdentifier | undefined;
/**
* The transaction_identifier uniquely identifies a transaction in a particular network and block or in the mempool.
*/
transactionIdentifier: TransactionIdentifier;
/**
* Used by RelatedTransaction to indicate the direction of the relation (i.e. cross-shard/cross-network sends may reference `backward` to an earlier transaction and async execution may reference `forward`). Can be used to indicate if a transaction relation is from child to parent or the reverse.
*/
direction: Direction;
};
/** @internal */
export const RelatedTransaction$inboundSchema: z.ZodType<
RelatedTransaction,
z.ZodTypeDef,
unknown
> = z.object({
network_identifier: NetworkIdentifier$inboundSchema.optional(),
transaction_identifier: TransactionIdentifier$inboundSchema,
direction: Direction$inboundSchema,
}).transform((v) => {
return remap$(v, {
"network_identifier": "networkIdentifier",
"transaction_identifier": "transactionIdentifier",
});
});
/** @internal */
export type RelatedTransaction$Outbound = {
network_identifier?: NetworkIdentifier$Outbound | undefined;
transaction_identifier: TransactionIdentifier$Outbound;
direction: string;
};
/** @internal */
export const RelatedTransaction$outboundSchema: z.ZodType<
RelatedTransaction$Outbound,
z.ZodTypeDef,
RelatedTransaction
> = z.object({
networkIdentifier: NetworkIdentifier$outboundSchema.optional(),
transactionIdentifier: TransactionIdentifier$outboundSchema,
direction: Direction$outboundSchema,
}).transform((v) => {
return remap$(v, {
networkIdentifier: "network_identifier",
transactionIdentifier: "transaction_identifier",
});
});
/**
* @internal
* @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
*/
export namespace RelatedTransaction$ {
/** @deprecated use `RelatedTransaction$inboundSchema` instead. */
export const inboundSchema = RelatedTransaction$inboundSchema;
/** @deprecated use `RelatedTransaction$outboundSchema` instead. */
export const outboundSchema = RelatedTransaction$outboundSchema;
/** @deprecated use `RelatedTransaction$Outbound` instead. */
export type Outbound = RelatedTransaction$Outbound;
}
export function relatedTransactionToJSON(
relatedTransaction: RelatedTransaction,
): string {
return JSON.stringify(
RelatedTransaction$outboundSchema.parse(relatedTransaction),
);
}
export function relatedTransactionFromJSON(
jsonString: string,
): SafeParseResult<RelatedTransaction, SDKValidationError> {
return safeParse(
jsonString,
(x) => RelatedTransaction$inboundSchema.parse(JSON.parse(x)),
`Failed to parse 'RelatedTransaction' from JSON`,
);
}