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 TaxId = string | TaxIDFormat;
export type SubscriptionCustomer = {
    /**
     * 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 TaxId$inboundSchema: z.ZodMiniType<TaxId, unknown>;
/** @internal */
export type TaxId$Outbound = string | string;
/** @internal */
export declare const TaxId$outboundSchema: z.ZodMiniType<TaxId$Outbound, TaxId>;
export declare function taxIdToJSON(taxId: TaxId): string;
export declare function taxIdFromJSON(jsonString: string): SafeParseResult<TaxId, SDKValidationError>;
/** @internal */
export declare const SubscriptionCustomer$inboundSchema: z.ZodMiniType<SubscriptionCustomer, unknown>;
/** @internal */
export type SubscriptionCustomer$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 SubscriptionCustomer$outboundSchema: z.ZodMiniType<SubscriptionCustomer$Outbound, SubscriptionCustomer>;
export declare function subscriptionCustomerToJSON(subscriptionCustomer: SubscriptionCustomer): string;
export declare function subscriptionCustomerFromJSON(jsonString: string): SafeParseResult<SubscriptionCustomer, SDKValidationError>;
//# sourceMappingURL=subscriptioncustomer.d.ts.map