import { A as SetNameAction, D as Reducer, E as RedoAction, M as UndoAction, N as UpgradeManifest, S as PHDocument, _ as NOOPAction, b as PHAuthState, j as SignalDispatch, k as SchemaPruneAction, l as DocumentModelUtils, m as LoadStateAction, o as DocumentModelGlobalState, r as PHDocumentController, t as ActionMap, w as PHDocumentState, x as PHBaseState } from "../../index-BWXRiGBX.js";
import { a as ZodString, c as $strip, i as ZodObject, n as ZodEnum, o as ZodType, r as ZodLiteral, s as $ZodTypeInternals, t as ZodAny } from "../../schemas-CBgWAPtq.js";
import { t as DocumentDispatch } from "../../index-B72y5VYK.js";
import { $ as SetPeriodStartInput, A as ExpenseReportStatus, B as MakeMaybe, C as ExpenseReportPHState, D as AddWalletInput, E as AddLineItemInput, F as InputMaybe, G as RemoveLineItemGroupInput, H as Maybe, I as LineItem, J as Scalars, K as RemoveLineItemInput, L as LineItemGroup, M as GroupTotals, N as GroupTotalsInput, O as Exact, P as Incremental, Q as SetPeriodInput, R as LineItemInput, S as ExpenseReportLocalState, T as AddLineItemGroupInput, U as RemoveBillingStatementInput, V as MakeOptional, W as RemoveGroupTotalsInput, X as SetOwnerIdInput, Y as SetGroupTotalsInput, Z as SetPeriodEndInput, _ as SetStatusAction, a as AddWalletAction, b as UpdateWalletAction, c as RemoveGroupTotalsAction, d as RemoveWalletAction, et as SetStatusInput, f as SetGroupTotalsAction, g as SetPeriodStartAction, h as SetPeriodEndAction, i as AddLineItemGroupAction, it as Wallet, j as ExpenseReportStatusInput, k as ExpenseReportState, l as RemoveLineItemAction, m as SetPeriodAction, n as AddBillingStatementAction, nt as UpdateLineItemInput, o as ExpenseReportWalletAction, p as SetOwnerIdAction, q as RemoveWalletInput, r as AddLineItemAction, rt as UpdateWalletInput, s as RemoveBillingStatementAction, t as ExpenseReportAction, tt as UpdateLineItemGroupInput, u as RemoveLineItemGroupAction, v as UpdateLineItemAction, w as AddBillingStatementInput, x as ExpenseReportDocument, y as UpdateLineItemGroupAction, z as MakeEmpty } from "../../actions-Ctin9BVl.js";

//#region document-models/expense-report/v1/gen/document-model.d.ts
declare const documentModel: DocumentModelGlobalState;
declare namespace creators_d_exports {
  export { addBillingStatement, addLineItem, addLineItemGroup, addWallet, removeBillingStatement, removeGroupTotals, removeLineItem, removeLineItemGroup, removeWallet, setGroupTotals, setOwnerId, setPeriod, setPeriodEnd, setPeriodStart, setStatus, updateLineItem, updateLineItemGroup, updateWallet };
}
declare const addWallet: (input: AddWalletInput) => AddWalletAction;
declare const removeWallet: (input: RemoveWalletInput) => RemoveWalletAction;
declare const addBillingStatement: (input: AddBillingStatementInput) => AddBillingStatementAction;
declare const removeBillingStatement: (input: RemoveBillingStatementInput) => RemoveBillingStatementAction;
declare const addLineItem: (input: AddLineItemInput) => AddLineItemAction;
declare const updateLineItem: (input: UpdateLineItemInput) => UpdateLineItemAction;
declare const removeLineItem: (input: RemoveLineItemInput) => RemoveLineItemAction;
declare const addLineItemGroup: (input: AddLineItemGroupInput) => AddLineItemGroupAction;
declare const updateLineItemGroup: (input: UpdateLineItemGroupInput) => UpdateLineItemGroupAction;
declare const removeLineItemGroup: (input: RemoveLineItemGroupInput) => RemoveLineItemGroupAction;
declare const setGroupTotals: (input: SetGroupTotalsInput) => SetGroupTotalsAction;
declare const removeGroupTotals: (input: RemoveGroupTotalsInput) => RemoveGroupTotalsAction;
declare const setPeriodStart: (input: SetPeriodStartInput) => SetPeriodStartAction;
declare const setPeriodEnd: (input: SetPeriodEndInput) => SetPeriodEndAction;
declare const updateWallet: (input: UpdateWalletInput) => UpdateWalletAction;
declare const setOwnerId: (input: SetOwnerIdInput) => SetOwnerIdAction;
declare const setStatus: (input: SetStatusInput) => SetStatusAction;
declare const setPeriod: (input: SetPeriodInput) => SetPeriodAction;
//#endregion
//#region document-models/expense-report/v1/gen/ph-factories.d.ts
declare function defaultGlobalState(): ExpenseReportState;
declare function defaultLocalState(): ExpenseReportLocalState;
declare function defaultPHState(): ExpenseReportPHState;
declare function createState(baseState?: Partial<PHBaseState>, globalState?: Partial<ExpenseReportState>, localState?: Partial<ExpenseReportLocalState>): ExpenseReportPHState;
/**
 * Creates a ExpenseReportDocument with custom global and local state
 * This properly handles the PHBaseState requirements while allowing
 * document-specific state to be set.
 */
declare function createExpenseReportDocument(state?: Partial<{
  auth?: Partial<PHAuthState>;
  document?: Partial<PHDocumentState>;
  global?: Partial<ExpenseReportState>;
  local?: Partial<ExpenseReportLocalState>;
}>): ExpenseReportDocument;
//#endregion
//#region document-models/expense-report/v1/gen/utils.d.ts
declare const initialGlobalState: ExpenseReportState;
declare const initialLocalState: ExpenseReportLocalState;
//#endregion
//#region document-models/expense-report/v1/gen/reducer.d.ts
declare const reducer: Reducer<ExpenseReportPHState>;
//#endregion
//#region document-models/expense-report/v1/gen/controller.d.ts
declare const ExpenseReportController: new (initialDocument?: PHDocument<ExpenseReportPHState> | undefined) => PHDocumentController<ExpenseReportPHState> & ActionMap<ExpenseReportWalletAction, PHDocumentController<ExpenseReportPHState>>;
//#endregion
//#region document-models/expense-report/v1/gen/schema/zod.d.ts
type Properties<T> = Required<{ [K in keyof T]: ZodType<T[K]> }>;
type definedNonNullAny = {};
declare const isDefinedNonNullAny: (v: any) => v is definedNonNullAny;
declare const definedNonNullAnySchema: ZodAny & ZodType<definedNonNullAny, any, $ZodTypeInternals<definedNonNullAny, any>>;
declare const ExpenseReportStatusSchema: ZodEnum<{
  DRAFT: "DRAFT";
  FINAL: "FINAL";
  REVIEW: "REVIEW";
}>;
declare const ExpenseReportStatusInputSchema: ZodEnum<{
  DRAFT: "DRAFT";
  FINAL: "FINAL";
  REVIEW: "REVIEW";
}>;
declare function AddBillingStatementInputSchema(): ZodObject<Properties<AddBillingStatementInput>>;
declare function AddLineItemGroupInputSchema(): ZodObject<Properties<AddLineItemGroupInput>>;
declare function AddLineItemInputSchema(): ZodObject<Properties<AddLineItemInput>>;
declare function AddWalletInputSchema(): ZodObject<Properties<AddWalletInput>>;
declare function ExpenseReportStateSchema(): ZodObject<Properties<ExpenseReportState>>;
declare function GroupTotalsSchema(): ZodObject<Properties<GroupTotals>>;
declare function GroupTotalsInputSchema(): ZodObject<Properties<GroupTotalsInput>>;
declare function LineItemSchema(): ZodObject<Properties<LineItem>>;
declare function LineItemGroupSchema(): ZodObject<Properties<LineItemGroup>>;
declare function LineItemInputSchema(): ZodObject<Properties<LineItemInput>>;
declare function RemoveBillingStatementInputSchema(): ZodObject<Properties<RemoveBillingStatementInput>>;
declare function RemoveGroupTotalsInputSchema(): ZodObject<Properties<RemoveGroupTotalsInput>>;
declare function RemoveLineItemGroupInputSchema(): ZodObject<Properties<RemoveLineItemGroupInput>>;
declare function RemoveLineItemInputSchema(): ZodObject<Properties<RemoveLineItemInput>>;
declare function RemoveWalletInputSchema(): ZodObject<Properties<RemoveWalletInput>>;
declare function SetGroupTotalsInputSchema(): ZodObject<Properties<SetGroupTotalsInput>>;
declare function SetOwnerIdInputSchema(): ZodObject<Properties<SetOwnerIdInput>>;
declare function SetPeriodEndInputSchema(): ZodObject<Properties<SetPeriodEndInput>>;
declare function SetPeriodInputSchema(): ZodObject<Properties<SetPeriodInput>>;
declare function SetPeriodStartInputSchema(): ZodObject<Properties<SetPeriodStartInput>>;
declare function SetStatusInputSchema(): ZodObject<Properties<SetStatusInput>>;
declare function UpdateLineItemGroupInputSchema(): ZodObject<Properties<UpdateLineItemGroupInput>>;
declare function UpdateLineItemInputSchema(): ZodObject<Properties<UpdateLineItemInput>>;
declare function UpdateWalletInputSchema(): ZodObject<Properties<UpdateWalletInput>>;
declare function WalletSchema(): ZodObject<Properties<Wallet>>;
//#endregion
//#region document-models/expense-report/v1/gen/document-type.d.ts
declare const expenseReportDocumentType = "powerhouse/expense-report";
//#endregion
//#region document-models/expense-report/v1/gen/document-schema.d.ts
/** Schema for validating the header object of a ExpenseReport document */
declare const ExpenseReportDocumentHeaderSchema: ZodObject<{
  id: ZodString;
  name: ZodString;
  createdAtUtcIso: ZodString;
  lastModifiedAtUtcIso: ZodString;
  documentType: ZodLiteral<"powerhouse/expense-report">;
}, $strip>;
/** Schema for validating the state object of a ExpenseReport document */
declare const ExpenseReportPHStateSchema: ZodObject<{
  global: ZodObject<Required<{
    endDate: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
    groups: ZodType<LineItemGroup[], unknown, $ZodTypeInternals<LineItemGroup[], unknown>>;
    ownerId: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
    periodEnd: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
    periodStart: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
    startDate: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
    status: ZodType<ExpenseReportStatus, unknown, $ZodTypeInternals<ExpenseReportStatus, unknown>>;
    wallets: ZodType<Wallet[], unknown, $ZodTypeInternals<Wallet[], unknown>>;
  }>, $strip>;
}, $strip>;
declare const ExpenseReportDocumentSchema: ZodObject<{
  header: ZodObject<{
    id: ZodString;
    name: ZodString;
    createdAtUtcIso: ZodString;
    lastModifiedAtUtcIso: ZodString;
    documentType: ZodLiteral<"powerhouse/expense-report">;
  }, $strip>;
  state: ZodObject<{
    global: ZodObject<Required<{
      endDate: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      groups: ZodType<LineItemGroup[], unknown, $ZodTypeInternals<LineItemGroup[], unknown>>;
      ownerId: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      periodEnd: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      periodStart: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      startDate: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      status: ZodType<ExpenseReportStatus, unknown, $ZodTypeInternals<ExpenseReportStatus, unknown>>;
      wallets: ZodType<Wallet[], unknown, $ZodTypeInternals<Wallet[], unknown>>;
    }>, $strip>;
  }, $strip>;
  initialState: ZodObject<{
    global: ZodObject<Required<{
      endDate: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      groups: ZodType<LineItemGroup[], unknown, $ZodTypeInternals<LineItemGroup[], unknown>>;
      ownerId: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      periodEnd: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      periodStart: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      startDate: ZodType<Maybe<string>, unknown, $ZodTypeInternals<Maybe<string>, unknown>>;
      status: ZodType<ExpenseReportStatus, unknown, $ZodTypeInternals<ExpenseReportStatus, unknown>>;
      wallets: ZodType<Wallet[], unknown, $ZodTypeInternals<Wallet[], unknown>>;
    }>, $strip>;
  }, $strip>;
}, $strip>;
/** Simple helper function to check if a state object is a ExpenseReport document state object */
declare function isExpenseReportState(state: unknown): state is ExpenseReportPHState;
/** Simple helper function to assert that a document state object is a ExpenseReport document state object */
declare function assertIsExpenseReportState(state: unknown): asserts state is ExpenseReportPHState;
/** Simple helper function to check if a document is a ExpenseReport document */
declare function isExpenseReportDocument(document: unknown): document is ExpenseReportDocument;
/** Simple helper function to assert that a document is a ExpenseReport document */
declare function assertIsExpenseReportDocument(document: unknown): asserts document is ExpenseReportDocument;
//#endregion
//#region document-models/expense-report/v1/gen/wallet/operations.d.ts
interface ExpenseReportWalletOperations {
  addWalletOperation: (state: ExpenseReportState, action: AddWalletAction, dispatch?: SignalDispatch) => void;
  removeWalletOperation: (state: ExpenseReportState, action: RemoveWalletAction, dispatch?: SignalDispatch) => void;
  addBillingStatementOperation: (state: ExpenseReportState, action: AddBillingStatementAction, dispatch?: SignalDispatch) => void;
  removeBillingStatementOperation: (state: ExpenseReportState, action: RemoveBillingStatementAction, dispatch?: SignalDispatch) => void;
  addLineItemOperation: (state: ExpenseReportState, action: AddLineItemAction, dispatch?: SignalDispatch) => void;
  updateLineItemOperation: (state: ExpenseReportState, action: UpdateLineItemAction, dispatch?: SignalDispatch) => void;
  removeLineItemOperation: (state: ExpenseReportState, action: RemoveLineItemAction, dispatch?: SignalDispatch) => void;
  addLineItemGroupOperation: (state: ExpenseReportState, action: AddLineItemGroupAction, dispatch?: SignalDispatch) => void;
  updateLineItemGroupOperation: (state: ExpenseReportState, action: UpdateLineItemGroupAction, dispatch?: SignalDispatch) => void;
  removeLineItemGroupOperation: (state: ExpenseReportState, action: RemoveLineItemGroupAction, dispatch?: SignalDispatch) => void;
  setGroupTotalsOperation: (state: ExpenseReportState, action: SetGroupTotalsAction, dispatch?: SignalDispatch) => void;
  removeGroupTotalsOperation: (state: ExpenseReportState, action: RemoveGroupTotalsAction, dispatch?: SignalDispatch) => void;
  setPeriodStartOperation: (state: ExpenseReportState, action: SetPeriodStartAction, dispatch?: SignalDispatch) => void;
  setPeriodEndOperation: (state: ExpenseReportState, action: SetPeriodEndAction, dispatch?: SignalDispatch) => void;
  updateWalletOperation: (state: ExpenseReportState, action: UpdateWalletAction, dispatch?: SignalDispatch) => void;
  setOwnerIdOperation: (state: ExpenseReportState, action: SetOwnerIdAction, dispatch?: SignalDispatch) => void;
  setStatusOperation: (state: ExpenseReportState, action: SetStatusAction, dispatch?: SignalDispatch) => void;
  setPeriodOperation: (state: ExpenseReportState, action: SetPeriodAction, dispatch?: SignalDispatch) => void;
}
//#endregion
//#region document-models/expense-report/v1/hooks.d.ts
/** Hook to get a ExpenseReport document by its id */
declare function useExpenseReportDocumentById(documentId: string | null | undefined): [ExpenseReportDocument, DocumentDispatch<ExpenseReportAction>] | [undefined, undefined];
/** Hook to get the selected ExpenseReport document */
declare function useSelectedExpenseReportDocument(): [ExpenseReportDocument, DocumentDispatch<ExpenseReportAction>];
/** Hook to get all ExpenseReport documents in the selected drive */
declare function useExpenseReportDocumentsInSelectedDrive(): ExpenseReportDocument[] | undefined;
/** Hook to get all ExpenseReport documents in the selected folder */
declare function useExpenseReportDocumentsInSelectedFolder(): ExpenseReportDocument[] | undefined;
//#endregion
//#region document-models/expense-report/v1/actions.d.ts
/** Actions for the ExpenseReport document model */
declare const actions: {
  addWallet: (input: AddWalletInput) => AddWalletAction;
  removeWallet: (input: RemoveWalletInput) => RemoveWalletAction;
  addBillingStatement: (input: AddBillingStatementInput) => AddBillingStatementAction;
  removeBillingStatement: (input: RemoveBillingStatementInput) => RemoveBillingStatementAction;
  addLineItem: (input: AddLineItemInput) => AddLineItemAction;
  updateLineItem: (input: UpdateLineItemInput) => UpdateLineItemAction;
  removeLineItem: (input: RemoveLineItemInput) => RemoveLineItemAction;
  addLineItemGroup: (input: AddLineItemGroupInput) => AddLineItemGroupAction;
  updateLineItemGroup: (input: UpdateLineItemGroupInput) => UpdateLineItemGroupAction;
  removeLineItemGroup: (input: RemoveLineItemGroupInput) => RemoveLineItemGroupAction;
  setGroupTotals: (input: SetGroupTotalsInput) => SetGroupTotalsAction;
  removeGroupTotals: (input: RemoveGroupTotalsInput) => RemoveGroupTotalsAction;
  setPeriodStart: (input: SetPeriodStartInput) => SetPeriodStartAction;
  setPeriodEnd: (input: SetPeriodEndInput) => SetPeriodEndAction;
  updateWallet: (input: UpdateWalletInput) => UpdateWalletAction;
  setOwnerId: (input: SetOwnerIdInput) => SetOwnerIdAction;
  setStatus: (input: SetStatusInput) => SetStatusAction;
  setPeriod: (input: SetPeriodInput) => SetPeriodAction;
  setName: (name: string | {
    name: string;
  }) => SetNameAction;
  undo: (count?: number, scope?: string) => UndoAction;
  redo: (count?: number, scope?: string) => RedoAction;
  prune: (start?: number, end?: number, scope?: string) => SchemaPruneAction;
  loadState: <TState extends PHBaseState = PHBaseState>(state: TState & {
    name: string;
  }, operations: number) => LoadStateAction;
  noop: (scope?: string) => NOOPAction;
};
//#endregion
//#region document-models/expense-report/v1/utils.d.ts
/** Utils for the ExpenseReport document model */
declare const utils: DocumentModelUtils<ExpenseReportPHState>;
//#endregion
//#region document-models/expense-report/upgrades/versions.d.ts
declare const supportedVersions: readonly [1];
declare const latestVersion: 1;
//#endregion
//#region document-models/expense-report/upgrades/upgrade-manifest.d.ts
declare const expenseReportUpgradeManifest: UpgradeManifest<typeof supportedVersions>;
//#endregion
export { AddBillingStatementAction, AddBillingStatementInput, AddBillingStatementInputSchema, AddLineItemAction, AddLineItemGroupAction, AddLineItemGroupInput, AddLineItemGroupInputSchema, AddLineItemInput, AddLineItemInputSchema, AddWalletAction, AddWalletInput, AddWalletInputSchema, Exact, ExpenseReportAction, ExpenseReportController, ExpenseReportDocument, ExpenseReportDocumentHeaderSchema, ExpenseReportDocumentSchema, ExpenseReportState as ExpenseReportGlobalState, ExpenseReportState, ExpenseReportLocalState, ExpenseReportPHState, ExpenseReportPHStateSchema, ExpenseReportStateSchema, ExpenseReportStatus, ExpenseReportStatusInput, ExpenseReportStatusInputSchema, ExpenseReportStatusSchema, ExpenseReportWalletAction, ExpenseReportWalletOperations, GroupTotals, GroupTotalsInput, GroupTotalsInputSchema, GroupTotalsSchema, Incremental, InputMaybe, LineItem, LineItemGroup, LineItemGroupSchema, LineItemInput, LineItemInputSchema, LineItemSchema, MakeEmpty, MakeMaybe, MakeOptional, Maybe, RemoveBillingStatementAction, RemoveBillingStatementInput, RemoveBillingStatementInputSchema, RemoveGroupTotalsAction, RemoveGroupTotalsInput, RemoveGroupTotalsInputSchema, RemoveLineItemAction, RemoveLineItemGroupAction, RemoveLineItemGroupInput, RemoveLineItemGroupInputSchema, RemoveLineItemInput, RemoveLineItemInputSchema, RemoveWalletAction, RemoveWalletInput, RemoveWalletInputSchema, Scalars, SetGroupTotalsAction, SetGroupTotalsInput, SetGroupTotalsInputSchema, SetOwnerIdAction, SetOwnerIdInput, SetOwnerIdInputSchema, SetPeriodAction, SetPeriodEndAction, SetPeriodEndInput, SetPeriodEndInputSchema, SetPeriodInput, SetPeriodInputSchema, SetPeriodStartAction, SetPeriodStartInput, SetPeriodStartInputSchema, SetStatusAction, SetStatusInput, SetStatusInputSchema, UpdateLineItemAction, UpdateLineItemGroupAction, UpdateLineItemGroupInput, UpdateLineItemGroupInputSchema, UpdateLineItemInput, UpdateLineItemInputSchema, UpdateWalletAction, UpdateWalletInput, UpdateWalletInputSchema, Wallet, WalletSchema, actions, addBillingStatement, addLineItem, addLineItemGroup, addWallet, assertIsExpenseReportDocument, assertIsExpenseReportState, createExpenseReportDocument, createState, defaultGlobalState, defaultLocalState, defaultPHState, definedNonNullAnySchema, documentModel, expenseReportDocumentType, expenseReportUpgradeManifest, creators_d_exports as expenseReportWalletActions, initialGlobalState, initialLocalState, isDefinedNonNullAny, isExpenseReportDocument, isExpenseReportState, latestVersion, reducer, removeBillingStatement, removeGroupTotals, removeLineItem, removeLineItemGroup, removeWallet, setGroupTotals, setOwnerId, setPeriod, setPeriodEnd, setPeriodStart, setStatus, supportedVersions, updateLineItem, updateLineItemGroup, updateWallet, useExpenseReportDocumentById, useExpenseReportDocumentsInSelectedDrive, useExpenseReportDocumentsInSelectedFolder, useSelectedExpenseReportDocument, utils };
//# sourceMappingURL=index.d.ts.map