import type { BaseClientOptions, BaseRequestOptions } from "../../../../../../BaseClient";
import { type NormalizedClientOptionsWithAuth } from "../../../../../../BaseClient";
import * as core from "../../../../../../core";
import type * as Merge from "../../../../../index";
export declare namespace ExpenseReportsClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class ExpenseReportsClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<ExpenseReportsClient.Options>;
    constructor(options: ExpenseReportsClient.Options);
    /**
     * Returns a list of `ExpenseReport` objects.
     *
     * @param {Merge.accounting.ExpenseReportsListRequest} request
     * @param {ExpenseReportsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.accounting.expenseReports.list({
     *         companyId: "company_id",
     *         createdAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         createdBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
     *         includeDeletedData: true,
     *         includeRemoteData: true,
     *         includeRemoteFields: true,
     *         includeShellData: true,
     *         modifiedAfter: new Date("2024-01-15T09:30:00.000Z"),
     *         modifiedBefore: new Date("2024-01-15T09:30:00.000Z"),
     *         pageSize: 1,
     *         remoteId: "remote_id"
     *     })
     */
    list(request?: Merge.accounting.ExpenseReportsListRequest, requestOptions?: ExpenseReportsClient.RequestOptions): Promise<core.Page<Merge.accounting.ExpenseReport, Merge.accounting.PaginatedExpenseReportList>>;
    /**
     * Creates an `ExpenseReport` object with the given values.
     *
     * @param {Merge.accounting.ExpenseReportEndpointRequest} request
     * @param {ExpenseReportsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.accounting.expenseReports.create({
     *         isDebugMode: true,
     *         runAsync: true,
     *         model: {
     *             trackingCategories: ["a1b2c3d4-e5f6-4a5b-9c3d-2e1f0a9b8c7d", "d4c3b2a1-9e8f-7g6h-5i4j-3k2l1m0n9o8p"]
     *         }
     *     })
     */
    create(request: Merge.accounting.ExpenseReportEndpointRequest, requestOptions?: ExpenseReportsClient.RequestOptions): core.HttpResponsePromise<Merge.accounting.ExpenseReportResponse>;
    private __create;
    /**
     * Returns a list of `ExpenseReportLine` objects that point to a `ExpenseReport` with the given id.
     *
     * @param {string} expense_report_id
     * @param {Merge.accounting.ExpenseReportsLinesListRequest} request
     * @param {ExpenseReportsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.accounting.expenseReports.linesList("expense_report_id", {
     *         cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
     *         includeDeletedData: true,
     *         includeRemoteData: true,
     *         includeRemoteFields: true,
     *         includeShellData: true,
     *         pageSize: 1
     *     })
     */
    linesList(expense_report_id: string, request?: Merge.accounting.ExpenseReportsLinesListRequest, requestOptions?: ExpenseReportsClient.RequestOptions): Promise<core.Page<Merge.accounting.ExpenseReportLine, Merge.accounting.PaginatedExpenseReportLineList>>;
    /**
     * Returns an `ExpenseReport` object with the given `id`.
     *
     * @param {string} id
     * @param {Merge.accounting.ExpenseReportsRetrieveRequest} request
     * @param {ExpenseReportsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.accounting.expenseReports.retrieve("id", {
     *         includeRemoteData: true,
     *         includeRemoteFields: true,
     *         includeShellData: true
     *     })
     */
    retrieve(id: string, request?: Merge.accounting.ExpenseReportsRetrieveRequest, requestOptions?: ExpenseReportsClient.RequestOptions): core.HttpResponsePromise<Merge.accounting.ExpenseReport>;
    private __retrieve;
    /**
     * Returns a list of `RemoteFieldClass` objects.
     *
     * @param {Merge.accounting.ExpenseReportsLinesRemoteFieldClassesListRequest} request
     * @param {ExpenseReportsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.accounting.expenseReports.linesRemoteFieldClassesList({
     *         cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
     *         includeDeletedData: true,
     *         includeRemoteData: true,
     *         includeShellData: true,
     *         isCommonModelField: true,
     *         isCustom: true,
     *         pageSize: 1
     *     })
     */
    linesRemoteFieldClassesList(request?: Merge.accounting.ExpenseReportsLinesRemoteFieldClassesListRequest, requestOptions?: ExpenseReportsClient.RequestOptions): Promise<core.Page<Merge.accounting.RemoteFieldClass, Merge.accounting.PaginatedRemoteFieldClassList>>;
    /**
     * Returns metadata for `ExpenseReport` POSTs.
     *
     * @param {ExpenseReportsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.accounting.expenseReports.metaPostRetrieve()
     */
    metaPostRetrieve(requestOptions?: ExpenseReportsClient.RequestOptions): core.HttpResponsePromise<Merge.accounting.MetaResponse>;
    private __metaPostRetrieve;
    /**
     * Returns a list of `RemoteFieldClass` objects.
     *
     * @param {Merge.accounting.ExpenseReportsRemoteFieldClassesListRequest} request
     * @param {ExpenseReportsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @example
     *     await client.accounting.expenseReports.remoteFieldClassesList({
     *         cursor: "cD0yMDIxLTAxLTA2KzAzJTNBMjQlM0E1My40MzQzMjYlMkIwMCUzQTAw",
     *         includeDeletedData: true,
     *         includeRemoteData: true,
     *         includeShellData: true,
     *         isCommonModelField: true,
     *         isCustom: true,
     *         pageSize: 1
     *     })
     */
    remoteFieldClassesList(request?: Merge.accounting.ExpenseReportsRemoteFieldClassesListRequest, requestOptions?: ExpenseReportsClient.RequestOptions): Promise<core.Page<Merge.accounting.RemoteFieldClass, Merge.accounting.PaginatedRemoteFieldClassList>>;
}
