/*
* 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 { SDKValidationError } from "./errors/sdkvalidationerror.js";
import {
Operation,
Operation$inboundSchema,
Operation$Outbound,
Operation$outboundSchema,
} from "./operation.js";
import {
RelatedTransaction,
RelatedTransaction$inboundSchema,
RelatedTransaction$Outbound,
RelatedTransaction$outboundSchema,
} from "./relatedtransaction.js";
import {
TransactionIdentifier,
TransactionIdentifier$inboundSchema,
TransactionIdentifier$Outbound,
TransactionIdentifier$outboundSchema,
} from "./transactionidentifier.js";
/**
* Transactions that are related to other transactions (like a cross-shard transaction) should include the tranaction_identifier of these transactions in the metadata.
*/
export type TransactionMetadata = {};
/**
* Transactions contain an array of Operations that are attributable to the same TransactionIdentifier.
*/
export type Transaction = {
/**
* The transaction_identifier uniquely identifies a transaction in a particular network and block or in the mempool.
*/
transactionIdentifier: TransactionIdentifier;
operations: Array<Operation>;
relatedTransactions?: Array<RelatedTransaction> | undefined;
/**
* Transactions that are related to other transactions (like a cross-shard transaction) should include the tranaction_identifier of these transactions in the metadata.
*/
metadata?: TransactionMetadata | undefined;
};
/** @internal */
export const TransactionMetadata$inboundSchema: z.ZodType<
TransactionMetadata,
z.ZodTypeDef,
unknown
> = z.object({});
/** @internal */
export type TransactionMetadata$Outbound = {};
/** @internal */
export const TransactionMetadata$outboundSchema: z.ZodType<
TransactionMetadata$Outbound,
z.ZodTypeDef,
TransactionMetadata
> = z.object({});
/**
* @internal
* @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
*/
export namespace TransactionMetadata$ {
/** @deprecated use `TransactionMetadata$inboundSchema` instead. */
export const inboundSchema = TransactionMetadata$inboundSchema;
/** @deprecated use `TransactionMetadata$outboundSchema` instead. */
export const outboundSchema = TransactionMetadata$outboundSchema;
/** @deprecated use `TransactionMetadata$Outbound` instead. */
export type Outbound = TransactionMetadata$Outbound;
}
export function transactionMetadataToJSON(
transactionMetadata: TransactionMetadata,
): string {
return JSON.stringify(
TransactionMetadata$outboundSchema.parse(transactionMetadata),
);
}
export function transactionMetadataFromJSON(
jsonString: string,
): SafeParseResult<TransactionMetadata, SDKValidationError> {
return safeParse(
jsonString,
(x) => TransactionMetadata$inboundSchema.parse(JSON.parse(x)),
`Failed to parse 'TransactionMetadata' from JSON`,
);
}
/** @internal */
export const Transaction$inboundSchema: z.ZodType<
Transaction,
z.ZodTypeDef,
unknown
> = z.object({
transaction_identifier: TransactionIdentifier$inboundSchema,
operations: z.array(Operation$inboundSchema),
related_transactions: z.array(RelatedTransaction$inboundSchema).optional(),
metadata: z.lazy(() => TransactionMetadata$inboundSchema).optional(),
}).transform((v) => {
return remap$(v, {
"transaction_identifier": "transactionIdentifier",
"related_transactions": "relatedTransactions",
});
});
/** @internal */
export type Transaction$Outbound = {
transaction_identifier: TransactionIdentifier$Outbound;
operations: Array<Operation$Outbound>;
related_transactions?: Array<RelatedTransaction$Outbound> | undefined;
metadata?: TransactionMetadata$Outbound | undefined;
};
/** @internal */
export const Transaction$outboundSchema: z.ZodType<
Transaction$Outbound,
z.ZodTypeDef,
Transaction
> = z.object({
transactionIdentifier: TransactionIdentifier$outboundSchema,
operations: z.array(Operation$outboundSchema),
relatedTransactions: z.array(RelatedTransaction$outboundSchema).optional(),
metadata: z.lazy(() => TransactionMetadata$outboundSchema).optional(),
}).transform((v) => {
return remap$(v, {
transactionIdentifier: "transaction_identifier",
relatedTransactions: "related_transactions",
});
});
/**
* @internal
* @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
*/
export namespace Transaction$ {
/** @deprecated use `Transaction$inboundSchema` instead. */
export const inboundSchema = Transaction$inboundSchema;
/** @deprecated use `Transaction$outboundSchema` instead. */
export const outboundSchema = Transaction$outboundSchema;
/** @deprecated use `Transaction$Outbound` instead. */
export type Outbound = Transaction$Outbound;
}
export function transactionToJSON(transaction: Transaction): string {
return JSON.stringify(Transaction$outboundSchema.parse(transaction));
}
export function transactionFromJSON(
jsonString: string,
): SafeParseResult<Transaction, SDKValidationError> {
return safeParse(
jsonString,
(x) => Transaction$inboundSchema.parse(JSON.parse(x)),
`Failed to parse 'Transaction' from JSON`,
);
}