/**
 * Trello Webhook ingestor.
 *
 * A concrete webhook ingestor that handles Trello webhook events with optional
 * HMAC-SHA1 signature verification.
 *
 * Extends the generic `WebhookIngestor` base class, implementing Trello-specific
 * signature verification (via `X-Trello-Webhook` header), event type extraction
 * (from the JSON body's `action.type` field), and data shaping.
 *
 * Trello's signature scheme is unique: the HMAC is computed over
 * `${rawBody}${callbackURL}`, requiring the callback URL to be configured.
 *
 * @see https://developer.atlassian.com/cloud/trello/guides/rest-api/webhooks/
 */
import { WebhookIngestor } from './base-webhook-ingestor.js';
import type { WebhookIngestorConfig } from '../types.js';
export declare class TrelloWebhookIngestor extends WebhookIngestor {
    /**
     * Board ID filter for multi-instance support.
     * When set, only webhooks from this specific board are accepted.
     * Set via `_boardId` on the webhook config (injected by IngestorManager).
     */
    private readonly boardId;
    constructor(connectionAlias: string, secrets: Record<string, string>, webhookConfig: WebhookIngestorConfig, bufferSize?: number, instanceId?: string);
    /**
     * Return the board ID for lifecycle webhook registration.
     * Used by the lifecycle manager to match existing webhooks by model ID
     * and clean up stale registrations.
     */
    protected getModelId(): string | undefined;
    /**
     * Filter webhooks by board ID for multi-instance support.
     * When boardId is set, only events from that specific board are accepted.
     * The board ID is found in `body.model.id` of Trello webhook payloads.
     */
    protected shouldAcceptPayload(body: unknown): boolean;
    /**
     * Verify the Trello webhook signature (HMAC-SHA1, base64-encoded).
     *
     * If both `signatureHeader` and `signatureSecretName` are configured,
     * the signature is verified. If either is absent, verification is skipped.
     *
     * Trello's HMAC is computed over `${rawBody}${callbackURL}`, so the
     * `callbackUrl` must be configured for verification to work.
     */
    protected verifySignature(headers: Record<string, string | string[] | undefined>, rawBody: Buffer): {
        valid: boolean;
        reason?: string;
    };
    /**
     * Extract the event type from the Trello webhook body.
     *
     * Trello encodes the action type in `body.action.type`
     * (e.g., 'updateCard', 'createCard', 'commentCard', 'addMemberToBoard').
     */
    protected extractEventType(_headers: Record<string, string | string[] | undefined>, body: unknown): string;
    /**
     * Extract event data in the Trello-specific shape:
     * `{ actionId, actionType, model, payload }`.
     */
    protected extractEventData(_headers: Record<string, string | string[] | undefined>, body: unknown): unknown;
    /**
     * Extract the Trello action ID as the idempotency key.
     *
     * Each Trello webhook carries an action with a unique `id` field.
     * Using this as the idempotency key prevents duplicate events
     * from webhook retries.
     */
    protected extractIdempotencyKey(_headers: Record<string, string | string[] | undefined>, body: unknown): string | undefined;
}
//# sourceMappingURL=trello-webhook-ingestor.d.ts.map