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 { Address, Address$Outbound } from "./address.js";
import { BankAccount, BankAccount$Outbound } from "./bankaccount.js";
import { Currency } from "./currency.js";
import { CustomField, CustomField$Outbound } from "./customfield.js";
import { Email, Email$Outbound } from "./email.js";
import { LinkedLedgerAccount, LinkedLedgerAccount$Outbound } from "./linkedledgeraccount.js";
import { LinkedTaxDetail, LinkedTaxDetail$Outbound } from "./linkedtaxdetail.js";
import { LinkedTaxRate } from "./linkedtaxrate.js";
import { LinkedTaxRateInput, LinkedTaxRateInput$Outbound } from "./linkedtaxrateinput.js";
import { LinkedTaxStatusDetail, LinkedTaxStatusDetail$Outbound } from "./linkedtaxstatusdetail.js";
import { PassThroughBody, PassThroughBody$Outbound } from "./passthroughbody.js";
import { PhoneNumber, PhoneNumber$Outbound } from "./phonenumber.js";
import { Website, Website$Outbound } from "./website.js";
/**
 * Supplier status
 */
export declare const SupplierStatus: {
    readonly Active: "active";
    readonly Inactive: "inactive";
    readonly Archived: "archived";
    readonly GdprErasureRequest: "gdpr-erasure-request";
    readonly Unknown: "unknown";
};
/**
 * Supplier status
 */
export type SupplierStatus = ClosedEnum<typeof SupplierStatus>;
export type Supplier = {
    /**
     * A unique identifier for an object.
     */
    id: string;
    /**
     * The third-party API ID of original entity
     */
    downstreamId?: string | null | undefined;
    /**
     * Display ID
     */
    displayId?: string | null | undefined;
    /**
     * Display name
     */
    displayName?: string | null | undefined;
    /**
     * The name of the company.
     */
    companyName?: string | null | undefined;
    /**
     * The company ID the transaction belongs to
     */
    companyId?: string | null | undefined;
    /**
     * The category/type of the supplier
     */
    supplierCategory?: string | null | undefined;
    /**
     * The job title of the person.
     */
    title?: string | null | undefined;
    /**
     * The first name of the person.
     */
    firstName?: string | null | undefined;
    /**
     * Middle name of the person.
     */
    middleName?: string | null | undefined;
    /**
     * The last name of the person.
     */
    lastName?: string | null | undefined;
    suffix?: string | null | undefined;
    /**
     * Is this an individual or business supplier
     */
    individual?: boolean | null | undefined;
    addresses?: Array<Address> | undefined;
    phoneNumbers?: Array<PhoneNumber> | undefined;
    emails?: Array<Email> | undefined;
    websites?: Array<Website> | undefined;
    bankAccounts?: Array<BankAccount> | undefined;
    /**
     * Some notes about this supplier
     */
    notes?: string | null | undefined;
    taxRate?: LinkedTaxRate | undefined;
    taxNumber?: string | null | undefined;
    /**
     * Whether the entity is subject to taxation
     */
    taxable?: boolean | null | undefined;
    /**
     * Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).
     */
    currency?: Currency | null | undefined;
    account?: LinkedLedgerAccount | null | undefined;
    /**
     * Supplier status
     */
    status?: SupplierStatus | null | undefined;
    /**
     * Payment method used for the transaction, such as cash, credit card, bank transfer, or check
     */
    paymentMethod?: string | null | undefined;
    /**
     * Terms of payment.
     */
    terms?: string | null | undefined;
    /**
     * The channel through which the transaction is processed.
     */
    channel?: string | null | undefined;
    /**
     * Method of issuance of the purchase order for the supplier
     */
    issuedMethod?: string | null | undefined;
    /**
     * Email address of the person who issued the purchase order for the supplier
     */
    issuedEmail?: string | null | undefined;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     */
    customMappings?: {
        [k: string]: any;
    } | null | undefined;
    customFields?: Array<CustomField> | undefined;
    taxDetails?: Array<LinkedTaxDetail | null> | undefined;
    taxStatusDetails?: Array<LinkedTaxStatusDetail | 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;
    /**
     * 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 subsidiary the supplier belongs to.
     */
    subsidiaryId?: string | undefined;
    /**
     * The integration system the supplier belongs to.
     */
    integrationSystemId?: string | undefined;
};
export type SupplierInput = {
    /**
     * Display ID
     */
    displayId?: string | null | undefined;
    /**
     * Display name
     */
    displayName?: string | null | undefined;
    /**
     * The name of the company.
     */
    companyName?: string | null | undefined;
    /**
     * The company ID the transaction belongs to
     */
    companyId?: string | null | undefined;
    /**
     * The category/type of the supplier
     */
    supplierCategory?: string | null | undefined;
    /**
     * The job title of the person.
     */
    title?: string | null | undefined;
    /**
     * The first name of the person.
     */
    firstName?: string | null | undefined;
    /**
     * Middle name of the person.
     */
    middleName?: string | null | undefined;
    /**
     * The last name of the person.
     */
    lastName?: string | null | undefined;
    suffix?: string | null | undefined;
    /**
     * Is this an individual or business supplier
     */
    individual?: boolean | null | undefined;
    addresses?: Array<Address> | undefined;
    phoneNumbers?: Array<PhoneNumber> | undefined;
    emails?: Array<Email> | undefined;
    websites?: Array<Website> | undefined;
    bankAccounts?: Array<BankAccount> | undefined;
    /**
     * Some notes about this supplier
     */
    notes?: string | null | undefined;
    taxRate?: LinkedTaxRateInput | undefined;
    taxNumber?: string | null | undefined;
    /**
     * Whether the entity is subject to taxation
     */
    taxable?: boolean | null | undefined;
    /**
     * Indicates the associated currency for an amount of money. Values correspond to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).
     */
    currency?: Currency | null | undefined;
    account?: LinkedLedgerAccount | null | undefined;
    /**
     * Supplier status
     */
    status?: SupplierStatus | null | undefined;
    /**
     * Payment method used for the transaction, such as cash, credit card, bank transfer, or check
     */
    paymentMethod?: string | null | undefined;
    /**
     * Terms of payment.
     */
    terms?: string | null | undefined;
    /**
     * The channel through which the transaction is processed.
     */
    channel?: string | null | undefined;
    /**
     * Method of issuance of the purchase order for the supplier
     */
    issuedMethod?: string | null | undefined;
    /**
     * Email address of the person who issued the purchase order for the supplier
     */
    issuedEmail?: string | null | undefined;
    customFields?: Array<CustomField> | undefined;
    taxDetails?: Array<LinkedTaxDetail | null> | undefined;
    taxStatusDetails?: Array<LinkedTaxStatusDetail | 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 subsidiary the supplier belongs to.
     */
    subsidiaryId?: string | undefined;
    /**
     * The integration system the supplier belongs to.
     */
    integrationSystemId?: string | undefined;
};
/** @internal */
export declare const SupplierStatus$inboundSchema: z.ZodNativeEnum<typeof SupplierStatus>;
/** @internal */
export declare const SupplierStatus$outboundSchema: z.ZodNativeEnum<typeof SupplierStatus>;
/** @internal */
export declare const Supplier$inboundSchema: z.ZodType<Supplier, z.ZodTypeDef, unknown>;
export declare function supplierFromJSON(jsonString: string): SafeParseResult<Supplier, SDKValidationError>;
/** @internal */
export type SupplierInput$Outbound = {
    display_id?: string | null | undefined;
    display_name?: string | null | undefined;
    company_name?: string | null | undefined;
    company_id?: string | null | undefined;
    supplier_category?: string | null | undefined;
    title?: string | null | undefined;
    first_name?: string | null | undefined;
    middle_name?: string | null | undefined;
    last_name?: string | null | undefined;
    suffix?: string | null | undefined;
    individual?: boolean | null | undefined;
    addresses?: Array<Address$Outbound> | undefined;
    phone_numbers?: Array<PhoneNumber$Outbound> | undefined;
    emails?: Array<Email$Outbound> | undefined;
    websites?: Array<Website$Outbound> | undefined;
    bank_accounts?: Array<BankAccount$Outbound> | undefined;
    notes?: string | null | undefined;
    tax_rate?: LinkedTaxRateInput$Outbound | undefined;
    tax_number?: string | null | undefined;
    taxable?: boolean | null | undefined;
    currency?: string | null | undefined;
    account?: LinkedLedgerAccount$Outbound | null | undefined;
    status?: string | null | undefined;
    payment_method?: string | null | undefined;
    terms?: string | null | undefined;
    channel?: string | null | undefined;
    issued_method?: string | null | undefined;
    issued_email?: string | null | undefined;
    custom_fields?: Array<CustomField$Outbound> | undefined;
    tax_details?: Array<LinkedTaxDetail$Outbound | null> | undefined;
    tax_status_details?: Array<LinkedTaxStatusDetail$Outbound | null> | undefined;
    row_version?: string | null | undefined;
    pass_through?: Array<PassThroughBody$Outbound> | undefined;
    subsidiary_id?: string | undefined;
    integration_system_id?: string | undefined;
};
/** @internal */
export declare const SupplierInput$outboundSchema: z.ZodType<SupplierInput$Outbound, z.ZodTypeDef, SupplierInput>;
export declare function supplierInputToJSON(supplierInput: SupplierInput): string;
//# sourceMappingURL=supplier.d.ts.map