import { z } from "zod";
import type { InvoiceDocument, InvoicePHState } from "./types.js";
/** Schema for validating the header object of a Invoice document */
export declare const InvoiceDocumentHeaderSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    createdAtUtcIso: z.ZodString;
    lastModifiedAtUtcIso: z.ZodString;
    documentType: z.ZodLiteral<"invoice-approval/invoice">;
}, z.core.$strip>;
/** Schema for validating the state object of a Invoice document */
export declare const InvoicePHStateSchema: z.ZodObject<{
    global: z.ZodObject<Required<{
        attachments: z.ZodType<import("./types.js").InvoiceAttachment[], unknown, z.core.$ZodTypeInternals<import("./types.js").InvoiceAttachment[], unknown>>;
        currency: z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>;
        department: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        description: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        invoiceNumber: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        lineItems: z.ZodType<import("./types.js").LineItem[], unknown, z.core.$ZodTypeInternals<import("./types.js").LineItem[], unknown>>;
        paidAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        paidBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        reviewNote: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        reviewedAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        reviewedBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        status: z.ZodType<import("./types.js").InvoiceStatus, unknown, z.core.$ZodTypeInternals<import("./types.js").InvoiceStatus, unknown>>;
        submittedAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        submittedBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
        totalAmount: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
    }>, z.core.$strip>;
}, z.core.$strip>;
export declare const InvoiceDocumentSchema: z.ZodObject<{
    header: z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        createdAtUtcIso: z.ZodString;
        lastModifiedAtUtcIso: z.ZodString;
        documentType: z.ZodLiteral<"invoice-approval/invoice">;
    }, z.core.$strip>;
    state: z.ZodObject<{
        global: z.ZodObject<Required<{
            attachments: z.ZodType<import("./types.js").InvoiceAttachment[], unknown, z.core.$ZodTypeInternals<import("./types.js").InvoiceAttachment[], unknown>>;
            currency: z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>;
            department: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            description: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            invoiceNumber: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            lineItems: z.ZodType<import("./types.js").LineItem[], unknown, z.core.$ZodTypeInternals<import("./types.js").LineItem[], unknown>>;
            paidAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            paidBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            reviewNote: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            reviewedAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            reviewedBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            status: z.ZodType<import("./types.js").InvoiceStatus, unknown, z.core.$ZodTypeInternals<import("./types.js").InvoiceStatus, unknown>>;
            submittedAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            submittedBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            totalAmount: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
        }>, z.core.$strip>;
    }, z.core.$strip>;
    initialState: z.ZodObject<{
        global: z.ZodObject<Required<{
            attachments: z.ZodType<import("./types.js").InvoiceAttachment[], unknown, z.core.$ZodTypeInternals<import("./types.js").InvoiceAttachment[], unknown>>;
            currency: z.ZodType<string, unknown, z.core.$ZodTypeInternals<string, unknown>>;
            department: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            description: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            invoiceNumber: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            lineItems: z.ZodType<import("./types.js").LineItem[], unknown, z.core.$ZodTypeInternals<import("./types.js").LineItem[], unknown>>;
            paidAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            paidBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            reviewNote: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            reviewedAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            reviewedBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            status: z.ZodType<import("./types.js").InvoiceStatus, unknown, z.core.$ZodTypeInternals<import("./types.js").InvoiceStatus, unknown>>;
            submittedAt: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            submittedBy: z.ZodType<import("./types.js").Maybe<string>, unknown, z.core.$ZodTypeInternals<import("./types.js").Maybe<string>, unknown>>;
            totalAmount: z.ZodType<number, unknown, z.core.$ZodTypeInternals<number, unknown>>;
        }>, z.core.$strip>;
    }, z.core.$strip>;
}, z.core.$strip>;
/** Simple helper function to check if a state object is a Invoice document state object */
export declare function isInvoiceState(state: unknown): state is InvoicePHState;
/** Simple helper function to assert that a document state object is a Invoice document state object */
export declare function assertIsInvoiceState(state: unknown): asserts state is InvoicePHState;
/** Simple helper function to check if a document is a Invoice document */
export declare function isInvoiceDocument(document: unknown): document is InvoiceDocument;
/** Simple helper function to assert that a document is a Invoice document */
export declare function assertIsInvoiceDocument(document: unknown): asserts document is InvoiceDocument;
//# sourceMappingURL=document-schema.d.ts.map