import type { PlannerTokenPayload, ReviewerTokenPayload, TokenString } from './types.js';
/**
 * Serialise a signed token to a safe opaque string (base64url).
 * Format: base64url(JSON({ payload, signature }))
 */
export declare function encodeToken(token: {
    payload: PlannerTokenPayload | ReviewerTokenPayload;
    signature: string;
}): TokenString;
/**
 * Deserialise an opaque token string back to a signed-token object.
 * Returns null if the string is malformed.
 */
export declare function decodeToken(raw: TokenString): {
    payload: unknown;
    signature: string;
} | null;
/**
 * Issue a planner token for the create_spec tool call.
 * The token is opaque to the LLM — it should be passed as-is to issue_reviewer_token.
 */
export declare function issuePlannerToken(projectPath: string, specId: string, sessionId: string, modelId: string, host: string): Promise<TokenString>;
/**
 * Issue a reviewer token, bound to the planner token.
 * The reviewer token records the reviewer's session/model/host and embeds
 * the planner's sessionId and modelId for later validation.
 */
export declare function issueReviewerToken(projectPath: string, plannerTokenRaw: TokenString, sessionId: string, modelId: string, host: string): Promise<TokenString>;
//# sourceMappingURL=issuer.d.ts.map