import { AirtableInterface } from "../types/airtable_interface";
import { ModelChange } from "../types/base";
import { Mutation, PartialMutation, PermissionCheckResult } from "../types/mutations";
import { GlobalConfigUpdate } from "../types/global_config";
import Sdk from "../sdk";
import Session from "./session";
import Base from "./base";
import Field from "./field";
/** @internal */
declare class Mutations {
    /** @internal */
    _airtableInterface: AirtableInterface;
    /** @internal */
    _session: Session;
    /** @internal */
    _sdk: Sdk;
    /** @internal */
    _base: Base;
    /** @internal */
    _applyModelChanges: (arg1: Array<ModelChange>) => void;
    /** @internal */
    _applyGlobalConfigUpdates: (arg1: ReadonlyArray<GlobalConfigUpdate>) => void;
    /** @hidden */
    constructor(sdk: Sdk, session: Session, base: Base, applyModelChanges: (arg1: ReadonlyArray<ModelChange>) => void, applyGlobalConfigUpdates: (arg1: ReadonlyArray<GlobalConfigUpdate>) => void);
    /** @hidden */
    applyMutationAsync(mutation: Mutation): Promise<void>;
    /** @hidden */
    checkPermissionsForMutation(mutation: PartialMutation): PermissionCheckResult;
    /** @internal */
    _assertMutationUnderLimits(mutation: Mutation): void;
    /** @internal */
    _doesMutationExceedBatchSizeLimit(mutation: Mutation): boolean;
    /** @internal */
    _assertFieldIsValidForMutation(field: Field): void;
    /** @internal */
    _assertMutationIsValid(mutation: Mutation): void;
    /** @internal */
    _applyOptimisticUpdatesForMutation(mutation: Mutation): boolean;
    /** @internal */
    _getOptimisticModelChangesForMutation(mutation: Mutation): Array<ModelChange>;
}
export default Mutations;
