import { Client, ClientOptions } from '@microsoft/teams.common/http';
import { TokenResponse } from '../../models/token/token-response.js';
import { TokenStatus } from '../../models/token/token-status.js';
import { TokenExchangeRequest } from '../../models/token-exchange/token-exchange-request.js';
import { ChannelID } from '../../models/channel-id.js';
import { ApiClientSettings } from '../api-client-settings.js';
import '../../auth/cloud-environment.js';

type GetUserTokenParams = {
    userId: string;
    connectionName: string;
    channelId?: ChannelID;
    code?: string;
};
type GetUserAADTokenParams = {
    userId: string;
    connectionName: string;
    resourceUrls: string[];
    channelId: ChannelID;
};
type GetUserTokenStatusParams = {
    userId: string;
    channelId: ChannelID;
    includeFilter: string;
};
type SignOutUserParams = {
    userId: string;
    connectionName: string;
    channelId: ChannelID;
};
type ExchangeUserTokenParams = {
    userId: string;
    connectionName: string;
    channelId: ChannelID;
    exchangeRequest: TokenExchangeRequest;
};
declare const USER_TOKEN_ENDPOINTS: {
    GET_TOKEN: string;
    GET_AAD_TOKENS: string;
    GET_STATUS: string;
    SIGN_OUT: string;
    EXCHANGE: string;
};
declare class UserTokenClient {
    get http(): Client;
    set http(v: Client);
    protected _http: Client;
    protected _apiClientSettings: Partial<ApiClientSettings>;
    constructor(options?: Client | ClientOptions, apiClientSettings?: Partial<ApiClientSettings>);
    get(params: GetUserTokenParams): Promise<TokenResponse>;
    getAad(params: GetUserAADTokenParams): Promise<Record<string, TokenResponse>>;
    getStatus(params: GetUserTokenStatusParams): Promise<TokenStatus[]>;
    signOut(params: SignOutUserParams): Promise<void>;
    exchange(params: ExchangeUserTokenParams): Promise<TokenResponse>;
}

export { type ExchangeUserTokenParams, type GetUserAADTokenParams, type GetUserTokenParams, type GetUserTokenStatusParams, type SignOutUserParams, USER_TOKEN_ENDPOINTS, UserTokenClient };
