import { KosContext } from '../context';
/**
 * @kosService core.extension
 * @kosApiLevel 2
 */
export interface ExtensionPointOptions {
    extension: string;
}
/**
 * @kosService core.extension
 * @kosApiLevel 2
 */
export interface InitializeContextExtensionPointOptions extends ExtensionPointOptions {
    context?: KosContext;
}
/**
 * @kosService core.extension
 * @kosApiLevel 2
 */
export interface ContextDataExtensionPoint<D extends object, T extends object> extends ExtensionPointOptions {
    data: D;
    contextData: T;
}
/**
 * Executes an extension point and adds the value to the specified context
 * @param options The options for the extension point
 * @param options.context The KOS model context to add the value to. If not specified, the value will not be added to any context.
 * @param options.extension The extension point to execute
 *
 * @returns The value returned from the extension point
 * */
/**
 * @kosService core.extension
 * @kosApiLevel 2
 */
export declare const executeLoaderExtension: ({ context, extension, }: InitializeContextExtensionPointOptions) => Promise<any>;
/**
 * Executes a registered data transformation extension point.  This extension point is used to transform data from the backend into a format that is
 * usable by the application.
 *
 * @param options The options for the extension point
 * @param options.contextData The context data to pass to the extension point
 * @param options.data The data to transform
 * @param options.extension The extension point to execute
 * @returns The transformed data
 * */
/**
 * @kosService core.extension
 * @kosApiLevel 2
 */
export declare const executeDataMapperExtension: <D extends object = any, R extends object = any, T extends object = any>({ extension, contextData, data, }: ContextDataExtensionPoint<D, T>) => Promise<R>;
/**
 * Executes a registered data transformation extension point. This extension point is used to map a single property value and
 * is typically used to map a property value from the backend into a format that is usable by the application.
 *
 *
 * @param options The options for the extension point
 * @param options.contextData The context data to pass to the extension point
 * @param options.data The data to transform
 * @param options.extension The extension point to execute
 * @returns The transformed data
 * */
/**
 * @kosService core.extension
 * @kosApiLevel 2
 */
export declare const executePropertyMapperExtension: <D extends object = any, T extends object = any>({ extension, contextData, data, }: ContextDataExtensionPoint<D, T>) => Promise<any>;
//# sourceMappingURL=initialize-extension.d.ts.map