import { AgentClient } from './agent.js';
import { type RetryPolicyInput } from './client.js';
import { Relay } from './communicate/relay.js';
import { RelayCast } from './relay.js';
import type { AgentRecord, CreateWorkspaceOptions, JoinWorkspaceOptions, RegisterAgentOptions, RelaycastSetupOptions, WorkspaceInfo } from './setup-types.js';
import type { WorkspaceLookup } from './types.js';
interface WorkspaceHandleConfig {
    retryPolicyInput: RetryPolicyInput;
}
export declare class WorkspaceHandle {
    readonly info: WorkspaceInfo;
    readonly workspaceId: string;
    readonly apiKey: string;
    private readonly retryPolicyInput;
    private relayCastInstance;
    private readonly agentRecords;
    private readonly registrationOrder;
    private readonly relays;
    constructor(info: WorkspaceInfo, config: WorkspaceHandleConfig);
    relayCast(): RelayCast;
    as(token: string): AgentClient;
    relay(agentName: string): Relay;
    registerAgent(opts: RegisterAgentOptions): Promise<AgentRecord>;
    getAgentToken(name: string): string | undefined;
    listRegisteredAgents(): AgentRecord[];
    getApiKey(): string;
}
export declare class RelaycastSetup {
    private readonly config;
    constructor(options?: RelaycastSetupOptions);
    createWorkspace(options: CreateWorkspaceOptions): Promise<WorkspaceHandle>;
    joinWorkspace(workspaceId: string, apiKey: string, _options?: JoinWorkspaceOptions): Promise<WorkspaceHandle>;
    lookupWorkspace(name: string): Promise<WorkspaceLookup | null>;
    private resolveApiKey;
    private fetchWithRetry;
    private requestWorkspace;
    private parseResponseBody;
    private extractApiErrorMessage;
}
export {};
//# sourceMappingURL=setup.d.ts.map