import type { Client } from "../client";
import { Vector3 } from "../network";
import type { Entity } from "../structures";
export declare class Agent {
    private readonly client;
    readonly key: string;
    firstName?: string;
    lastName?: string;
    entity?: Entity;
    /**
     * The coarse location of the agent, used by the viewer for minimap.
     *
     * It is not accurate, should only be used if we have no entity, which
     * also would suggest that the agent is not nearby.
     */
    coarseLocation?: Vector3;
    /**
     * @internal
     */
    constructor(client: Client, key: string, entity?: Entity);
    get id(): number | undefined;
    get name(): string | undefined;
    get distance(): number;
    /**
     * Attempts to fetch avatar details (such as name, etc.) from cache, or server.
     */
    init(): Promise<void>;
    /**
     * Attempts to update avatar details (such as name, etc.) cache.
     */
    update(profile: Partial<{
        firstName: string;
        lastName: string;
    }>): Promise<void>;
    /**
     * Sends an instant message to the agent.
     *
     * @param message The message to send.
     */
    message(message: string): Promise<void[]>;
}
