import React, { type ReactNode } from 'react';
import { type MeshExchangeType } from '~/consts/mesh';
export interface MeshConnectionInfo {
    accessToken: string;
    accountId: string;
    brokerType: MeshExchangeType;
}
export declare function FunkitMeshProvider({ children }: {
    children: ReactNode;
}): React.JSX.Element;
export declare function useFunkitMesh(): {
    getActiveConnection: (brokerType: MeshExchangeType) => MeshConnectionInfo | null;
    getFirstActiveConnection: () => MeshConnectionInfo | null;
    unlinkBrokerage: (brokerType: MeshExchangeType) => Promise<void>;
};
interface FunkitMeshHook {
    onBeforeConnect(): void;
    onConnected(connection: MeshConnectionInfo | null): void;
    onMeshModalClose(): void;
}
export declare function getMeshDeviceIdFromLocalStorage(): string | null;
export declare function postTokensToProxyServer(apiKey: string, brokerType: string, accessToken: string, refreshToken: string | null, accessTokenExpiresIn: number, refreshTokenExpiresIn?: number): Promise<void>;
/**
 * all hooks SHOULD be in object method style
 * capturing the latest value in render.
 * useMeshConnect will return a stable function.
 * */
export declare function useMeshConnect(hooks: FunkitMeshHook): (brokerType: MeshExchangeType) => Promise<void>;
export {};
