import type { LTApiResult } from '../types/sdk';
/**
 * List all distinct role names in the system.
 *
 * @returns `{ status: 200, data: { roles: string[] } }` on success
 */
export declare function listRoles(): Promise<LTApiResult>;
/**
 * List all roles with their full details (member counts, escalation chains, etc.).
 *
 * @returns `{ status: 200, data: { roles: RoleDetail[] } }` on success
 */
export declare function listRolesWithDetails(): Promise<LTApiResult>;
/**
 * Create a new role. Requires admin privileges.
 *
 * The role name is trimmed, lowercased, and validated against the pattern
 * `^[a-z][a-z0-9_-]*$` (must start with a letter, then lowercase alphanumerics,
 * hyphens, or underscores).
 *
 * @param input.role — the role name to create
 * @returns `{ status: 201, data: { role: string } }` on success
 */
export declare function createRole(input: {
    role: string;
}): Promise<LTApiResult>;
/**
 * Retrieve all escalation chains across all roles.
 *
 * @returns `{ status: 200, data: { chains: EscalationChain[] } }` on success
 */
export declare function getEscalationChains(): Promise<LTApiResult>;
/**
 * Add an escalation chain link from one role to another. Requires admin privileges.
 *
 * @param input.source_role — the role that escalates from
 * @param input.target_role — the role that receives the escalation
 * @returns `{ status: 201, data: { source_role, target_role } }` on success
 */
export declare function addEscalationChain(input: {
    source_role: string;
    target_role: string;
}): Promise<LTApiResult>;
/**
 * Remove an escalation chain link between two roles. Requires admin privileges.
 *
 * @param input.source_role — the role that escalates from
 * @param input.target_role — the role that receives the escalation
 * @returns `{ status: 200, data: { removed: true } }` on success, or `{ status: 404 }` if not found
 */
export declare function removeEscalationChain(input: {
    source_role: string;
    target_role: string;
}): Promise<LTApiResult>;
/**
 * Get all escalation target roles for a given source role.
 *
 * @param input.role — the source role to look up escalation targets for
 * @returns `{ status: 200, data: { targets: string[] } }` on success
 */
export declare function getEscalationTargets(input: {
    role: string;
}): Promise<LTApiResult>;
/**
 * Replace all escalation targets for a role with a new set. Requires admin privileges.
 *
 * Removes all existing escalation links from the source role and creates new
 * ones for each target in the provided array.
 *
 * @param input.role — the source role whose targets are being replaced
 * @param input.targets — array of target role names to set as the new escalation targets
 * @returns `{ status: 200, data: { role, targets } }` on success
 */
export declare function replaceEscalationTargets(input: {
    role: string;
    targets: string[];
}): Promise<LTApiResult>;
/**
 * Delete a role from the system. Requires admin privileges.
 *
 * Returns 409 if the role cannot be deleted (e.g., still assigned to users).
 *
 * @param input.role — the role name to delete
 * @returns `{ status: 200, data: { deleted: true } }` on success, or `{ status: 409 }` if deletion blocked
 */
export declare function deleteRole(input: {
    role: string;
}): Promise<LTApiResult>;
