import { B as BaseAction } from './types.d-a6387c3b.js';
import * as _acaldas_document_model_graphql_document from '@acaldas/document-model-graphql/document';
import { D as Document, B as BaseDocument, a as DocumentFile, A as Action } from './object-bee2e27e.js';
import * as _acaldas_document_model_graphql_budget_statement from '@acaldas/document-model-graphql/budget-statement';
import { BudgetStatementData, BudgetStatementAction as BudgetStatementAction$1, AccountInput as AccountInput$1, Account, LineItemInput as LineItemInput$1, LineItem as LineItem$1, AccountUpdateInput as AccountUpdateInput$1, AuditReportStatus as AuditReportStatus$1, AuditReport as AuditReport$1, OwnerInput as OwnerInput$1, FtesInput as FtesInput$1, CommentInput as CommentInput$1, CommentUpdateInput as CommentUpdateInput$1, LineItemUpdateInput as LineItemUpdateInput$1, LineItemDeleteInput as LineItemDeleteInput$1, LineItemsSortInput as LineItemsSortInput$1, VestingInput as VestingInput$1, VestingUpdateInput as VestingUpdateInput$1, AuditReportInput as AuditReportInput$1, BudgetStatus as BudgetStatus$1, Comment, Ftes as Ftes$1, Owner as Owner$1, Vesting as Vesting$1 } from '@acaldas/document-model-graphql/budget-statement';
import { F as FileInput } from './file-1f66fae7.js';
import { H as index_d } from './index.d-9c572270.js';

type Maybe<T> = T | null;
type InputMaybe<T> = T | null | undefined;
/** All built-in and custom scalars, mapped to their actual values */
type Scalars = {
    ID: string;
    String: string;
    Boolean: boolean;
    Int: number;
    Float: number;
    DateTime: string;
    Unknown: unknown;
};
type Add_Account = 'ADD_ACCOUNT';
type Add_Audit_Report = 'ADD_AUDIT_REPORT';
type Add_Comment = 'ADD_COMMENT';
type Add_Line_Item = 'ADD_LINE_ITEM';
type Add_Vesting = 'ADD_VESTING';
type AccountInput = {
    address: Scalars['String'];
    lineItems?: InputMaybe<Array<LineItemInput>>;
    name?: InputMaybe<Scalars['String']>;
};
type AccountUpdateInput = {
    address: Scalars['String'];
    lineItems?: InputMaybe<Array<LineItem>>;
    name?: InputMaybe<Scalars['String']>;
};
type AddAccountAction = {
    input: AddAccountInput;
    type: Add_Account | `${Add_Account}`;
};
type AddAccountInput = {
    accounts: Array<AccountInput>;
};
type AddAuditReportAction = {
    input: AddAuditReportInput;
    type: Add_Audit_Report | `${Add_Audit_Report}`;
};
type AddAuditReportInput = {
    reports: Array<AuditReportUnion>;
};
type AddCommentAction = {
    input: AddCommentInput;
    type: Add_Comment | `${Add_Comment}`;
};
type AddCommentInput = {
    comments: Array<CommentInput>;
};
type AddLineItemAction = {
    input: AddLineItemInput;
    type: Add_Line_Item | `${Add_Line_Item}`;
};
type AddLineItemInput = {
    account: Scalars['String'];
    lineItems: Array<LineItemInput>;
};
type AddVestingAction = {
    input: AddVestingInput;
    type: Add_Vesting | `${Add_Vesting}`;
};
type AddVestingInput = {
    vesting: Array<VestingInput>;
};
type AuditReport = {
    __typename?: 'AuditReport';
    report: Scalars['String'];
    status: AuditReportStatus | `${AuditReportStatus}`;
    timestamp: Scalars['DateTime'];
};
type AuditReportInput = {
    report: DocumentFileInput;
    status: AuditReportStatus | `${AuditReportStatus}`;
    timestamp?: InputMaybe<Scalars['DateTime']>;
};
type AuditReportStatus = 'Approved' | 'ApprovedWithComments' | 'Escalated' | 'NeedsAction';
type AuditReportUnion = AuditReport | AuditReportInput;
type BudgetStatementAction = AddAccountAction | AddAuditReportAction | AddCommentAction | AddLineItemAction | AddVestingAction | DeleteAccountAction | DeleteAuditReportAction | DeleteCommentAction | DeleteLineItemAction | DeleteVestingAction | SetFtesAction | SetMonthAction | SetOwnerAction | SetQuoteCurrencyAction | SortAccountsAction | SortLineItemsAction | UpdateAccountAction | UpdateCommentAction | UpdateLineItemAction | UpdateVestingAction;
type BudgetStatus = 'Draft' | 'Escalated' | 'Final' | 'Review';
type CommentAuthorInput = {
    id?: InputMaybe<Scalars['String']>;
    ref?: InputMaybe<Scalars['String']>;
    roleLabel?: InputMaybe<Scalars['String']>;
    username?: InputMaybe<Scalars['String']>;
};
type CommentInput = {
    author?: InputMaybe<CommentAuthorInput>;
    comment: Scalars['String'];
    key?: InputMaybe<Scalars['String']>;
    status?: InputMaybe<BudgetStatus | `${BudgetStatus}`>;
    timestamp?: InputMaybe<Scalars['DateTime']>;
};
type CommentUpdateInput = {
    author?: InputMaybe<CommentAuthorInput>;
    comment?: InputMaybe<Scalars['String']>;
    key: Scalars['String'];
    status?: InputMaybe<BudgetStatus | `${BudgetStatus}`>;
    timestamp?: InputMaybe<Scalars['DateTime']>;
};
type Delete_Account = 'DELETE_ACCOUNT';
type Delete_Audit_Report = 'DELETE_AUDIT_REPORT';
type Delete_Comment = 'DELETE_COMMENT';
type Delete_Line_Item = 'DELETE_LINE_ITEM';
type Delete_Vesting = 'DELETE_VESTING';
type DeleteAccountAction = {
    input: DeleteAccountInput;
    type: Delete_Account | `${Delete_Account}`;
};
type DeleteAccountInput = {
    accounts: Array<Scalars['String']>;
};
type DeleteAuditReportAction = {
    input: DeleteAuditReportInput;
    type: Delete_Audit_Report | `${Delete_Audit_Report}`;
};
type DeleteAuditReportInput = {
    reports: Array<Scalars['String']>;
};
type DeleteCommentAction = {
    input: DeleteCommentInput;
    type: Delete_Comment | `${Delete_Comment}`;
};
type DeleteCommentInput = {
    comments: Array<Scalars['String']>;
};
type DeleteLineItemAction = {
    input: DeleteLineItemInput;
    type: Delete_Line_Item | `${Delete_Line_Item}`;
};
type DeleteLineItemInput = {
    account: Scalars['String'];
    lineItems: Array<LineItemDeleteInput>;
};
type DeleteVestingAction = {
    input: DeleteVestingInput;
    type: Delete_Vesting | `${Delete_Vesting}`;
};
type DeleteVestingInput = {
    vesting: Array<Scalars['String']>;
};
type DocumentFileInput = {
    data: Scalars['String'];
    extension?: InputMaybe<Scalars['String']>;
    fileName?: InputMaybe<Scalars['String']>;
    mimeType: Scalars['String'];
};
type Ftes = {
    __typename?: 'Ftes';
    forecast: Array<FtesForecast>;
    value: Scalars['Float'];
};
type FtesForecast = {
    __typename?: 'FtesForecast';
    month: Scalars['String'];
    value: Scalars['Float'];
};
type FtesForecastInput = {
    month: Scalars['String'];
    value: Scalars['Float'];
};
type FtesInput = {
    forecast: Array<FtesForecastInput>;
    value: Scalars['Float'];
};
type LineItem = {
    __typename?: 'LineItem';
    actual: Maybe<Scalars['Float']>;
    budgetCap: Maybe<Scalars['Float']>;
    category: Maybe<LineItemCategory>;
    comment: Maybe<Scalars['String']>;
    forecast: Array<LineItemForecast>;
    group: Maybe<LineItemGroup>;
    headcountExpense: Scalars['Boolean'];
    payment: Maybe<Scalars['Float']>;
};
type LineItemCategory = {
    __typename?: 'LineItemCategory';
    id: Scalars['String'];
    ref: Scalars['String'];
    title: Scalars['String'];
};
type LineItemDeleteInput = {
    category?: InputMaybe<Scalars['String']>;
    group?: InputMaybe<Scalars['String']>;
};
type LineItemForecast = {
    __typename?: 'LineItemForecast';
    budgetCap: Scalars['Float'];
    month: Scalars['String'];
    value: Scalars['Float'];
};
type LineItemGroup = {
    __typename?: 'LineItemGroup';
    color: Scalars['String'];
    id: Scalars['String'];
    ref: Scalars['String'];
    title: Scalars['String'];
};
type LineItemInput = {
    actual?: InputMaybe<Scalars['Float']>;
    budgetCap?: InputMaybe<Scalars['Float']>;
    category?: InputMaybe<LineItemCategory>;
    comment?: InputMaybe<Scalars['String']>;
    forecast?: InputMaybe<Array<LineItemForecast>>;
    group?: InputMaybe<LineItemGroup>;
    headcountExpense?: InputMaybe<Scalars['Boolean']>;
    payment?: InputMaybe<Scalars['Float']>;
};
type LineItemUpdateInput = {
    actual?: InputMaybe<Scalars['Float']>;
    budgetCap?: InputMaybe<Scalars['Float']>;
    category?: InputMaybe<Scalars['String']>;
    comment?: InputMaybe<Scalars['String']>;
    forecast?: InputMaybe<Array<LineItemForecast>>;
    group?: InputMaybe<Scalars['String']>;
    headcountExpense?: InputMaybe<Scalars['Boolean']>;
    payment?: InputMaybe<Scalars['Float']>;
};
type LineItemsSortInput = {
    category?: InputMaybe<Scalars['String']>;
    group?: InputMaybe<Scalars['String']>;
};
type Owner = {
    __typename?: 'Owner';
    id: Maybe<Scalars['String']>;
    ref: Maybe<Scalars['String']>;
    title: Maybe<Scalars['String']>;
};
type OwnerInput = {
    id?: InputMaybe<Scalars['String']>;
    ref?: InputMaybe<Scalars['String']>;
    title?: InputMaybe<Scalars['String']>;
};
type Set_Ftes = 'SET_FTES';
type Set_Month = 'SET_MONTH';
type Set_Owner = 'SET_OWNER';
type Set_Quote_Currency = 'SET_QUOTE_CURRENCY';
type Sort_Accounts = 'SORT_ACCOUNTS';
type Sort_Line_Items = 'SORT_LINE_ITEMS';
type SetFtesAction = {
    input: FtesInput;
    type: Set_Ftes | `${Set_Ftes}`;
};
type SetMonthAction = {
    input: Scalars['String'];
    type: Set_Month | `${Set_Month}`;
};
type SetOwnerAction = {
    input: OwnerInput;
    type: Set_Owner | `${Set_Owner}`;
};
type SetQuoteCurrencyAction = {
    input: Scalars['String'];
    type: Set_Quote_Currency | `${Set_Quote_Currency}`;
};
type SortAccountsAction = {
    input: SortAccountsInput;
    type: Sort_Accounts | `${Sort_Accounts}`;
};
type SortAccountsInput = {
    accounts: Array<Scalars['String']>;
};
type SortLineItemsAction = {
    input: SortLineItemsInput;
    type: Sort_Line_Items | `${Sort_Line_Items}`;
};
type SortLineItemsInput = {
    account: Scalars['String'];
    lineItems: Array<LineItemsSortInput>;
};
type Update_Account = 'UPDATE_ACCOUNT';
type Update_Comment = 'UPDATE_COMMENT';
type Update_Line_Item = 'UPDATE_LINE_ITEM';
type Update_Vesting = 'UPDATE_VESTING';
type UpdateAccountAction = {
    input: UpdateAccountInput;
    type: Update_Account | `${Update_Account}`;
};
type UpdateAccountInput = {
    accounts: Array<AccountUpdateInput>;
};
type UpdateCommentAction = {
    input: UpdateCommentInput;
    type: Update_Comment | `${Update_Comment}`;
};
type UpdateCommentInput = {
    comments: Array<CommentUpdateInput>;
};
type UpdateLineItemAction = {
    input: UpdateLineItemInput;
    type: Update_Line_Item | `${Update_Line_Item}`;
};
type UpdateLineItemInput = {
    account: Scalars['String'];
    lineItems: Array<LineItemUpdateInput>;
};
type UpdateVestingAction = {
    input: UpdateVestingInput;
    type: Update_Vesting | `${Update_Vesting}`;
};
type UpdateVestingInput = {
    vesting: Array<VestingUpdateInput>;
};
type Vesting = {
    __typename?: 'Vesting';
    amount: Scalars['String'];
    amountOld: Scalars['String'];
    comment: Scalars['String'];
    currency: Scalars['String'];
    date: Scalars['String'];
    key: Scalars['String'];
    vested: Scalars['Boolean'];
};
type VestingInput = {
    amount?: InputMaybe<Scalars['String']>;
    amountOld?: InputMaybe<Scalars['String']>;
    comment?: InputMaybe<Scalars['String']>;
    currency?: InputMaybe<Scalars['String']>;
    date?: InputMaybe<Scalars['String']>;
    key?: InputMaybe<Scalars['String']>;
    vested?: InputMaybe<Scalars['Boolean']>;
};
type VestingUpdateInput = {
    amount?: InputMaybe<Scalars['String']>;
    amountOld?: InputMaybe<Scalars['String']>;
    comment?: InputMaybe<Scalars['String']>;
    currency?: InputMaybe<Scalars['String']>;
    date?: InputMaybe<Scalars['String']>;
    key: Scalars['String'];
    vested?: InputMaybe<Scalars['Boolean']>;
};

/**
 * Represents the state of a budget statement.
 */
type State = BudgetStatementData;
/**
 * Represents a budget statement document, which extends the base Document type.
 */
type BudgetStatementDocument = Document<State, BudgetStatementAction$1>;

type BudgetStatementState = BudgetStatementData;
type ExtendedBudgetStatementState = Document<BudgetStatementState, BudgetStatementAction$1>;

/**
 * Reducer for the BudgetStatement module, which handles operations related to budget statements.
 * @remarks
 * This reducer handles the following actions:
 * - `INIT`: initializes the state of the module.
 * - `ADD_ACCOUNT`: adds an account to the state.
 * - `UPDATE_ACCOUNT`: updates an account in the state.
 * - `DELETE_ACCOUNT`: removes an account from the state.
 * - `ADD_LINE_ITEM`: adds a line item to an account in the state.
 * - `UPDATE_LINE_ITEM`: updates a line item in an account in the state.
 * - `DELETE_LINE_ITEM`: removes a line item from an account in the state.
 * - `SUBMIT_FOR_REVIEW`: updates the status of the budget statement to "Under Review".
 * - `ESCALATE`: escalates the budget statement to a higher authority.
 * - `APPROVE`: approves the budget statement.
 * - `REOPEN_TO_DRAFT`: changes the status of the budget statement to "Draft".
 * - `REOPEN_TO_REVIEW`: changes the status of the budget statement to "Under Review".
 * - `ADD_AUDIT_REPORT`: adds an audit report to an account in the state.
 * - `DELETE_AUDIT_REPORT`: removes an audit report from an account in the state.
 * @param state - The current state of the module.
 * @param action - The action to be performed on the state.
 * @returns The new state after applying the action.
 */
declare const reducer: (state: Document<_acaldas_document_model_graphql_budget_statement.BudgetStatementData, BaseAction | BudgetStatementAction$1>, action: BaseAction | BudgetStatementAction$1) => Document<_acaldas_document_model_graphql_budget_statement.BudgetStatementData, BudgetStatementAction$1>;

/**
 *
 * Creates a new BudgetStatement document with an initial state.
 * @param initialState - The initial state of the document.
 * @returns The new BudgetStatement document.
 */
declare const createBudgetStatement: (initialState?: Partial<Omit<BudgetStatementDocument, 'data'> & {
    data: Partial<BudgetStatementDocument['data']>;
}>) => BudgetStatementDocument;
/**
 * Creates a new Account with default properties and the given input properties.
 * @param input - The input properties of the account.
 * @returns The new Account object.
 */
declare const createAccount: (input: AccountInput$1) => Account;
/**
 * Creates a new LineItem with default properties and the given input properties.
 * @param input - The input properties of the line item.
 * @returns The new LineItem object.
 */
declare const createLineItem: (input: LineItemInput$1) => LineItem$1;
/**
 * Saves the BudgetStatement document to the specified file path.
 * @param document - The BudgetStatement document to save.
 * @param path - The file path to save the document to.
 * @returns  A promise that resolves with the saved file path.
 */
declare const saveBudgetStatementToFile: (document: BudgetStatementDocument, path: string, name?: string) => Promise<string>;
/**
 * Loads the BudgetStatement document from the specified file path.
 * @param path - The file path to load the document from.
 * @returns A promise that resolves with the loaded BudgetStatement document.
 */
declare const loadBudgetStatementFromFile: (path: string) => Promise<BudgetStatementDocument>;
declare const loadBudgetStatementFromInput: (input: FileInput) => Promise<BudgetStatementDocument>;
declare const saveBudgetStatementToFileHandle: (document: BudgetStatementDocument, input: FileSystemFileHandle) => Promise<void>;

declare const utils_createAccount: typeof createAccount;
declare const utils_createBudgetStatement: typeof createBudgetStatement;
declare const utils_createLineItem: typeof createLineItem;
declare const utils_loadBudgetStatementFromFile: typeof loadBudgetStatementFromFile;
declare const utils_loadBudgetStatementFromInput: typeof loadBudgetStatementFromInput;
declare const utils_saveBudgetStatementToFile: typeof saveBudgetStatementToFile;
declare const utils_saveBudgetStatementToFileHandle: typeof saveBudgetStatementToFileHandle;
declare namespace utils {
  export {
    utils_createAccount as createAccount,
    utils_createBudgetStatement as createBudgetStatement,
    utils_createLineItem as createLineItem,
    utils_loadBudgetStatementFromFile as loadBudgetStatementFromFile,
    utils_loadBudgetStatementFromInput as loadBudgetStatementFromInput,
    utils_saveBudgetStatementToFile as saveBudgetStatementToFile,
    utils_saveBudgetStatementToFileHandle as saveBudgetStatementToFileHandle,
  };
}

/**
 * Account related methods and getters
 */
declare class AccountObject extends BaseDocument<State, BudgetStatementAction$1> {
    /**
     * Adds one or more accounts to the budget statement.
     * @param accounts An array of AccountInput objects to add.
     *
     * @group Account
     */
    addAccount(accounts: AccountInput$1[]): this;
    /**
     * Updates one or more existing accounts in the budget statement.
     * @param accounts An array of AccountInput objects to update.
     *
     * @group Account
     */
    updateAccount(accounts: AccountUpdateInput$1[]): this;
    /**
     * Deletes one or more accounts from the budget statement.
     * @param accounts An array of addresses of the accounts to delete.
     *
     * @group Account
     */
    deleteAccount(accounts: Account['address'][]): this;
    /**
     * Sorts the accounts inthe budget statement.
     * @param accounts An array of addresses of the accounts to sort.
     *
     * @group Account
     */
    sortAccounts(accounts: Account['address'][]): this;
    /**
     * Returns an array of all accounts in the budget statement.
     *
     * @group Account
     */
    get accounts(): Account[];
    /**
     * Returns the Account object with the specified address.
     * @param address The address of the Account to retrieve.
     *
     * @group Account
     */
    getAccount(address: Account['address']): Account | undefined;
}

declare class AuditObject extends BaseDocument<State, BudgetStatementAction$1> {
    /**
     * Adds audit reports to the budget statement.
     * @param reports - An array of audit report objects to add.
     *
     * @group Audit
     */
    addAuditReport(reports: {
        timestamp?: string;
        status: AuditReportStatus$1;
        report: DocumentFile;
    }[]): this;
    /**
     * Deletes audit reports from the budget statement.
     * @param reports - An array of objects that contain the report attachment name of the audits items to be deleted.
     *
     * @group Audit
     */
    deleteAuditReport(reports: AuditReport$1['report'][]): this;
    /**
     * Retrieves all audit reports from the budget statement.
     * @returns An array of audit report objects.
     *
     * @group Audit
     */
    getAuditReports(): AuditReport$1[];
    /**
     * Retrieves a specific audit report from the budget statement.
     * @param report - The name of the attachment of the report to be retrieved.
     * @returns The audit report object if it exists, or undefined if not.
     *
     * @group Audit
     */
    getAuditReport(report: AuditReport$1['report']): AuditReport$1 | undefined;
}

declare class BaseObject extends BaseDocument<State, BudgetStatementAction$1> {
    /**
     * Gets the month of the budget statement.
     * @category Budget Statement
     */
    get month(): _acaldas_document_model_graphql_budget_statement.Maybe<string>;
    /**
     * Gets the owner of the budget statement.
     * @category Budget Statement
     */
    get owner(): _acaldas_document_model_graphql_budget_statement.Maybe<Owner>;
    /**
     * Gets the quote currency of the budget statement.
     * @category Budget Statement
     */
    get quoteCurrency(): _acaldas_document_model_graphql_budget_statement.Maybe<string>;
    get ftes(): _acaldas_document_model_graphql_budget_statement.Maybe<Ftes>;
    setOwner(owner: OwnerInput$1): this;
    setMonth(month: string): this;
    setQuoteCurrency(currency: string): this;
    setFtes(ftes: FtesInput$1): this;
}

declare class CommentObject extends BaseDocument<State, BudgetStatementAction$1> {
    addComment(comments: CommentInput$1[]): this;
    updateComment(comments: CommentUpdateInput$1[]): this;
    deleteComment(comments: string[]): this;
    get comments(): _acaldas_document_model_graphql_budget_statement.Comment[];
    getComment(key: string): _acaldas_document_model_graphql_budget_statement.Comment | undefined;
}

declare class LineItemObject extends BaseDocument<State, BudgetStatementAction$1> {
    /**
     * Adds a line item to the specified account.
     * @param account The address of the account to which the line item will be added.
     * @param lineItems An array of line item objects to be added to the account.
     *
     * @group Line Item
     */
    addLineItem(account: Account['address'], lineItems: (Partial<LineItem$1> & Pick<LineItem$1, 'category' | 'group'>)[]): this;
    /**
     * Updates line items for the specified account.
     * @param account The address of the account for which line items will be updated.
     * @param lineItems An array of line item input objects to be updated.
     *
     * @group Line Item
     */
    updateLineItem(account: Account['address'], lineItems: LineItemUpdateInput$1[]): this;
    /**
     * Deletes line items for the specified account.
     * @param account The address of the account for which line items will be deleted.
     * @param lineItems An array of objects that contain the category and group of the line items to be deleted.
     *
     * @group Line Item
     */
    deleteLineItem(account: Account['address'], lineItems: LineItemDeleteInput$1[]): this;
    /**
     * Sorts the line items of an account.
     *
     * @param account - The account containing the line items to sort.
     * @param lineItems - An array of line items to sort.
     * @group Line Item
     */
    sortLineItems(account: Account['address'], lineItems: LineItemsSortInput$1[]): this;
    /**
     * Retrieves line items for the specified account.
     * @param account The address of the account for which line items will be retrieved.
     * @returns An array of line item objects for the specified account, or undefined if the account does not exist.
     *
     * @group Line Item
     */
    getLineItems(account: Account['address']): LineItem$1[] | undefined;
    /**
     * Retrieves a specific line item for the specified account.
     * @param account The address of the account for which the line item will be retrieved.
     * @param lineItem An object that contains the category and group of the line item to be retrieved.
     * @returns The line item object that matches the specified category and group, or undefined if it does not exist.
     *
     * @group Line Item
     */
    getLineItem(account: Account['address'], lineItem: LineItemDeleteInput$1): LineItem$1 | undefined;
}

declare class VestingObject extends BaseDocument<State, BudgetStatementAction$1> {
    addVesting(vesting: VestingInput$1[]): this;
    updateVesting(vesting: VestingUpdateInput$1[]): this;
    deleteVesting(vesting: string[]): this;
    get vesting(): Vesting[];
    getVesting(key: string): Vesting | undefined;
}

/**
 * Represents a BudgetStatement object that extends the {@link BaseDocument} class to provide a convenient
 * interface for managing a budget statement.
 */
interface BudgetStatement$2 extends AccountObject, AuditObject, CommentObject, BaseObject, LineItemObject, VestingObject {
}
/**
 * Represents a budget statement document.
 *
 * @extends BaseDocument<State, BudgetStatementAction>
 * @module
 */
declare class BudgetStatement$2 extends BaseDocument<State, BudgetStatementAction$1> {
    /**
     * The file extension used to save budget statements.
     */
    static fileExtension: string;
    /**
     *
     * Creates a new BudgetStatement instance.
     * @param initialState - An optional object representing the initial state of the BudgetStatement.
     */
    constructor(initialState?: Partial<Omit<BudgetStatementDocument, 'data'> & {
        data: Partial<BudgetStatementDocument['data']>;
    }>);
    /**
     * Saves the budget statement to a file.
     *
     * @param path The path to the file to save.
     * @returns A promise that resolves when the save operation completes.
     */
    saveToFile(path: string, name?: string): Promise<string>;
    /**
     * Loads the budget statement from a file.
     *
     * @param path The path to the file to load.
     * @returns A promise that resolves with the loaded `BudgetStatement` instance.
     */
    loadFromFile(path: string): Promise<void>;
    /**
     * Creates a new `BudgetStatement` instance from a file.
     *
     * @param path The path to the file to load.
     * @returns A promise that resolves with the loaded `BudgetStatement` instance.
     */
    static fromFile(path: string): Promise<BudgetStatement$2>;
}

declare const BudgetStatement: typeof BudgetStatement$2;
declare const actions: {
    addAccount: (accounts: AccountInput[]) => _acaldas_document_model_graphql_budget_statement.AddAccountAction;
    updateAccount: (accounts: _acaldas_document_model_graphql_budget_statement.AccountUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateAccountAction;
    deleteAccount: (accounts: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteAccountAction;
    sortAccounts: (accounts: string[]) => _acaldas_document_model_graphql_budget_statement.SortAccountsAction;
    addAuditReport: (reports: {
        timestamp?: string | undefined;
        status: AuditReportStatus;
        report: DocumentFile;
    }[]) => _acaldas_document_model_graphql_budget_statement.AddAuditReportAction;
    deleteAuditReport: (reports: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteAuditReportAction;
    setOwner: (owner: OwnerInput) => _acaldas_document_model_graphql_budget_statement.SetOwnerAction;
    setMonth: (month: string) => _acaldas_document_model_graphql_budget_statement.SetMonthAction;
    setQuoteCurrency: (currency: string) => _acaldas_document_model_graphql_budget_statement.SetQuoteCurrencyAction;
    setFtes: (ftes: FtesInput) => _acaldas_document_model_graphql_budget_statement.SetFtesAction;
    addComment: (comments: CommentInput[]) => _acaldas_document_model_graphql_budget_statement.AddCommentAction;
    updateComment: (comments: _acaldas_document_model_graphql_budget_statement.CommentUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateCommentAction;
    deleteComment: (comments: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteCommentAction;
    addLineItem: (account: string, lineItems: (Partial<LineItem> & Pick<LineItem, "category" | "group">)[]) => _acaldas_document_model_graphql_budget_statement.AddLineItemAction;
    updateLineItem: (account: string, lineItems: _acaldas_document_model_graphql_budget_statement.LineItemUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateLineItemAction;
    deleteLineItem: (account: string, lineItems: _acaldas_document_model_graphql_budget_statement.LineItemDeleteInput[]) => _acaldas_document_model_graphql_budget_statement.DeleteLineItemAction;
    sortLineItems: (account: string, lineItems: _acaldas_document_model_graphql_budget_statement.LineItemsSortInput[]) => _acaldas_document_model_graphql_budget_statement.SortLineItemsAction;
    addVesting: (vesting: VestingInput[]) => _acaldas_document_model_graphql_budget_statement.AddVestingAction;
    updateVesting: (vesting: VestingUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateVestingAction;
    deleteVesting: (vesting: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteVestingAction;
    setName: (name: string) => _acaldas_document_model_graphql_document.SetNameAction;
    undo: (count?: number) => _acaldas_document_model_graphql_document.UndoAction;
    redo: (count?: number) => _acaldas_document_model_graphql_document.RedoAction;
    prune: (start?: number | undefined, end?: number | undefined) => _acaldas_document_model_graphql_document.PruneAction;
    loadState: (state: Pick<Document<unknown, Action<string, unknown>>, "name" | "data">, operations: number) => _acaldas_document_model_graphql_document.LoadStateAction;
};
declare const _default: {
    actions: {
        addAccount: (accounts: AccountInput[]) => _acaldas_document_model_graphql_budget_statement.AddAccountAction;
        updateAccount: (accounts: _acaldas_document_model_graphql_budget_statement.AccountUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateAccountAction;
        deleteAccount: (accounts: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteAccountAction;
        sortAccounts: (accounts: string[]) => _acaldas_document_model_graphql_budget_statement.SortAccountsAction;
        addAuditReport: (reports: {
            timestamp?: string | undefined;
            status: AuditReportStatus;
            report: DocumentFile;
        }[]) => _acaldas_document_model_graphql_budget_statement.AddAuditReportAction;
        deleteAuditReport: (reports: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteAuditReportAction;
        setOwner: (owner: OwnerInput) => _acaldas_document_model_graphql_budget_statement.SetOwnerAction;
        setMonth: (month: string) => _acaldas_document_model_graphql_budget_statement.SetMonthAction;
        setQuoteCurrency: (currency: string) => _acaldas_document_model_graphql_budget_statement.SetQuoteCurrencyAction;
        setFtes: (ftes: FtesInput) => _acaldas_document_model_graphql_budget_statement.SetFtesAction;
        addComment: (comments: CommentInput[]) => _acaldas_document_model_graphql_budget_statement.AddCommentAction;
        updateComment: (comments: _acaldas_document_model_graphql_budget_statement.CommentUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateCommentAction;
        deleteComment: (comments: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteCommentAction;
        addLineItem: (account: string, lineItems: (Partial<LineItem> & Pick<LineItem, "category" | "group">)[]) => _acaldas_document_model_graphql_budget_statement.AddLineItemAction;
        updateLineItem: (account: string, lineItems: _acaldas_document_model_graphql_budget_statement.LineItemUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateLineItemAction;
        deleteLineItem: (account: string, lineItems: _acaldas_document_model_graphql_budget_statement.LineItemDeleteInput[]) => _acaldas_document_model_graphql_budget_statement.DeleteLineItemAction;
        sortLineItems: (account: string, lineItems: _acaldas_document_model_graphql_budget_statement.LineItemsSortInput[]) => _acaldas_document_model_graphql_budget_statement.SortLineItemsAction;
        addVesting: (vesting: VestingInput[]) => _acaldas_document_model_graphql_budget_statement.AddVestingAction;
        updateVesting: (vesting: VestingUpdateInput[]) => _acaldas_document_model_graphql_budget_statement.UpdateVestingAction;
        deleteVesting: (vesting: string[]) => _acaldas_document_model_graphql_budget_statement.DeleteVestingAction;
        setName: (name: string) => _acaldas_document_model_graphql_document.SetNameAction;
        undo: (count?: number) => _acaldas_document_model_graphql_document.UndoAction;
        redo: (count?: number) => _acaldas_document_model_graphql_document.RedoAction;
        prune: (start?: number | undefined, end?: number | undefined) => _acaldas_document_model_graphql_document.PruneAction;
        loadState: (state: Pick<Document<unknown, Action<string, unknown>>, "name" | "data">, operations: number) => _acaldas_document_model_graphql_document.LoadStateAction;
    };
    reducer: (state: Document<_acaldas_document_model_graphql_budget_statement.BudgetStatementData, BaseAction | BudgetStatementAction>, action: BaseAction | BudgetStatementAction) => Document<_acaldas_document_model_graphql_budget_statement.BudgetStatementData, BudgetStatementAction>;
    utils: typeof utils;
    BudgetStatement: typeof BudgetStatement$2;
};

declare const BudgetStatement$1_Account: typeof Account;
declare const BudgetStatement$1_BudgetStatement: typeof BudgetStatement;
type BudgetStatement$1_BudgetStatementDocument = BudgetStatementDocument;
type BudgetStatement$1_BudgetStatementState = BudgetStatementState;
declare const BudgetStatement$1_Comment: typeof Comment;
type BudgetStatement$1_ExtendedBudgetStatementState = ExtendedBudgetStatementState;
type BudgetStatement$1_State = State;
declare const BudgetStatement$1_actions: typeof actions;
declare const BudgetStatement$1_reducer: typeof reducer;
declare const BudgetStatement$1_utils: typeof utils;
declare namespace BudgetStatement$1 {
  export {
    BudgetStatement$1_Account as Account,
    AccountInput$1 as AccountInput,
    AuditReport$1 as AuditReport,
    AuditReportInput$1 as AuditReportInput,
    AuditReportStatus$1 as AuditReportStatus,
    BudgetStatement$1_BudgetStatement as BudgetStatement,
    BudgetStatementAction$1 as BudgetStatementAction,
    BudgetStatement$1_BudgetStatementDocument as BudgetStatementDocument,
    BudgetStatement$1_BudgetStatementState as BudgetStatementState,
    BudgetStatus$1 as BudgetStatus,
    BudgetStatement$1_Comment as Comment,
    CommentInput$1 as CommentInput,
    BudgetStatement$1_ExtendedBudgetStatementState as ExtendedBudgetStatementState,
    Ftes$1 as Ftes,
    FtesInput$1 as FtesInput,
    LineItem$1 as LineItem,
    LineItemInput$1 as LineItemInput,
    Owner$1 as Owner,
    OwnerInput$1 as OwnerInput,
    BudgetStatement$1_State as State,
    Vesting$1 as Vesting,
    VestingInput$1 as VestingInput,
    VestingUpdateInput$1 as VestingUpdateInput,
    BudgetStatement$1_actions as actions,
    _default as default,
    BudgetStatement$1_reducer as reducer,
    index_d as types,
    BudgetStatement$1_utils as utils,
  };
}

export { BudgetStatement$1 as B, ExtendedBudgetStatementState as E, State as S, _default as _, BudgetStatement as a, actions as b, BudgetStatementState as c, BudgetStatementDocument as d, reducer as r, utils as u };
