export namespace linearAdapter {
    export let id: string;
    export { toStateCategory };
    export { toNeutral };
    /**
     * listCandidates — poll issues filtered by team/state/label/assignee/cursor.
     * Linear ignores free-text `query`; pass structured filters via opts/ctx.
     * @param {import('./types.js').ListCandidatesOptions & {ctx?: object}} [opts]
     * @returns {Promise<import('./types.js').NeutralTicket[]>}
     */
    export function listCandidates(opts?: import("./types.js").ListCandidatesOptions & {
        ctx?: object;
    }): Promise<import("./types.js").NeutralTicket[]>;
    /** getTicket — one issue by identifier (ENG-123) or uuid. */
    export function getTicket(key: any): Promise<{
        id: string;
        key: any;
        title: any;
        body: any;
        state: any;
        stateCategory: "unknown" | "todo" | "in_progress" | "done" | "blocked";
        assignee: any;
        url: any;
        _raw: any;
    }>;
    /** getComments — newest first. */
    export function getComments(key: any): Promise<any>;
    /** addComment — markdown body. */
    export function addComment(key: any, body: any): Promise<{
        ok: boolean;
        id: any;
    }>;
    /**
     * transition — set the issue's workflow state by target NAME. The skill
     * resolves the name to the team's matching state id (exact → type-alias →
     * fuzzy). No transition object in Linear.
     */
    export function transition(key: any, targetStateName: any): Promise<{
        ok: boolean;
        error: any;
        _raw: any;
        stateAfter?: undefined;
        stateCategoryAfter?: undefined;
    } | {
        ok: boolean;
        stateAfter: any;
        stateCategoryAfter: "unknown" | "todo" | "in_progress" | "done" | "blocked";
        _raw: any;
        error?: undefined;
    }>;
    /**
     * linkPullRequest — native Linear attachment; fall back to a comment.
     */
    export function linkPullRequest(key: any, prUrl: any, title: any): Promise<{
        ok: boolean;
        via: string;
        error?: undefined;
    } | {
        ok: boolean;
        via: string;
        error: string;
    }>;
}
export default linearAdapter;
/**
 * Map a Linear state into the neutral 5-bucket category.
 * @param {{name?: string, type?: string}} [state]
 * @returns {'todo'|'in_progress'|'done'|'blocked'|'unknown'}
 */
declare function toStateCategory(state?: {
    name?: string;
    type?: string;
}): "todo" | "in_progress" | "done" | "blocked" | "unknown";
/**
 * Build a NeutralTicket from the linear.js tool projection. The list and get
 * tools both expose `state` (name) + `stateType` (the WorkflowState type); we
 * bucket off the type, keep the raw name as `state`.
 */
declare function toNeutral(issue: any): {
    id: string;
    key: any;
    title: any;
    body: any;
    state: any;
    stateCategory: "unknown" | "todo" | "in_progress" | "done" | "blocked";
    assignee: any;
    url: any;
    _raw: any;
};
