import type { NamedBean } from '../context/bean';
import { BeanStub } from '../context/beanStub';
import type { BeanCollection } from '../context/context';
import type { AgColumn } from '../entities/agColumn';
import type { CellValueResolveFrom } from '../interfaces/iEditService';
import type { IRowNode } from '../interfaces/iRowNode';
/** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */
export declare class ValueService extends BeanStub implements NamedBean {
    beanName: "valueSvc";
    private isTreeData;
    private isSsrm;
    private cellExpressions;
    private groupSuppressBlankHeader;
    private editSvc;
    private valueCache;
    private colModel;
    private expressionSvc;
    private dataTypeSvc;
    private formula;
    private showValuesAsSvc;
    private formulaDataSvc;
    private changeDetectionSvc;
    private showRowGroupColValueSvc;
    private rowGroupingEditValueSvc;
    private frameworkOverrides;
    private gridApi;
    private gridOptions;
    wireBeans(beans: BeanCollection): void;
    /** Called by both wireBeans and postConstruct */
    private init;
    postConstruct(): void;
    /**
     * Use this function to get a displayable cell value.
     * The values from this function are not used for sorting, filtering, or aggregation purposes.
     * Handles: groupHideOpenParents, showOpenedGroup and groupSuppressBlankHeader behaviours
     */
    getValueForDisplay(params: {
        column?: AgColumn;
        node: IRowNode;
        includeValueFormatted?: boolean;
        useRawFormula?: boolean;
        exporting?: boolean;
        from: CellValueResolveFrom;
        transformValues?: boolean;
    }): {
        value: any;
        valueFormatted: string | null;
    };
    /**
     * The cell's displayed value with the Show Values As transform applied, or the raw value when no mode is
     * active or applying. Reads pending edits like the display path, then resolves formulas / calculated columns.
     * Leaner than {@link getValueForDisplay} — no group-cell, full-width, or formatting work.
     */
    getTransformedValue(column: AgColumn, node: IRowNode): any;
    /** Resolves a formula/calculated value then applies the Show Values As transform when a mode is applying;
     *  otherwise returns the (formula-resolved) value. Shared by the display + transformed read paths. */
    private resolveTransformed;
    /**
     * Display value only — same resolution as {@link getValueForDisplay} but returns the bare value,
     * skipping formatting and the result-object allocation. For callers that never read `valueFormatted`.
     */
    getDisplayValue(column: AgColumn | undefined, node: IRowNode, from: CellValueResolveFrom, transformValues: boolean): any;
    getValueFromData(column: AgColumn, rowNode: IRowNode, ignoreAggData?: boolean): any;
    /**
     * Reads a cell value honouring pending edits for non-`'data'` sources. Does NOT redirect pivot result
     * columns — display/selection callers only ever pair them with group rows (no redirect needed). The
     * value APIs that accept an arbitrary node ({@link getCellValue}, {@link getDataValue}) pre-resolve via
     * `_resolvePivotColumnForRow` since they can be handed a leaf. Hot committed-data reads of a known column
     * should call {@link getValueFromData} directly to skip the edit-state lookup too.
     */
    getValue(column: AgColumn, rowNode: IRowNode | null | undefined, from: CellValueResolveFrom, ignoreAggData?: boolean): any;
    /** Whether to ignore aggregation data for display. Callers must pass a group node (guard on `node.group`). */
    displayIgnoresAggData(node: IRowNode): boolean;
    /** The Show Values As service iff `column`'s active mode is currently transforming (not dormant) for display.
     *  `column.showValuesAs` is null for every ordinary column, so this is a no-op outside the feature. */
    private transformingSvc;
    private resolveCoreValue;
    parseValue<TValueNew = any, TValueOld = any, TValue = any>(column: AgColumn, rowNode: IRowNode | null, newValue: TValueNew, oldValue: TValueOld): TValue;
    getDeleteValue(column: AgColumn, rowNode: IRowNode): any;
    formatValue(column: AgColumn, node: IRowNode | null, value: any, suppliedFormatter?: (value: any) => string, useFormatterFromColumn?: boolean): string | null;
    /**
     * Formats a Show Values As value with the selected mode's formatter, mirroring {@link getValueForDisplay}: a
     * dormant mode (selected but not applicable) passes `notApplicable` so the built-in formatters show `#N/A`.
     * Returns `undefined` when the column has no selected mode — the caller then falls back to {@link formatValue}.
     * Kept off {@link formatValue} so the hot per-cell format path is not burdened with the feature check.
     */
    formatTransformedValue(column: AgColumn, node: IRowNode | null, value: any): string | null | undefined;
    /**
     * Sets the value of a GridCell
     * @param rowNode The `RowNode` to be updated
     * @param column The `Column` to be updated
     * @param newValue The new value to be set
     * @param eventSource The event source
     * @returns `true` if the value has been updated, otherwise `false`.
     */
    setValue(rowNode: IRowNode, column: AgColumn, newValue: any, eventSource?: string): boolean;
    private finishValueChange;
    private isSetValueSupported;
    private handleExternalFormulaChange;
    private computeValueChange;
    private dispatchCellValueChangedEvent;
    private callColumnCellValueChangedHandler;
    private executeValueGetter;
    private getValueCallback;
    getKeyForNode(col: AgColumn, rowNode: IRowNode): any;
}
