import type { ChannelConnector, ChannelConnectorEvents, ChannelStatus, InboundMessage, OutboundMessage } from "../types.js";
interface MSTeamsAccount {
    id?: string;
    name?: string;
    aadObjectId?: string;
    role?: string;
}
interface MSTeamsActivity {
    id?: string;
    type?: string;
    text?: string;
    timestamp?: string;
    serviceUrl?: string;
    channelId?: string;
    from?: MSTeamsAccount;
    recipient?: MSTeamsAccount;
    conversation?: {
        id?: string;
        conversationType?: string;
        tenantId?: string;
    };
    channelData?: {
        tenant?: {
            id?: string;
        };
    };
    locale?: string;
}
export interface MSTeamsConnectorDeps {
    appId?: string;
    appPassword?: string;
    tenantId?: string;
    host?: string;
    port?: number;
    path?: string;
    maxBodyBytes?: number;
    fetchImpl?: typeof fetch;
    validateAuth?: (authorization: string, activity: MSTeamsActivity) => Promise<void>;
    now?: () => number;
    log?: (msg: string, ...args: unknown[]) => void;
}
export declare function decodeMSTeamsHtmlEntities(html: string): string;
export declare function msteamsHtmlToPlainText(html: string): string;
export declare function stripMSTeamsMentionTags(text: string): string;
export declare function isAllowedMSTeamsServiceUrl(serviceUrl: unknown): serviceUrl is string;
export declare function msteamsActivityToInbound(activity: MSTeamsActivity): InboundMessage | null;
export declare function validateMSTeamsAuthorization(params: {
    authorization: string;
    appId: string;
    tenantId: string;
    fetchImpl?: typeof fetch;
}): Promise<void>;
export declare class MSTeamsConnector implements ChannelConnector {
    readonly id = "msteams";
    readonly label = "Microsoft Teams";
    private readonly deps;
    private readonly host;
    private readonly port;
    private readonly path;
    private readonly maxBodyBytes;
    private _status;
    private server;
    private events;
    private tokenCache;
    private references;
    constructor(deps?: MSTeamsConnectorDeps);
    status(): ChannelStatus;
    currentQr(): string | null;
    listenPort(): number | null;
    private log;
    private now;
    private fetch;
    private credentials;
    private setStatus;
    start(events: ChannelConnectorEvents): Promise<void>;
    stop(): Promise<void>;
    send(msg: OutboundMessage): Promise<void>;
    private handleRequest;
    private validateAuth;
    private botToken;
}
export {};
//# sourceMappingURL=connector.d.ts.map