import type { FastifyRequest, FastifyReply } from 'fastify';
import { CookieBuilderService, CookieOptions } from './CookieBuilderService';
/**
 * @file CSRF token service.
 * @copyright Piggly Lab 2025
 * @since 7.0.0
 * @author Caique Araujo <caique@piggly.com.br>
 */
export declare class CSRFTokenService {
    /**
     * Cookie.
     *
     * @type {CookieBuilderService}
     * @protected
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    protected _cookie: CookieBuilderService;
    /**
     * Secret.
     *
     * @type {string}
     * @protected
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    protected _secret: string;
    /**
     * Constructor.
     *
     * @param {CookieBuilderService} cookie
     * @param {string} secret
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    constructor(cookie: CookieBuilderService, secret: string);
    /**
     * Set the CSRF token as a cookie.
     *
     * @param {FastifyReply} reply
     * @param {string} name
     * @param {CookieOptions} options
     * @returns {FastifyReply}
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    asCookie<T extends FastifyReply>(reply: T, name?: string, options?: CookieOptions): T;
    /**
     * Set the CSRF token as a header.
     *
     * @param {FastifyReply} reply
     * @param {string} header
     * @returns {FastifyReply}
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    asHeader<T extends FastifyReply>(reply: T, header?: string): T;
    /**
     * Generate a CSRF token.
     *
     * It will be generated following the format:
     * <token>.<signature>
     *
     * @returns {string}
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    asRaw(): string;
    /**
     * Verify a CSRF token.
     *
     * @param {string} token
     * @returns {boolean}
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    verify(token?: string): boolean;
    /**
     * Verify a CSRF token from a cookie.
     *
     * @param {FastifyRequest} request
     * @param {string} cookie
     * @returns {boolean}
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    verifyCookie<T extends FastifyRequest>(request: T, cookie?: string): boolean;
    /**
     * Verify a CSRF token from a header.
     *
     * @param {FastifyRequest} request
     * @param {string} header
     * @returns {boolean}
     * @memberof CSRFTokenService
     * @since 7.0.0
     * @author Caique Araujo <caique@piggly.com.br>
     */
    verifyHeader<T extends FastifyRequest>(request: T, header?: string): boolean;
}
