/**
 * Licensing Service for Lambda Kata CDK Integration
 *
 * This module provides the interface and implementation for validating
 * AWS Marketplace entitlements at CDK synthesis/deploy time.
 *
 * @module licensing
 */
import { LicensingResponse } from './types';
/**
 * Interface for the Lambda Kata licensing service.
 *
 * Implementations of this interface are responsible for validating
 * AWS account entitlements and returning customer-specific Layer ARNs.
 *
 * @example
 * ```typescript
 * const licensingService = new HttpLicensingService();
 * const response = await licensingService.checkEntitlement('123456789012');
 * if (response.entitled) {
 *   console.log(`Layer ARN: ${response.layerArn}`);
 * }
 * ```
 */
export interface LicensingService {
    /**
     * Check if an AWS account is entitled to use Lambda Kata.
     *
     * @param accountId - The AWS account ID to check (12-digit string)
     * @returns Promise resolving to entitlement status and Layer ARN if entitled
     *
     * @remarks
     * - If the account is entitled, the response will include the customer-specific Layer ARN
     * - If the account is not entitled, the response will have `entitled: false`
     * - Network errors are handled gracefully and treated as unlicensed (Requirement 6.5)
     */
    checkEntitlement(accountId: string): Promise<LicensingResponse>;
}
/**
 * HTTP-based implementation of the LicensingService interface.
 *
 * This implementation calls the Lambda Kata licensing backend to validate
 * AWS Marketplace entitlements. Network errors are handled gracefully
 * by treating unreachable services as unlicensed (per Requirement 6.5).
 *
 * @example
 * ```typescript
 * // Use default endpoint
 * const service = new HttpLicensingService();
 *
 * // Use custom endpoint
 * const customService = new HttpLicensingService('https://custom.endpoint.com');
 * ```
 */
export declare class HttpLicensingService implements LicensingService {
    private readonly endpoint;
    private readonly timeoutMs;
    /**
     * Creates a new HttpLicensingService instance.
     *
     * @param endpoint - Optional custom licensing endpoint URL
     * @param timeoutMs - Optional request timeout in milliseconds (default: 5000)
     */
    constructor(endpoint?: string, timeoutMs?: number);
    /**
     * Check if an AWS account is entitled to use Lambda Kata.
     *
     * Makes an HTTP request to the licensing service to validate the account's
     * AWS Marketplace entitlement. If the service is unreachable or returns
     * an error, the account is treated as unlicensed (Requirement 6.5).
     *
     * @param accountId - The AWS account ID to check (12-digit string)
     * @returns Promise resolving to entitlement status and Layer ARN if entitled
     *
     * @remarks
     * Validates: Requirements 3.2, 3.3, 6.5
     * - 3.2: Calls the Licensing_Service to validate the account's entitlement
     * - 3.3: Returns the customer-specific Layer_ARN if entitled
     * - 6.5: Treats unreachable service as unlicensed with appropriate warning
     */
    checkEntitlement(accountId: string): Promise<LicensingResponse>;
    /**
     * Makes the HTTP request to the licensing service.
     *
     * @param accountId - The AWS account ID to check
     * @returns Promise resolving to the licensing response
     * @throws Error if the request fails or times out
     */
    private makeRequest;
}
/**
 * Validates that an AWS account ID is in the correct format.
 *
 * @param accountId - The account ID to validate
 * @returns true if the account ID is a valid 12-digit string
 */
export declare function isValidAccountId(accountId: string): boolean;
/**
 * Creates a default LicensingService instance.
 *
 * This factory function provides a convenient way to create a licensing
 * service with default configuration.
 *
 * @param endpoint - Optional custom licensing endpoint URL
 * @returns A new LicensingService instance
 *
 * @example
 * ```typescript
 * const service = createLicensingService();
 * const response = await service.checkEntitlement('123456789012');
 * ```
 */
export declare function createLicensingService(endpoint?: string): LicensingService;
