import * as z from "zod/v4-mini";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { Address, Address$Outbound } from "./address.js";
import { CustomerType } from "./customertype.js";
import { MetadataOutputType, MetadataOutputType$Outbound } from "./metadataoutputtype.js";
import { TaxIDFormat } from "./taxidformat.js";
export type OrderCustomerTaxId = string | TaxIDFormat;
export type OrderCustomer = {
    /**
     * The ID of the customer.
     */
    id: string;
    /**
     * Creation timestamp of the object.
     */
    createdAt: Date;
    /**
     * Last modification timestamp of the object.
     */
    modifiedAt: Date | null;
    metadata: {
        [k: string]: MetadataOutputType;
    };
    /**
     * The ID of the customer in your system. This must be unique within the organization. Once set, it can't be updated.
     */
    externalId?: string | null | undefined;
    /**
     * The email address of the customer. This must be unique within the organization.
     */
    email?: string | null | undefined;
    /**
     * Whether the customer email address is verified. The address is automatically verified when the customer accesses the customer portal using their email address.
     */
    emailVerified: boolean;
    type: CustomerType;
    /**
     * The name of the customer.
     */
    name: string | null;
    /**
     * The name that should appear on the customer's invoices. Falls back to the customer name when not explicitly set.
     */
    billingName: string | null;
    billingAddress: Address | null;
    taxId: Array<string | TaxIDFormat | null> | null;
    locale?: string | null | undefined;
    /**
     * The ID of the organization owning the customer.
     */
    organizationId: string;
    /**
     * The ID of the customer's default payment method, if any. Use the payment methods endpoint to retrieve its details.
     */
    defaultPaymentMethodId?: string | null | undefined;
    /**
     * Timestamp for when the customer was soft deleted.
     */
    deletedAt: Date | null;
    avatarUrl: string | null;
};
/** @internal */
export declare const OrderCustomerTaxId$inboundSchema: z.ZodMiniType<OrderCustomerTaxId, unknown>;
/** @internal */
export type OrderCustomerTaxId$Outbound = string | string;
/** @internal */
export declare const OrderCustomerTaxId$outboundSchema: z.ZodMiniType<OrderCustomerTaxId$Outbound, OrderCustomerTaxId>;
export declare function orderCustomerTaxIdToJSON(orderCustomerTaxId: OrderCustomerTaxId): string;
export declare function orderCustomerTaxIdFromJSON(jsonString: string): SafeParseResult<OrderCustomerTaxId, SDKValidationError>;
/** @internal */
export declare const OrderCustomer$inboundSchema: z.ZodMiniType<OrderCustomer, unknown>;
/** @internal */
export type OrderCustomer$Outbound = {
    id: string;
    created_at: string;
    modified_at: string | null;
    metadata: {
        [k: string]: MetadataOutputType$Outbound;
    };
    external_id?: string | null | undefined;
    email?: string | null | undefined;
    email_verified: boolean;
    type: string;
    name: string | null;
    billing_name: string | null;
    billing_address: Address$Outbound | null;
    tax_id: Array<string | string | null> | null;
    locale?: string | null | undefined;
    organization_id: string;
    default_payment_method_id?: string | null | undefined;
    deleted_at: string | null;
    avatar_url: string | null;
};
/** @internal */
export declare const OrderCustomer$outboundSchema: z.ZodMiniType<OrderCustomer$Outbound, OrderCustomer>;
export declare function orderCustomerToJSON(orderCustomer: OrderCustomer): string;
export declare function orderCustomerFromJSON(jsonString: string): SafeParseResult<OrderCustomer, SDKValidationError>;
//# sourceMappingURL=ordercustomer.d.ts.map