import { CustomSharedEntity, SharedEntity } from '../AdaptableState/TeamSharingState';
import { BaseContext } from '../AdaptableState/Common/BaseContext';
/**
 * Options for managing Team Sharing - which enables Adaptable Objects to be shared between colleagues
 */
export interface TeamSharingOptions {
    /**
     * Whether Team Sharing is enabled
     *
     * @defaultValue false
     * @gridInfoItem
     */
    enableTeamSharing: boolean;
    /**
     * (Async) Loads available Shared Entities - user can download and auto-merge with Adaptable State
     *
     * @defaultValue null
     */
    loadSharedEntities: (context: SharedEntitiesContext) => Promise<SharedEntity[]>;
    /**
     * Allows hooking into Shared Entities loading process
     */
    applySharedEntities?: (sharedEntities: SharedEntity[], context: SharedEntitiesContext) => SharedEntity[];
    /**
     * (Async) Persists Shared Entities so that they can be downloaded by other team members
     *
     * @defaultValue null
     */
    persistSharedEntities: (sharedEntities: SharedEntity[], context: SharedEntitiesContext) => Promise<void>;
    /**
     * Allows hooking into Shared Entities persistence process
     */
    saveSharedEntities?: (sharedEntities: SharedEntity[], context: SharedEntitiesContext) => SharedEntity[];
    /**
     * Handles import of Custom Shared Entities
     */
    handleCustomSharedEntityImport?: (sharedEntity: CustomSharedEntity, context: SharedEntitiesContext) => void;
    /**
     * Frequency (in minutes) to check if Active Shared Entities have a newer revision
     *
     * @defaultValue 0 (never)
     * @gridInfoItem
     */
    updateInterval?: number;
    /**
     * How user is informed when Active Shared Entities have newer revisions
     *
     * @defaultValue null (none)
     * @gridInfoItem
     */
    updateNotification?: 'Alert' | 'AlertWithNotification' | 'SystemStatus';
    /**
     * Whether to show update notification once per update
     * @defaultValue false
     */
    showUpdateNotificationOncePerUpdate?: boolean;
    /**
     * Suppress warning when an Import overrides existing Adaptable State item
     *
     * @defaultValue false
     * @gridInfoItem
     */
    suppressOverrideConfigWarning?: boolean;
}
/**
 * Context provided to `TeamSharingOptions.loadSharedEntities()` callback
 */
export interface SharedEntitiesContext extends BaseContext {
}
