import { AuthManager } from '../auth/AuthManager';
import { Profile, ProfileListResponse, ProfileCreateRequest, ProfileUpdateRequest, ProfileDeleteRequest, ProfilePayloadsResponse, PayloadDetailsResponse, PayloadConfig, PayloadName } from './types';
export declare class ProfilesAPI {
    private readonly baseUrl;
    private readonly authManager;
    private readonly accountsServer;
    constructor(baseUrl: string, authManager: AuthManager, accountsServer: string);
    private getHeaders;
    /**
     * Get a list of all profiles
     */
    listProfiles(): Promise<ProfileListResponse>;
    /**
     * Create a new profile
     */
    createProfile(profile: ProfileCreateRequest): Promise<Profile>;
    /**
     * Delete or trash profiles. First call moves to trash, second call deletes permanently.
     */
    deleteProfiles(request: ProfileDeleteRequest): Promise<void>;
    /**
     * Get details of a specific profile
     */
    getProfile(profileId: string): Promise<Profile>;
    /**
     * Update a profile's details
     */
    updateProfile(profileId: string, profile: ProfileUpdateRequest): Promise<void>;
    /**
     * Get list of payloads in a profile
     */
    getProfilePayloads(profileId: string): Promise<ProfilePayloadsResponse>;
    /**
     * Get payload details for a specific payload type
     */
    getPayloadDetails(profileId: string, payloadName: string): Promise<PayloadDetailsResponse>;
    /**
     * Add a new payload to a profile
     */
    addPayload<T extends PayloadName>(profileId: string, payloadName: T, config: PayloadConfig[T]): Promise<PayloadConfig[T] & {
        payload_id: number;
    }>;
    /**
     * Remove a payload type from a profile
     */
    removePayload(profileId: string, payloadName: string): Promise<void>;
    /**
     * Get details of a specific payload item
     */
    getPayloadItem<T extends PayloadName>(profileId: string, payloadName: T, payloadId: string): Promise<PayloadConfig[T]>;
    /**
     * Update a payload item
     */
    updatePayloadItem<T extends PayloadName>(profileId: string, payloadName: T, payloadId: string, config: PayloadConfig[T]): Promise<PayloadConfig[T] & {
        payload_id: number;
    }>;
    /**
     * Remove a payload item
     */
    removePayloadItem(profileId: string, payloadName: string, payloadId: string): Promise<void>;
    /**
     * Publish a profile
     */
    publishProfile(profileId: string): Promise<void>;
    /**
     * Update a profile to all devices and groups
     */
    updateProfileToAll(profileId: string): Promise<void>;
}
