import { PlainVersionedObject } from '../../base/versioned-object';
import { RpcBaseData } from '../rpc-base';
/**
 * RPC settings request name and version.
 */
export declare class RpcSettingsKey {
    static command: string;
    static version: string;
}
/**
 * Identifies the scope that these settings have
 */
export declare enum RpcSettingsScope {
    /**
     * User Settings Scope
     */
    User = 0,
    /**
     * Application Settings Scope (All Users)
     */
    Application = 1,
    /**
     * Admin Settings Scope (All Users Read/Admin Write)
     */
    Admin = 2
}
/**
 * Identifies the type of provider that owns these settings
 */
export declare enum RpcSettingsProviderType {
    /**
     * Common provider type, indicates that these settings are owned by the common provider (shell)
     */
    Common = 0,
    /**
     * Extension access type, indicates that these settings are owned by the current extension
     */
    Extension = 1
}
/**
 * Identifies the user profile operation type to preform
 */
export declare enum RpcSettingsOperationType {
    /**
     * Get Operation Type
     */
    Get = 0,
    /**
     * Set Operation Type
     */
    Set = 1
}
/**
 * Rpc Settings data.
 */
export interface RpcSettings extends RpcBaseData {
    /**
     * Type of user profile operation to perform
     */
    operation: RpcSettingsOperationType;
    /**
     * The scope of this operation
     */
    scope: RpcSettingsScope;
    /**
     * Type of access that this operation will have
     */
    provider: RpcSettingsProviderType;
    /**
     * The value for set operations
     */
    value?: PlainVersionedObject;
}
/**
 * Rpc Settings operation result.
 */
export interface RpcSettingsResult {
    /**
     * Data response of the operation if data was requested
     */
    data?: PlainVersionedObject;
}
