import { Command as $Command } from "@aws-sdk/smithy-client";
import { Handler, HttpHandlerOptions as __HttpHandlerOptions, MetadataBearer as __MetadataBearer, MiddlewareStack } from "@aws-sdk/types";
import { LambdaClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../LambdaClient";
import { AddPermissionRequest, AddPermissionResponse } from "../models/models_0";
export interface AddPermissionCommandInput extends AddPermissionRequest {
}
export interface AddPermissionCommandOutput extends AddPermissionResponse, __MetadataBearer {
}
/**
 * <p>Grants an Amazon Web Services service, account, or organization permission to use a function. You can apply the
 *       policy at the function level, or specify a qualifier to restrict access to a single version or alias. If you use a qualifier,
 *       the invoker must use the full Amazon Resource Name (ARN) of that version or alias to invoke the function.
 *       Note: Lambda does not support adding policies to version $LATEST.</p>
 *
 *          <p>To grant permission to another account, specify the account ID as the <code>Principal</code>. To grant permission to an
 *       organization defined in Organizations, specify the organization ID as the <code>PrincipalOrgID</code>.
 *       For Amazon Web Services services, the principal is a domain-style identifier defined by the service,
 *       like <code>s3.amazonaws.com</code> or <code>sns.amazonaws.com</code>. For Amazon Web Services services, you can also specify
 *       the ARN of the associated resource as the <code>SourceArn</code>. If you grant permission to a service principal without
 *       specifying the source, other accounts could potentially configure resources in their account to invoke your
 *       Lambda function.</p>
 *
 *          <p>This action adds a statement to a resource-based permissions policy for the function. For more information
 *       about function policies, see <a href="https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html">Lambda Function Policies</a>. </p>
 * @example
 * Use a bare-bones client and the command you need to make an API call.
 * ```javascript
 * import { LambdaClient, AddPermissionCommand } from "@aws-sdk/client-lambda"; // ES Modules import
 * // const { LambdaClient, AddPermissionCommand } = require("@aws-sdk/client-lambda"); // CommonJS import
 * const client = new LambdaClient(config);
 * const command = new AddPermissionCommand(input);
 * const response = await client.send(command);
 * ```
 *
 * @see {@link AddPermissionCommandInput} for command's `input` shape.
 * @see {@link AddPermissionCommandOutput} for command's `response` shape.
 * @see {@link LambdaClientResolvedConfig | config} for LambdaClient's `config` shape.
 *
 */
export declare class AddPermissionCommand extends $Command<AddPermissionCommandInput, AddPermissionCommandOutput, LambdaClientResolvedConfig> {
    readonly input: AddPermissionCommandInput;
    constructor(input: AddPermissionCommandInput);
    /**
     * @internal
     */
    resolveMiddleware(clientStack: MiddlewareStack<ServiceInputTypes, ServiceOutputTypes>, configuration: LambdaClientResolvedConfig, options?: __HttpHandlerOptions): Handler<AddPermissionCommandInput, AddPermissionCommandOutput>;
    private serialize;
    private deserialize;
}
