import { Requester } from '../http/Requester';
import Endpoint from './Endpoint';
/**
 * Body accepted by {@link WidgetsEndpoint.signCampaignJwt}.
 */
export interface WidgetsCampaignJwtPayload {
    /**
     * The meta values forwarded to the widget.
     */
    metaValues?: Record<string, unknown>;
    /**
     * The form values pre-filled in the widget.
     */
    formValues?: Record<string, unknown>;
}
/**
 * Communicate with the `/widgets` endpoint.
 *
 * Accessed via `client.widgets`. The widgets routes live outside `/api/v1`, so this
 * endpoint is constructed with `{ siteRoot: true }` — the inherited `this.do` builds
 * absolute URLs against the requester's current site base URL.
 */
export default class WidgetsEndpoint extends Endpoint {
    /**
     * Constructor.
     *
     * @param req The object to use to make requests.
     */
    constructor(req: Requester);
    /**
     * Signs an arbitrary payload as a JWT using a caller-supplied secret.
     *
     * Returns the signed JWT as a string. Sent unauthenticated because the secret is what
     * the backend uses to sign — the caller's API key is not involved.
     *
     * @param payload The payload to sign.
     * @param secret The HMAC secret used to sign the JWT.
     */
    signJwt: (payload: Record<string, unknown>, secret: string) => Promise<string>;
    /**
     * Signs a campaign-scoped payload as a JWT.
     *
     * The backend signs with the campaign's `openEnrollmentJwtSecret`, so no client-side
     * secret is required.
     *
     * @param campaignId The ID of the campaign whose JWT secret should be used.
     * @param payload The payload to sign.
     */
    signCampaignJwt: (campaignId: string, payload: WidgetsCampaignJwtPayload) => Promise<string>;
}
