import { NodeRequestOptions } from '../../data/node-connection';
import { RpcBaseData } from '../rpc-base';
/**
 * CredSSP request Rpc call name and version.
 */
export declare class RpcCredSspRequestKey {
    static command: string;
    static version: string;
}
/**
 * CredSSP response Rpc call name and version
 */
export declare class RpcCredSspResponseKey {
    static command: string;
    static version: string;
}
export interface ServerRoleConfiguration {
    ServerName: string;
    IsServerConfiguredAsServerRole: boolean;
}
export interface ClientRoleConfiguration {
    IsGatewayConfiguredAsClientRole: boolean;
    AllowFreshCredentialsKeyPresent: boolean;
    AllowFreshCredentialsWhenNTLMOnlyKeyPresent: boolean;
    AllowFreshCredentialsDelegatableServers: string[];
    AllowFreshCredentialsWhenNTLMOnlyDelegatableServers: string[];
    NotDelegatableServers: string[];
}
export interface ConfigurationStatus {
    client?: ClientRoleConfiguration;
    servers?: ServerRoleConfiguration[];
}
export interface GatewayLocalPowerShellConfig {
    /**
     * Server configured for executing cluster operations.
     */
    configuredServerConnectionString: string;
    /**
     * PowerShell session options to run with cluster operations.
     */
    powerShellOptions: NodeRequestOptions;
}
/**
 * Identifies the CredSSP operation type to preform
 */
export declare enum RpcCredSSPOperationType {
    /**
     * Enable CredSSP Server role on the managed server.
     */
    EnableManagedServer = 0,
    /**
     * Disable CredSSP Server role on the managed server.
     */
    DisableManagedServer = 1,
    /**
     * Enable CredSSP client role on the gateway and delegate to the list ot servers.
     */
    EnableClientRole = 2,
    /**
     * Disable CredSSP client role on the gateway and remove all delegated servers.
     */
    DisableClientRole = 3,
    /**
     * Enable CredSSP Server role on the managed server, and enable the gateway to
     * delegate to the managed server.
     */
    EnableDelegation = 4,
    /**
     *  Test that CredSSP connection from gateway to server(s) is enabled. To function as verification mechanism
     *  that CredSSP is bound to work.
     */
    TestCredSSP = 5,
    /**
     * Confirm the CredSSP client configuration on the gateway machine and the list of servers
     * that can be delegated fresh credentials from the gateway.
     */
    ConfirmClientConfiguration = 6,
    /**
     * Confirm the CredSSP server configuration on the managed server.
     */
    ConfirmManagedServerConfiguration = 7,
    /**
     * Confirm the CredSSP client configuration on the gateway, and confirm the CredSSP server
     * configuration to the managed server.
     */
    ConfirmDelegation = 8,
    /**
     * Configure CredSSP server role on a given server and enable gateway to delegate to managed server
     * if gateway machine is not given. Otherwise, do nothing. Return configured server name and
     * PowerShell options needed for proceeding invoke PowerShell calls.
     */
    TryGatewayLocalPowerShellConfig = 9
}
/**
 * Explicit credentials i.e username andd password
 */
export interface Credentials {
    username: string;
    password: string;
}
/**
 * CredSSP Manager operation/action RPC message.
 */
export interface RpcCredSSPOperation extends RpcBaseData {
    /**
     * Request specific Id to track completion.
     */
    requestId: string;
    /**
     * Type of CredSSP operation to perform
     */
    operation: RpcCredSSPOperationType;
    /**
     * @deprecated
     * The contextual scenario title to be used when showing notifications.
     */
    notificationTitle: string;
    /**
     * The server names to use in this request.  Can be a single server for role server
     * or a list of servers for role client.
     */
    serverNames: string[];
    /***
     * Authentication options, need the username and password here
     */
    credentials?: Credentials;
    /**
     * @deprecated
     * Optional notification Id to be used when showing notifications.  This will allow notifications
     * from the caller and from CredSSP to be merged in the notification center.
     */
    notificationId?: string;
}
/**
 * CredSSP Manager operation/action RPC message result.
 */
export interface RpcCredSSPOperationResult {
    /**
     * Request specific Id to track completion.
     */
    requestId: string;
    /**
     * Did the requested operation succeed or not?
     */
    succeeded: boolean;
    /**
     * Error message if any.
     */
    error?: string;
    /**
     * Solution to error if any.
     */
    solutionMessage?: string;
    /**
     * Data to return if any.
     */
    data?: GatewayLocalPowerShellConfig;
    /**
     * CredSSP configuration information of the client/server.
     */
    configurationStatus?: ConfigurationStatus;
}
/**
 * CredSSP operation result returnable members.
 */
export declare enum RpcCredSSPOperationResultMember {
    /**
     * "Succeeded" member of operation result interface.
     */
    Succeeded = "succeeded",
    /**
     * "configurationData" member of operation result interface.
     */
    ConfigurationStatus = "configurationStatus",
    /**
     * "data" member of operation result interface.
     */
    Data = "data"
}
