/**
 * Integration Strategy Pattern Implementation
 *
 * This module provides the Strategy pattern implementation for integrating
 * resources with Lambda functions. Strategies define how permissions are
 * granted and environment variables are injected.
 *
 * @module declarative-api/strategy/integration-strategy
 */
import type { IIntegrationStrategy, IntegrationStrategyType, GrantOptions, InjectOptions, GrantResult, InjectResult, IResourceEntity } from '../../../lib/runtime-web/types/declarative-api';
/**
 * Abstract base class for integration strategies.
 *
 * Provides common functionality for all strategy implementations.
 * Strategies are stateless for thread safety.
 *
 * Validates: Requirements 4.6
 */
export declare abstract class BaseIntegrationStrategy implements IIntegrationStrategy {
    abstract readonly strategyType: IntegrationStrategyType;
    /**
     * Get the permission level for this strategy.
     */
    protected abstract getPermissionLevel(): 'read' | 'write' | 'full';
    /**
     * Grant permissions to a Lambda role for accessing the resource.
     *
     * @param resource - The resource to grant access to
     * @param _role - The IAM role (unused in base implementation)
     * @param options - Optional grant configuration
     * @returns Result of the grant operation
     */
    grantPermissions(resource: IResourceEntity, _role: unknown, options?: GrantOptions): GrantResult;
    /**
     * Inject environment variables into a Lambda function.
     *
     * @param resource - The resource to inject identifiers for
     * @param _lambda - The Lambda function (unused in base implementation)
     * @param options - Optional injection configuration
     * @returns Result of the injection operation
     */
    injectEnvironment(resource: IResourceEntity, _lambda: unknown, options?: InjectOptions): InjectResult;
    /**
     * Get the URL for a resource (if applicable).
     *
     * @param resource - The resource
     * @returns The resource URL or placeholder
     */
    protected getResourceUrl(resource: IResourceEntity): string;
}
