import type { LTApiResult, LTApiAuth } from '../types/sdk';
/**
 * List all bot accounts with pagination.
 *
 * @param input.limit — maximum number of bots to return (default 50)
 * @param input.offset — number of bots to skip for pagination (default 0)
 * @returns `{ status: 200, data: Bot[] }` paginated list of bots
 */
export declare function listBots(input: {
    limit?: number;
    offset?: number;
}): Promise<LTApiResult>;
/**
 * Retrieve a single bot account by ID.
 *
 * @param input.id — unique identifier of the bot
 * @returns `{ status: 200, data: Bot }` the bot record, or 404 if not found
 */
export declare function getBot(input: {
    id: string;
}): Promise<LTApiResult>;
/**
 * Create a new bot account with optional roles.
 *
 * Validates that each provided role has a valid type (superadmin, admin, member).
 * Returns 409 if a bot with the same name already exists.
 *
 * @param input.name — unique bot name (required)
 * @param input.description — optional text description of the bot
 * @param input.display_name — optional human-friendly display name
 * @param input.roles — optional list of roles to assign at creation, each with a role name and type
 * @param auth — authenticated user context; userId is recorded as the bot creator
 * @returns `{ status: 201, data: Bot }` the newly created bot record
 */
export declare function createBot(input: {
    name: string;
    description?: string;
    display_name?: string;
    roles?: {
        role: string;
        type: string;
    }[];
}, auth?: LTApiAuth): Promise<LTApiResult>;
/**
 * Update mutable fields on an existing bot account.
 *
 * @param input.id — unique identifier of the bot to update
 * @param input.display_name — new display name
 * @param input.description — new description
 * @param input.status — new status value
 * @returns `{ status: 200, data: Bot }` the updated bot record, or 404 if not found
 */
export declare function updateBot(input: {
    id: string;
    display_name?: string;
    description?: string;
    status?: string;
}): Promise<LTApiResult>;
/**
 * Delete a bot account by ID.
 *
 * @param input.id — unique identifier of the bot to delete
 * @returns `{ status: 200, data: { deleted: true } }` on success, or 404 if not found
 */
export declare function deleteBot(input: {
    id: string;
}): Promise<LTApiResult>;
/**
 * List all roles assigned to a bot account.
 *
 * @param input.id — unique identifier of the bot
 * @returns `{ status: 200, data: { roles: Role[] } }` the bot's roles, or 404 if bot not found
 */
export declare function getBotRoles(input: {
    id: string;
}): Promise<LTApiResult>;
/**
 * Assign a role to a bot account.
 *
 * Validates that the role type is one of superadmin, admin, or member.
 *
 * @param input.id — unique identifier of the bot
 * @param input.role — role name to assign
 * @param input.type — role type (superadmin, admin, or member)
 * @returns `{ status: 201, data: Role }` the newly assigned role, or 404 if bot not found
 */
export declare function addBotRole(input: {
    id: string;
    role: string;
    type: string;
}): Promise<LTApiResult>;
/**
 * Remove a role from a bot account.
 *
 * @param input.id — unique identifier of the bot
 * @param input.role — role name to remove
 * @returns `{ status: 200, data: { removed: true } }` on success, or 404 if role not found
 */
export declare function removeBotRole(input: {
    id: string;
    role: string;
}): Promise<LTApiResult>;
/**
 * List all API keys for a bot account.
 *
 * @param input.id — unique identifier of the bot
 * @returns `{ status: 200, data: { keys: ApiKey[] } }` the bot's API keys, or 404 if bot not found
 */
export declare function listBotKeys(input: {
    id: string;
}): Promise<LTApiResult>;
/**
 * Create a new API key for a bot account.
 *
 * Returns 409 if an API key with the same name already exists for this bot.
 *
 * @param input.id — unique identifier of the bot
 * @param input.name — human-readable name for the API key (required)
 * @param input.scopes — optional list of permission scopes to restrict the key
 * @param input.expires_at — optional ISO 8601 expiration timestamp
 * @returns `{ status: 201, data: ApiKey }` the newly created API key (includes the secret)
 */
export declare function createBotKey(input: {
    id: string;
    name: string;
    scopes?: string[];
    expires_at?: string;
}): Promise<LTApiResult>;
/**
 * Revoke an existing bot API key.
 *
 * @param input.keyId — unique identifier of the API key to revoke
 * @returns `{ status: 200, data: { revoked: true } }` on success, or 404 if key not found
 */
export declare function revokeBotKey(input: {
    keyId: string;
}): Promise<LTApiResult>;
