import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { CustomField, CustomField$Outbound } from "./customfield.js";
import { PassThroughBody, PassThroughBody$Outbound } from "./passthroughbody.js";
export type Components = {
    id?: string | null | undefined;
    name?: string | undefined;
    rate?: number | null | undefined;
    compound?: boolean | null | undefined;
};
/**
 * Tax rate status
 */
export declare const TaxRateStatus: {
    readonly Active: "active";
    readonly Inactive: "inactive";
    readonly Archived: "archived";
};
/**
 * Tax rate status
 */
export type TaxRateStatus = ClosedEnum<typeof TaxRateStatus>;
export type Subsidiaries = {
    /**
     * The ID of the subsidiary.
     */
    id?: string | undefined;
};
export type TaxRate = {
    /**
     * ID assigned to identify this tax rate.
     */
    id?: string | null | undefined;
    /**
     * Display ID of the tax rate
     */
    displayId?: string | null | undefined;
    /**
     * Name assigned to identify this tax rate.
     */
    name?: string | undefined;
    /**
     * Tax code assigned to identify this tax rate.
     */
    code?: string | null | undefined;
    /**
     * Description of tax rate
     */
    description?: string | null | undefined;
    /**
     * Effective tax rate
     */
    effectiveTaxRate?: number | null | undefined;
    /**
     * Country code according to ISO 3166-1 alpha-2.
     */
    country?: string | null | undefined;
    /**
     * Not compounded sum of the components of a tax rate
     */
    totalTaxRate?: number | null | undefined;
    /**
     * Unique identifier for the account for tax collected.
     */
    taxPayableAccountId?: string | null | undefined;
    /**
     * Unique identifier for the account for tax remitted.
     */
    taxRemittedAccountId?: string | null | undefined;
    components?: Array<Components> | null | undefined;
    /**
     * Tax type used to indicate the source of tax collected or paid
     */
    type?: string | null | undefined;
    /**
     * Report Tax type to aggregate tax collected or paid for reporting purposes
     */
    reportTaxType?: string | null | undefined;
    /**
     * ID of the original tax rate from which the new tax rate is derived. Helps to understand the relationship between corresponding tax rate entities.
     */
    originalTaxRateId?: string | null | undefined;
    /**
     * Tax rate status
     */
    status?: TaxRateStatus | null | undefined;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     */
    customMappings?: {
        [k: string]: any;
    } | null | undefined;
    /**
     * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.
     */
    rowVersion?: string | null | undefined;
    /**
     * The user who last updated the object.
     */
    updatedBy?: string | null | undefined;
    /**
     * The user who created the object.
     */
    createdBy?: string | null | undefined;
    /**
     * The date and time when the object was last updated.
     */
    updatedAt?: Date | null | undefined;
    /**
     * The date and time when the object was created.
     */
    createdAt?: Date | null | undefined;
    /**
     * The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.
     */
    passThrough?: Array<PassThroughBody> | undefined;
    /**
     * The subsidiaries this belongs to.
     */
    subsidiaries?: Array<Subsidiaries> | undefined;
    customFields?: Array<CustomField> | undefined;
};
export type TaxRateInput = {
    /**
     * ID assigned to identify this tax rate.
     */
    id?: string | null | undefined;
    /**
     * Display ID of the tax rate
     */
    displayId?: string | null | undefined;
    /**
     * Name assigned to identify this tax rate.
     */
    name?: string | undefined;
    /**
     * Tax code assigned to identify this tax rate.
     */
    code?: string | null | undefined;
    /**
     * Description of tax rate
     */
    description?: string | null | undefined;
    /**
     * Effective tax rate
     */
    effectiveTaxRate?: number | null | undefined;
    /**
     * Country code according to ISO 3166-1 alpha-2.
     */
    country?: string | null | undefined;
    /**
     * Not compounded sum of the components of a tax rate
     */
    totalTaxRate?: number | null | undefined;
    /**
     * Unique identifier for the account for tax collected.
     */
    taxPayableAccountId?: string | null | undefined;
    /**
     * Unique identifier for the account for tax remitted.
     */
    taxRemittedAccountId?: string | null | undefined;
    components?: Array<Components> | null | undefined;
    /**
     * Tax type used to indicate the source of tax collected or paid
     */
    type?: string | null | undefined;
    /**
     * Report Tax type to aggregate tax collected or paid for reporting purposes
     */
    reportTaxType?: string | null | undefined;
    /**
     * ID of the original tax rate from which the new tax rate is derived. Helps to understand the relationship between corresponding tax rate entities.
     */
    originalTaxRateId?: string | null | undefined;
    /**
     * Tax rate status
     */
    status?: TaxRateStatus | null | undefined;
    /**
     * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.
     */
    rowVersion?: string | null | undefined;
    /**
     * The pass_through property allows passing service-specific, custom data or structured modifications in request body when creating or updating resources.
     */
    passThrough?: Array<PassThroughBody> | undefined;
    /**
     * The subsidiaries this belongs to.
     */
    subsidiaries?: Array<Subsidiaries> | undefined;
    customFields?: Array<CustomField> | undefined;
};
/** @internal */
export declare const Components$inboundSchema: z.ZodType<Components, z.ZodTypeDef, unknown>;
/** @internal */
export type Components$Outbound = {
    id?: string | null | undefined;
    name?: string | undefined;
    rate?: number | null | undefined;
    compound?: boolean | null | undefined;
};
/** @internal */
export declare const Components$outboundSchema: z.ZodType<Components$Outbound, z.ZodTypeDef, Components>;
export declare function componentsToJSON(components: Components): string;
export declare function componentsFromJSON(jsonString: string): SafeParseResult<Components, SDKValidationError>;
/** @internal */
export declare const TaxRateStatus$inboundSchema: z.ZodNativeEnum<typeof TaxRateStatus>;
/** @internal */
export declare const TaxRateStatus$outboundSchema: z.ZodNativeEnum<typeof TaxRateStatus>;
/** @internal */
export declare const Subsidiaries$inboundSchema: z.ZodType<Subsidiaries, z.ZodTypeDef, unknown>;
/** @internal */
export type Subsidiaries$Outbound = {
    id?: string | undefined;
};
/** @internal */
export declare const Subsidiaries$outboundSchema: z.ZodType<Subsidiaries$Outbound, z.ZodTypeDef, Subsidiaries>;
export declare function subsidiariesToJSON(subsidiaries: Subsidiaries): string;
export declare function subsidiariesFromJSON(jsonString: string): SafeParseResult<Subsidiaries, SDKValidationError>;
/** @internal */
export declare const TaxRate$inboundSchema: z.ZodType<TaxRate, z.ZodTypeDef, unknown>;
export declare function taxRateFromJSON(jsonString: string): SafeParseResult<TaxRate, SDKValidationError>;
/** @internal */
export type TaxRateInput$Outbound = {
    id?: string | null | undefined;
    display_id?: string | null | undefined;
    name?: string | undefined;
    code?: string | null | undefined;
    description?: string | null | undefined;
    effective_tax_rate?: number | null | undefined;
    country?: string | null | undefined;
    total_tax_rate?: number | null | undefined;
    tax_payable_account_id?: string | null | undefined;
    tax_remitted_account_id?: string | null | undefined;
    components?: Array<Components$Outbound> | null | undefined;
    type?: string | null | undefined;
    report_tax_type?: string | null | undefined;
    original_tax_rate_id?: string | null | undefined;
    status?: string | null | undefined;
    row_version?: string | null | undefined;
    pass_through?: Array<PassThroughBody$Outbound> | undefined;
    subsidiaries?: Array<Subsidiaries$Outbound> | undefined;
    custom_fields?: Array<CustomField$Outbound> | undefined;
};
/** @internal */
export declare const TaxRateInput$outboundSchema: z.ZodType<TaxRateInput$Outbound, z.ZodTypeDef, TaxRateInput>;
export declare function taxRateInputToJSON(taxRateInput: TaxRateInput): string;
//# sourceMappingURL=taxrate.d.ts.map