/* * 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 { catchUnrecognizedEnum, OpenEnum, Unrecognized, } from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; import { DecimalCreate, DecimalCreate$inboundSchema, DecimalCreate$Outbound, DecimalCreate$outboundSchema, } from "./decimalcreate.js"; import { ExtraReportingDataCreate, ExtraReportingDataCreate$inboundSchema, ExtraReportingDataCreate$Outbound, ExtraReportingDataCreate$outboundSchema, } from "./extrareportingdatacreate.js"; /** * The type of the asset in this order */ export enum BasketOrderCreateAssetType { AssetTypeUnspecified = "ASSET_TYPE_UNSPECIFIED", Equity = "EQUITY", MutualFund = "MUTUAL_FUND", } /** * The type of the asset in this order */ export type BasketOrderCreateAssetTypeOpen = OpenEnum< typeof BasketOrderCreateAssetType >; /** * The identifier type of the asset being ordered. For Equities: only SYMBOL is supported For Mutual Funds: only SYMBOL and CUSIP are supported */ export enum BasketOrderCreateIdentifierType { Symbol = "SYMBOL", Cusip = "CUSIP", Isin = "ISIN", } /** * The identifier type of the asset being ordered. For Equities: only SYMBOL is supported For Mutual Funds: only SYMBOL and CUSIP are supported */ export type BasketOrderCreateIdentifierTypeOpen = OpenEnum< typeof BasketOrderCreateIdentifierType >; /** * The execution type of this order. */ export enum BasketOrderCreateOrderType { OrderTypeUnspecified = "ORDER_TYPE_UNSPECIFIED", Market = "MARKET", } /** * The execution type of this order. */ export type BasketOrderCreateOrderTypeOpen = OpenEnum< typeof BasketOrderCreateOrderType >; /** * The side of this order. */ export enum BasketOrderCreateSide { SideUnspecified = "SIDE_UNSPECIFIED", Buy = "BUY", Sell = "SELL", } /** * The side of this order. */ export type BasketOrderCreateSideOpen = OpenEnum; export enum BasketOrderCreateSpecialReportingInstructions { SpecialReportingInstructionsUnspecified = "SPECIAL_REPORTING_INSTRUCTIONS_UNSPECIFIED", Solicited = "SOLICITED", Unsolicited = "UNSOLICITED", RoundUp = "ROUND_UP", } export type BasketOrderCreateSpecialReportingInstructionsOpen = OpenEnum< typeof BasketOrderCreateSpecialReportingInstructions >; /** * Must be the value "DAY". Regulatory requirements dictate that the system capture the intended time_in_force, which is why this a mandatory field. */ export enum BasketOrderCreateTimeInForce { TimeInForceUnspecified = "TIME_IN_FORCE_UNSPECIFIED", Day = "DAY", } /** * Must be the value "DAY". Regulatory requirements dictate that the system capture the intended time_in_force, which is why this a mandatory field. */ export type BasketOrderCreateTimeInForceOpen = OpenEnum< typeof BasketOrderCreateTimeInForce >; /** * The message describing an order that has been added to a basket */ export type BasketOrderCreate = { /** * The identifier of the account transacting this order */ accountId: string; /** * The type of the asset in this order */ assetType: BasketOrderCreateAssetTypeOpen; /** * User-supplied unique order ID. Cannot be more than 40 characters long. */ clientOrderId: string; /** * Time the order request was received by the client. Must be in the past. Timezone will default to UTC if not provided. */ clientOrderReceivedTime?: Date | null | undefined; /** * Defaults to "USD". Only "USD" is supported. Full list of currency codes is defined at: https://en.wikipedia.org/wiki/ISO_4217 */ currencyCode?: string | undefined; /** * Any extra reporting data provided by the client for an order */ extraReportingData?: ExtraReportingDataCreate | undefined; /** * Identifier of the asset (of the type specified in `identifier_type`). */ identifier: string; /** * The identifier type of the asset being ordered. For Equities: only SYMBOL is supported For Mutual Funds: only SYMBOL and CUSIP are supported */ identifierType: BasketOrderCreateIdentifierTypeOpen; /** * A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java's [BigDecimal][] or Python's [decimal.Decimal][]. * * @remarks * * [BigDecimal]: * https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html * [decimal.Decimal]: https://docs.python.org/3/library/decimal.html */ maxSellQuantity?: DecimalCreate | undefined; /** * A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java's [BigDecimal][] or Python's [decimal.Decimal][]. * * @remarks * * [BigDecimal]: * https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html * [decimal.Decimal]: https://docs.python.org/3/library/decimal.html */ notionalValue?: DecimalCreate | undefined; /** * The execution type of this order. */ orderType: BasketOrderCreateOrderTypeOpen; /** * A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java's [BigDecimal][] or Python's [decimal.Decimal][]. * * @remarks * * [BigDecimal]: * https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html * [decimal.Decimal]: https://docs.python.org/3/library/decimal.html */ quantity?: DecimalCreate | undefined; /** * The side of this order. */ side: BasketOrderCreateSideOpen; /** * Special Reporting Instructions to be applied to this order. Can include multiple Instructions. */ specialReportingInstructions?: | Array | undefined; /** * Must be the value "DAY". Regulatory requirements dictate that the system capture the intended time_in_force, which is why this a mandatory field. */ timeInForce: BasketOrderCreateTimeInForceOpen; }; /** @internal */ export const BasketOrderCreateAssetType$inboundSchema: z.ZodType< BasketOrderCreateAssetTypeOpen, z.ZodTypeDef, unknown > = z .union([ z.nativeEnum(BasketOrderCreateAssetType), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ export const BasketOrderCreateAssetType$outboundSchema: z.ZodType< BasketOrderCreateAssetTypeOpen, z.ZodTypeDef, BasketOrderCreateAssetTypeOpen > = z.union([ z.nativeEnum(BasketOrderCreateAssetType), z.string().and(z.custom>()), ]); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace BasketOrderCreateAssetType$ { /** @deprecated use `BasketOrderCreateAssetType$inboundSchema` instead. */ export const inboundSchema = BasketOrderCreateAssetType$inboundSchema; /** @deprecated use `BasketOrderCreateAssetType$outboundSchema` instead. */ export const outboundSchema = BasketOrderCreateAssetType$outboundSchema; } /** @internal */ export const BasketOrderCreateIdentifierType$inboundSchema: z.ZodType< BasketOrderCreateIdentifierTypeOpen, z.ZodTypeDef, unknown > = z .union([ z.nativeEnum(BasketOrderCreateIdentifierType), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ export const BasketOrderCreateIdentifierType$outboundSchema: z.ZodType< BasketOrderCreateIdentifierTypeOpen, z.ZodTypeDef, BasketOrderCreateIdentifierTypeOpen > = z.union([ z.nativeEnum(BasketOrderCreateIdentifierType), z.string().and(z.custom>()), ]); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace BasketOrderCreateIdentifierType$ { /** @deprecated use `BasketOrderCreateIdentifierType$inboundSchema` instead. */ export const inboundSchema = BasketOrderCreateIdentifierType$inboundSchema; /** @deprecated use `BasketOrderCreateIdentifierType$outboundSchema` instead. */ export const outboundSchema = BasketOrderCreateIdentifierType$outboundSchema; } /** @internal */ export const BasketOrderCreateOrderType$inboundSchema: z.ZodType< BasketOrderCreateOrderTypeOpen, z.ZodTypeDef, unknown > = z .union([ z.nativeEnum(BasketOrderCreateOrderType), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ export const BasketOrderCreateOrderType$outboundSchema: z.ZodType< BasketOrderCreateOrderTypeOpen, z.ZodTypeDef, BasketOrderCreateOrderTypeOpen > = z.union([ z.nativeEnum(BasketOrderCreateOrderType), z.string().and(z.custom>()), ]); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace BasketOrderCreateOrderType$ { /** @deprecated use `BasketOrderCreateOrderType$inboundSchema` instead. */ export const inboundSchema = BasketOrderCreateOrderType$inboundSchema; /** @deprecated use `BasketOrderCreateOrderType$outboundSchema` instead. */ export const outboundSchema = BasketOrderCreateOrderType$outboundSchema; } /** @internal */ export const BasketOrderCreateSide$inboundSchema: z.ZodType< BasketOrderCreateSideOpen, z.ZodTypeDef, unknown > = z .union([ z.nativeEnum(BasketOrderCreateSide), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ export const BasketOrderCreateSide$outboundSchema: z.ZodType< BasketOrderCreateSideOpen, z.ZodTypeDef, BasketOrderCreateSideOpen > = z.union([ z.nativeEnum(BasketOrderCreateSide), z.string().and(z.custom>()), ]); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace BasketOrderCreateSide$ { /** @deprecated use `BasketOrderCreateSide$inboundSchema` instead. */ export const inboundSchema = BasketOrderCreateSide$inboundSchema; /** @deprecated use `BasketOrderCreateSide$outboundSchema` instead. */ export const outboundSchema = BasketOrderCreateSide$outboundSchema; } /** @internal */ export const BasketOrderCreateSpecialReportingInstructions$inboundSchema: z.ZodType< BasketOrderCreateSpecialReportingInstructionsOpen, z.ZodTypeDef, unknown > = z .union([ z.nativeEnum(BasketOrderCreateSpecialReportingInstructions), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ export const BasketOrderCreateSpecialReportingInstructions$outboundSchema: z.ZodType< BasketOrderCreateSpecialReportingInstructionsOpen, z.ZodTypeDef, BasketOrderCreateSpecialReportingInstructionsOpen > = z.union([ z.nativeEnum(BasketOrderCreateSpecialReportingInstructions), z.string().and(z.custom>()), ]); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace BasketOrderCreateSpecialReportingInstructions$ { /** @deprecated use `BasketOrderCreateSpecialReportingInstructions$inboundSchema` instead. */ export const inboundSchema = BasketOrderCreateSpecialReportingInstructions$inboundSchema; /** @deprecated use `BasketOrderCreateSpecialReportingInstructions$outboundSchema` instead. */ export const outboundSchema = BasketOrderCreateSpecialReportingInstructions$outboundSchema; } /** @internal */ export const BasketOrderCreateTimeInForce$inboundSchema: z.ZodType< BasketOrderCreateTimeInForceOpen, z.ZodTypeDef, unknown > = z .union([ z.nativeEnum(BasketOrderCreateTimeInForce), z.string().transform(catchUnrecognizedEnum), ]); /** @internal */ export const BasketOrderCreateTimeInForce$outboundSchema: z.ZodType< BasketOrderCreateTimeInForceOpen, z.ZodTypeDef, BasketOrderCreateTimeInForceOpen > = z.union([ z.nativeEnum(BasketOrderCreateTimeInForce), z.string().and(z.custom>()), ]); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace BasketOrderCreateTimeInForce$ { /** @deprecated use `BasketOrderCreateTimeInForce$inboundSchema` instead. */ export const inboundSchema = BasketOrderCreateTimeInForce$inboundSchema; /** @deprecated use `BasketOrderCreateTimeInForce$outboundSchema` instead. */ export const outboundSchema = BasketOrderCreateTimeInForce$outboundSchema; } /** @internal */ export const BasketOrderCreate$inboundSchema: z.ZodType< BasketOrderCreate, z.ZodTypeDef, unknown > = z.object({ account_id: z.string(), asset_type: BasketOrderCreateAssetType$inboundSchema, client_order_id: z.string(), client_order_received_time: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ).optional(), currency_code: z.string().optional(), extra_reporting_data: ExtraReportingDataCreate$inboundSchema.optional(), identifier: z.string(), identifier_type: BasketOrderCreateIdentifierType$inboundSchema, max_sell_quantity: DecimalCreate$inboundSchema.optional(), notional_value: DecimalCreate$inboundSchema.optional(), order_type: BasketOrderCreateOrderType$inboundSchema, quantity: DecimalCreate$inboundSchema.optional(), side: BasketOrderCreateSide$inboundSchema, special_reporting_instructions: z.array( BasketOrderCreateSpecialReportingInstructions$inboundSchema, ).optional(), time_in_force: BasketOrderCreateTimeInForce$inboundSchema, }).transform((v) => { return remap$(v, { "account_id": "accountId", "asset_type": "assetType", "client_order_id": "clientOrderId", "client_order_received_time": "clientOrderReceivedTime", "currency_code": "currencyCode", "extra_reporting_data": "extraReportingData", "identifier_type": "identifierType", "max_sell_quantity": "maxSellQuantity", "notional_value": "notionalValue", "order_type": "orderType", "special_reporting_instructions": "specialReportingInstructions", "time_in_force": "timeInForce", }); }); /** @internal */ export type BasketOrderCreate$Outbound = { account_id: string; asset_type: string; client_order_id: string; client_order_received_time?: string | null | undefined; currency_code?: string | undefined; extra_reporting_data?: ExtraReportingDataCreate$Outbound | undefined; identifier: string; identifier_type: string; max_sell_quantity?: DecimalCreate$Outbound | undefined; notional_value?: DecimalCreate$Outbound | undefined; order_type: string; quantity?: DecimalCreate$Outbound | undefined; side: string; special_reporting_instructions?: Array | undefined; time_in_force: string; }; /** @internal */ export const BasketOrderCreate$outboundSchema: z.ZodType< BasketOrderCreate$Outbound, z.ZodTypeDef, BasketOrderCreate > = z.object({ accountId: z.string(), assetType: BasketOrderCreateAssetType$outboundSchema, clientOrderId: z.string(), clientOrderReceivedTime: z.nullable(z.date().transform(v => v.toISOString())) .optional(), currencyCode: z.string().optional(), extraReportingData: ExtraReportingDataCreate$outboundSchema.optional(), identifier: z.string(), identifierType: BasketOrderCreateIdentifierType$outboundSchema, maxSellQuantity: DecimalCreate$outboundSchema.optional(), notionalValue: DecimalCreate$outboundSchema.optional(), orderType: BasketOrderCreateOrderType$outboundSchema, quantity: DecimalCreate$outboundSchema.optional(), side: BasketOrderCreateSide$outboundSchema, specialReportingInstructions: z.array( BasketOrderCreateSpecialReportingInstructions$outboundSchema, ).optional(), timeInForce: BasketOrderCreateTimeInForce$outboundSchema, }).transform((v) => { return remap$(v, { accountId: "account_id", assetType: "asset_type", clientOrderId: "client_order_id", clientOrderReceivedTime: "client_order_received_time", currencyCode: "currency_code", extraReportingData: "extra_reporting_data", identifierType: "identifier_type", maxSellQuantity: "max_sell_quantity", notionalValue: "notional_value", orderType: "order_type", specialReportingInstructions: "special_reporting_instructions", timeInForce: "time_in_force", }); }); /** * @internal * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module. */ export namespace BasketOrderCreate$ { /** @deprecated use `BasketOrderCreate$inboundSchema` instead. */ export const inboundSchema = BasketOrderCreate$inboundSchema; /** @deprecated use `BasketOrderCreate$outboundSchema` instead. */ export const outboundSchema = BasketOrderCreate$outboundSchema; /** @deprecated use `BasketOrderCreate$Outbound` instead. */ export type Outbound = BasketOrderCreate$Outbound; } export function basketOrderCreateToJSON( basketOrderCreate: BasketOrderCreate, ): string { return JSON.stringify( BasketOrderCreate$outboundSchema.parse(basketOrderCreate), ); } export function basketOrderCreateFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => BasketOrderCreate$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'BasketOrderCreate' from JSON`, ); }