import { StructuredTool, ToolParams } from '@langchain/core/tools';
import { z } from 'zod';
import { HCS10Client } from '../hcs10/HCS10Client';
import { IStateManager } from '../state/state-types';
export interface FeeDefinition {
    amount: number;
    collectorAccount?: string;
}
export interface TokenFeeDefinition extends FeeDefinition {
    tokenId: string;
}
export interface ConnectionMonitorToolParams extends ToolParams {
    hcsClient: HCS10Client;
    stateManager: IStateManager;
}
/**
 * A tool for monitoring incoming connection requests and accepting them with optional fee settings.
 */
export declare class ConnectionMonitorTool extends StructuredTool {
    name: string;
    description: string;
    schema: z.ZodObject<{
        acceptAll: z.ZodOptional<z.ZodBoolean>;
        targetAccountId: z.ZodOptional<z.ZodString>;
        hbarFees: z.ZodOptional<z.ZodArray<z.ZodObject<{
            amount: z.ZodNumber;
            collectorAccount: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            amount: number;
            collectorAccount?: string | undefined;
        }, {
            amount: number;
            collectorAccount?: string | undefined;
        }>, "many">>;
        tokenFees: z.ZodOptional<z.ZodArray<z.ZodObject<{
            amount: z.ZodNumber;
            tokenId: z.ZodString;
            collectorAccount: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            amount: number;
            tokenId: string;
            collectorAccount?: string | undefined;
        }, {
            amount: number;
            tokenId: string;
            collectorAccount?: string | undefined;
        }>, "many">>;
        exemptAccountIds: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        monitorDurationSeconds: z.ZodOptional<z.ZodNumber>;
        defaultCollectorAccount: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        hbarFees?: {
            amount: number;
            collectorAccount?: string | undefined;
        }[] | undefined;
        tokenFees?: {
            amount: number;
            tokenId: string;
            collectorAccount?: string | undefined;
        }[] | undefined;
        exemptAccountIds?: string[] | undefined;
        targetAccountId?: string | undefined;
        acceptAll?: boolean | undefined;
        monitorDurationSeconds?: number | undefined;
        defaultCollectorAccount?: string | undefined;
    }, {
        hbarFees?: {
            amount: number;
            collectorAccount?: string | undefined;
        }[] | undefined;
        tokenFees?: {
            amount: number;
            tokenId: string;
            collectorAccount?: string | undefined;
        }[] | undefined;
        exemptAccountIds?: string[] | undefined;
        targetAccountId?: string | undefined;
        acceptAll?: boolean | undefined;
        monitorDurationSeconds?: number | undefined;
        defaultCollectorAccount?: string | undefined;
    }>;
    private hcsClient;
    private stateManager;
    private logger;
    private isMonitoring;
    private listConnectionsTool;
    constructor({ hcsClient, stateManager, ...rest }: ConnectionMonitorToolParams);
    updateClient(newClient: HCS10Client): void;
    protected _call({ acceptAll, targetAccountId, hbarFees, tokenFees, exemptAccountIds, monitorDurationSeconds, defaultCollectorAccount, }: z.infer<this['schema']>): Promise<string>;
    private createFeeConfig;
    private extractAccountId;
    private acceptConnectionRequest;
    private formatFeeString;
    /**
     * Updates the ConnectionsManager with latest connection data
     * This method is meant to be called when changes to connections happen
     * outside this tool's monitoring process
     */
    update(): void;
}
