import type { AgEvent } from './agEvent'; import type { BaseProperties } from './baseProperties'; import type { WithoutCommon } from './iEvent'; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export type AgPropertyChangedSource = 'api' | 'optionsUpdated'; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface AgPropertyChangeSet { /** Unique id which can be used to link changes of multiple properties that were updated together. * i.e a user updated multiple properties at the same time. */ id: number; /** All the properties that have been updated in this change set */ properties: (keyof TProperties)[]; } export interface AgPropertyChangedEvent extends AgEvent { type: 'propertyChanged'; changeSet: AgPropertyChangeSet | undefined; source: AgPropertyChangedSource; } /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export type AgPropertyKey = keyof TProperties & string; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface AgPropertyValueChangedEvent> extends AgEvent { type: K; changeSet: AgPropertyChangeSet | undefined; currentValue: TProperties[K]; previousValue: TProperties[K]; source: AgPropertyChangedSource; } export type AgPropertyChangedListener = (event: AgPropertyChangedEvent) => void; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export type AgPropertyValueChangedListener> = (event: AgPropertyValueChangedEvent) => void; /** @internal AG_GRID_INTERNAL - Not for public use. Can change / be removed at any time. */ export interface IPropertiesService { readonly beanName: 'gos'; addPropertyEventListener(event: K, listener: AgPropertyValueChangedListener): void; removePropertyEventListener(event: K, listener: AgPropertyValueChangedListener): void; get>(property: K): TProperties[K]; addCommon(params: WithoutCommon): T; setInstanceDomData(element: HTMLElement): void; isElementInThisInstance(element: HTMLElement): boolean; }