export interface BatchGetPolicyInputItem {
    /** The identifier of the policy store where the policy you want information about is stored. */
    policyStoreId: string;
    /** The identifier of the policy you want information about. */
    policyId: string;
}
export interface BatchIsAuthorizedInputItem {
    /** Specifies the principal for which the authorization decision is to be made. */
    principal?: any;
    /** Specifies the requested action to be authorized. For example, PhotoFlash::ReadPhoto. */
    action?: any;
    /** Specifies the resource that you want an authorization decision for. For example, PhotoFlash::Photo. */
    resource?: any;
    /** Specifies additional context that can be used to make more granular authorization decisions. */
    context?: any;
}
export interface BatchIsAuthorizedWithTokenInputItem {
    /** Specifies the requested action to be authorized. For example, PhotoFlash::ReadPhoto. */
    action?: any;
    /** Specifies the resource that you want an authorization decision for. For example, PhotoFlash::Photo. */
    resource?: any;
    /** Specifies additional context that can be used to make more granular authorization decisions. */
    context?: any;
}
export interface CognitoUserPoolConfiguration {
    /** The Amazon Resource Name (ARN) of the Amazon Cognito user pool that contains the identities to be authorized. Example: "UserPoolArn": "arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_1a2 */
    userPoolArn: string;
    /** The unique application client IDs that are associated with the specified Amazon Cognito user pool. Example: "ClientIds": ["&amp;ExampleCogClientId;"] */
    clientIds?: any[];
    /** The type of entity that a policy store maps to groups from an Amazon Cognito user pool identity source. */
    groupConfiguration?: any;
}
export interface OpenIdConnectConfiguration {
    /** The issuer URL of an OIDC identity provider. This URL must have an OIDC discovery endpoint at the path .well-known/openid-configuration. */
    issuer: string;
    /** A descriptive string that you want to prefix to user entities from your OIDC identity provider. For example, if you set an entityIdPrefix of MyOIDCProvider, you can reference principals in your polici */
    entityIdPrefix?: string;
    /** The claim in OIDC identity provider tokens that indicates a user's group membership, and the entity type that you want to map it to. For example, this object can map the contents of a groups claim to  */
    groupConfiguration?: any;
    /** The token type that you want to process from your OIDC identity provider. Your policy store can process either identity (ID) or access tokens from a given OIDC identity source. */
    tokenSelection: any;
}
export interface StaticPolicyDefinition {
    /** The description of the static policy. */
    description?: string;
    /** The policy content of the static policy, written in the Cedar policy language. */
    statement: string;
}
export interface TemplateLinkedPolicyDefinition {
    /** The unique identifier of the policy template used to create this policy. */
    policyTemplateId: string;
    /** The principal associated with this template-linked policy. Verified Permissions substitutes this principal for the ?principal placeholder in the policy template when it evaluates an authorization requ */
    principal?: any;
    /** The resource associated with this template-linked policy. Verified Permissions substitutes this resource for the ?resource placeholder in the policy template when it evaluates an authorization request */
    resource?: any;
}
export interface ValidationSettings {
    /** The validation mode currently configured for this policy store. The valid values are: OFF – Neither Verified Permissions nor Cedar perform any validation on policies. No validation errors are reported */
    mode: 'OFF' | 'STRICT';
}
export interface KmsEncryptionSettings {
    /** The customer-managed KMS key Amazon Resource Name (ARN), alias or ID to be used for encryption processes. Users can provide the full KMS key ARN, a KMS key alias, or a KMS key ID, but it will be mappe */
    key: string;
    /** User-defined, additional context to be added to encryption processes. */
    encryptionContext?: Record<string, any>;
}
export interface EntityIdentifier {
    /** The type of an entity. Example: "entityType":"typeName" */
    entityType: string;
    /** The identifier of an entity. "entityId":"identifier" */
    entityId: string;
}
export interface ActionIdentifier {
    /** The type of an action. */
    actionType: string;
    /** The ID of an action. */
    actionId: string;
}
export interface IdentitySourceFilter {
    /** The Cedar entity type of the principals returned by the identity provider (IdP) associated with this identity source. */
    principalEntityType?: string;
}
export interface PolicyFilter {
    /** Filters the output to only policies that reference the specified principal. */
    principal?: {
        unspecified?: boolean;
    } | {
        identifier?: any;
    };
    /** Filters the output to only policies that reference the specified resource. */
    resource?: {
        unspecified?: boolean;
    } | {
        identifier?: any;
    };
    /** Filters the output to only policies of the specified type. */
    policyType?: 'STATIC' | 'TEMPLATE_LINKED';
    /** Filters the output to only template-linked policies that were instantiated from the specified policy template. */
    policyTemplateId?: string;
}
export interface UpdateCognitoUserPoolConfiguration {
    /** The Amazon Resource Name (ARN) of the Amazon Cognito user pool associated with this identity source. */
    userPoolArn: string;
    /** The client ID of an app client that is configured for the specified Amazon Cognito user pool. */
    clientIds?: any[];
    /** The configuration of the user groups from an Amazon Cognito user pool identity source. */
    groupConfiguration?: any;
}
export interface UpdateOpenIdConnectConfiguration {
    /** The issuer URL of an OIDC identity provider. This URL must have an OIDC discovery endpoint at the path .well-known/openid-configuration. */
    issuer: string;
    /** A descriptive string that you want to prefix to user entities from your OIDC identity provider. For example, if you set an entityIdPrefix of MyOIDCProvider, you can reference principals in your polici */
    entityIdPrefix?: string;
    /** The claim in OIDC identity provider tokens that indicates a user's group membership, and the entity type that you want to map it to. For example, this object can map the contents of a groups claim to  */
    groupConfiguration?: any;
    /** The token type that you want to process from your OIDC identity provider. Your policy store can process either identity (ID) or access tokens from a given OIDC identity source. */
    tokenSelection: any;
}
export interface UpdateStaticPolicyDefinition {
    /** Specifies the description to be added to or replaced on the static policy. */
    description?: string;
    /** Specifies the Cedar policy language text to be added to or replaced on the static policy. You can change only the following elements from the original content: The action referenced by the policy. Any */
    statement: string;
}
export interface BatchGetPolicyInput {
    /** An array of up to 100 policies you want information about. */
    requests: BatchGetPolicyInputItem[];
}
export interface BatchIsAuthorizedInput {
    /** Specifies the ID of the policy store. Policies in this policy store will be used to make the authorization decisions for the input. */
    policyStoreId: string;
    /** An array of up to 30 requests that you want Verified Permissions to evaluate. */
    requests: BatchIsAuthorizedInputItem[];
    /** (Optional) Specifies the list of resources and principals and their associated attributes that Verified Permissions can examine when evaluating the policies. These additional entities and their attrib */
    entities?: {
        entityList?: any[];
    } | {
        cedarJson?: string;
    };
}
export interface BatchIsAuthorizedWithTokenInput {
    /** Specifies the ID of the policy store. Policies in this policy store will be used to make an authorization decision for the input. */
    policyStoreId: string;
    /** An array of up to 30 requests that you want Verified Permissions to evaluate. */
    requests: BatchIsAuthorizedWithTokenInputItem[];
    /** Specifies an access token for the principal that you want to authorize in each request. This token is provided to you by the identity provider (IdP) associated with the specified identity source. You  */
    accessToken?: string;
    /** (Optional) Specifies the list of resources and their associated attributes that Verified Permissions can examine when evaluating the policies. These additional entities and their attributes can be ref */
    entities?: {
        entityList?: any[];
    } | {
        cedarJson?: string;
    };
    /** Specifies an identity (ID) token for the principal that you want to authorize in each request. This token is provided to you by the identity provider (IdP) associated with the specified identity sourc */
    identityToken?: string;
}
export interface CreateIdentitySourceInput {
    /** Specifies the details required to communicate with the identity provider (IdP) associated with this identity source. */
    configuration: {
        cognitoUserPoolConfiguration?: CognitoUserPoolConfiguration;
    } | {
        openIdConnectConfiguration?: OpenIdConnectConfiguration;
    };
    /** Specifies the ID of the policy store in which you want to store this identity source. Only policies and requests made using this policy store can reference identities from the identity provider config */
    policyStoreId: string;
    /** Specifies a unique, case-sensitive ID that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time */
    clientToken?: string;
    /** Specifies the namespace and data type of the principals generated for identities authenticated by the new identity source. */
    principalEntityType?: string;
}
export interface CreatePolicyInput {
    /** A structure that specifies the policy type and content to use for the new policy. You must include either a static or a templateLinked element. The policy content must be written in the Cedar policy l */
    definition: {
        static?: StaticPolicyDefinition;
    } | {
        templateLinked?: TemplateLinkedPolicyDefinition;
    };
    /** Specifies the PolicyStoreId of the policy store you want to store the policy in. */
    policyStoreId: string;
    /** Specifies a unique, case-sensitive ID that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time */
    clientToken?: string;
}
export interface CreatePolicyStoreInput {
    /** Specifies the validation setting for this policy store. Currently, the only valid and required value is Mode. We recommend that you turn on STRICT mode only after you define a schema. If a schema does */
    validationSettings: ValidationSettings;
    /** Specifies a unique, case-sensitive ID that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time */
    clientToken?: string;
    /** Specifies whether the policy store can be deleted. If enabled, the policy store can't be deleted. The default state is DISABLED. */
    deletionProtection?: 'ENABLED' | 'DISABLED';
    /** Descriptive text that you can provide to help with identification of the current policy store. */
    description?: string;
    /** Specifies the encryption settings used to encrypt the policy store and their child resources. Allows for the ability to use a customer owned KMS key for encryption of data. This is an optional field t */
    encryptionSettings?: {
        kmsEncryptionSettings?: KmsEncryptionSettings;
    } | {
        default?: void;
    };
    /** The list of key-value pairs to associate with the policy store. */
    tags?: Record<string, string>;
}
export interface CreatePolicyTemplateInput {
    /** The ID of the policy store in which to create the policy template. */
    policyStoreId: string;
    /** Specifies the content that you want to use for the new policy template, written in the Cedar policy language. */
    statement: string;
    /** Specifies a unique, case-sensitive ID that you provide to ensure the idempotency of the request. This lets you safely retry the request without accidentally performing the same operation a second time */
    clientToken?: string;
    /** Specifies a description for the policy template. */
    description?: string;
}
export interface DeleteIdentitySourceInput {
    /** Specifies the ID of the identity source that you want to delete. */
    identitySourceId: string;
    /** Specifies the ID of the policy store that contains the identity source that you want to delete. */
    policyStoreId: string;
}
export interface DeletePolicyInput {
    /** Specifies the ID of the policy that you want to delete. */
    policyId: string;
    /** Specifies the ID of the policy store that contains the policy that you want to delete. */
    policyStoreId: string;
}
export interface DeletePolicyStoreInput {
    /** Specifies the ID of the policy store that you want to delete. */
    policyStoreId: string;
}
export interface DeletePolicyTemplateInput {
    /** Specifies the ID of the policy store that contains the policy template that you want to delete. */
    policyStoreId: string;
    /** Specifies the ID of the policy template that you want to delete. */
    policyTemplateId: string;
}
export interface GetIdentitySourceInput {
    /** Specifies the ID of the identity source you want information about. */
    identitySourceId: string;
    /** Specifies the ID of the policy store that contains the identity source you want information about. */
    policyStoreId: string;
}
export interface GetPolicyInput {
    /** Specifies the ID of the policy you want information about. */
    policyId: string;
    /** Specifies the ID of the policy store that contains the policy that you want information about. */
    policyStoreId: string;
}
export interface GetPolicyStoreInput {
    /** Specifies the ID of the policy store that you want information about. */
    policyStoreId: string;
    /** Specifies whether to return the tags that are attached to the policy store. If this parameter is included in the API call, the tags are returned, otherwise they are not returned. If this parameter is  */
    tags?: boolean;
}
export interface GetPolicyTemplateInput {
    /** Specifies the ID of the policy store that contains the policy template that you want information about. */
    policyStoreId: string;
    /** Specifies the ID of the policy template that you want information about. */
    policyTemplateId: string;
}
export interface GetSchemaInput {
    /** Specifies the ID of the policy store that contains the schema. */
    policyStoreId: string;
}
export interface IsAuthorizedInput {
    /** Specifies the ID of the policy store. Policies in this policy store will be used to make an authorization decision for the input. */
    policyStoreId: string;
    /** Specifies the requested action to be authorized. For example, is the principal authorized to perform this action on the resource? */
    action?: ActionIdentifier;
    /** Specifies additional context that can be used to make more granular authorization decisions. */
    context?: {
        contextMap?: Record<string, any>;
    } | {
        cedarJson?: string;
    };
    /** (Optional) Specifies the list of resources and principals and their associated attributes that Verified Permissions can examine when evaluating the policies. These additional entities and their attrib */
    entities?: {
        entityList?: any[];
    } | {
        cedarJson?: string;
    };
    /** Specifies the principal for which the authorization decision is to be made. */
    principal?: EntityIdentifier;
    /** Specifies the resource for which the authorization decision is to be made. */
    resource?: EntityIdentifier;
}
export interface IsAuthorizedWithTokenInput {
    /** Specifies the ID of the policy store. Policies in this policy store will be used to make an authorization decision for the input. */
    policyStoreId: string;
    /** Specifies an access token for the principal to be authorized. This token is provided to you by the identity provider (IdP) associated with the specified identity source. You must specify either an acc */
    accessToken?: string;
    /** Specifies the requested action to be authorized. Is the specified principal authorized to perform this action on the specified resource. */
    action?: ActionIdentifier;
    /** Specifies additional context that can be used to make more granular authorization decisions. */
    context?: {
        contextMap?: Record<string, any>;
    } | {
        cedarJson?: string;
    };
    /** (Optional) Specifies the list of resources and their associated attributes that Verified Permissions can examine when evaluating the policies. These additional entities and their attributes can be ref */
    entities?: {
        entityList?: any[];
    } | {
        cedarJson?: string;
    };
    /** Specifies an identity token for the principal to be authorized. This token is provided to you by the identity provider (IdP) associated with the specified identity source. You must specify either an a */
    identityToken?: string;
    /** Specifies the resource for which the authorization decision is made. For example, is the principal allowed to perform the action on the resource? */
    resource?: EntityIdentifier;
}
export interface ListIdentitySourcesInput {
    /** Specifies the ID of the policy store that contains the identity sources that you want to list. */
    policyStoreId: string;
    /** Specifies characteristics of an identity source that you can use to limit the output to matching identity sources. */
    filters?: IdentitySourceFilter[];
    /** Specifies the total number of results that you want included in each response. If additional items exist beyond the number you specify, the NextToken response element is returned with a value (not nul */
    maxResults?: number;
    /** Specifies that you want to receive the next page of results. Valid only if you received a NextToken response in the previous request. If you did, it indicates that more output is available. Set this p */
    nextToken?: string;
}
export interface ListPoliciesInput {
    /** Specifies the ID of the policy store you want to list policies from. */
    policyStoreId: string;
    /** Specifies a filter that limits the response to only policies that match the specified criteria. For example, you list only the policies that reference a specified principal. */
    filter?: PolicyFilter;
    /** Specifies the total number of results that you want included in each response. If additional items exist beyond the number you specify, the NextToken response element is returned with a value (not nul */
    maxResults?: number;
    /** Specifies that you want to receive the next page of results. Valid only if you received a NextToken response in the previous request. If you did, it indicates that more output is available. Set this p */
    nextToken?: string;
}
export interface ListPolicyStoresInput {
    /** Specifies the total number of results that you want included in each response. If additional items exist beyond the number you specify, the NextToken response element is returned with a value (not nul */
    maxResults?: number;
    /** Specifies that you want to receive the next page of results. Valid only if you received a NextToken response in the previous request. If you did, it indicates that more output is available. Set this p */
    nextToken?: string;
}
export interface ListPolicyTemplatesInput {
    /** Specifies the ID of the policy store that contains the policy templates you want to list. */
    policyStoreId: string;
    /** Specifies the total number of results that you want included in each response. If additional items exist beyond the number you specify, the NextToken response element is returned with a value (not nul */
    maxResults?: number;
    /** Specifies that you want to receive the next page of results. Valid only if you received a NextToken response in the previous request. If you did, it indicates that more output is available. Set this p */
    nextToken?: string;
}
export interface ListTagsForResourceInput {
    /** The ARN of the resource for which you want to view tags. */
    resourceArn: string;
}
export interface PutSchemaInput {
    /** Specifies the definition of the schema to be stored. The schema definition must be written in Cedar schema JSON. */
    definition: {
        cedarJson?: string;
    };
    /** Specifies the ID of the policy store in which to place the schema. */
    policyStoreId: string;
}
export interface TagResourceInput {
    /** The ARN of the resource that you're adding tags to. */
    resourceArn: string;
    /** The list of key-value pairs to associate with the resource. */
    tags: Record<string, string>;
}
export interface UntagResourceInput {
    /** The ARN of the resource from which you are removing tags. */
    resourceArn: string;
    /** The list of tag keys to remove from the resource. */
    tagKeys: string[];
}
export interface UpdateIdentitySourceInput {
    /** Specifies the ID of the identity source that you want to update. */
    identitySourceId: string;
    /** Specifies the ID of the policy store that contains the identity source that you want to update. */
    policyStoreId: string;
    /** Specifies the details required to communicate with the identity provider (IdP) associated with this identity source. */
    updateConfiguration: {
        cognitoUserPoolConfiguration?: UpdateCognitoUserPoolConfiguration;
    } | {
        openIdConnectConfiguration?: UpdateOpenIdConnectConfiguration;
    };
    /** Specifies the data type of principals generated for identities authenticated by the identity source. */
    principalEntityType?: string;
}
export interface UpdatePolicyInput {
    /** Specifies the ID of the policy that you want to update. To find this value, you can use ListPolicies. */
    policyId: string;
    /** Specifies the ID of the policy store that contains the policy that you want to update. */
    policyStoreId: string;
    /** Specifies the updated policy content that you want to replace on the specified policy. The content must be valid Cedar policy language text. You can change only the following elements from the policy  */
    definition?: {
        static?: UpdateStaticPolicyDefinition;
    };
}
export interface UpdatePolicyStoreInput {
    /** Specifies the ID of the policy store that you want to update */
    policyStoreId: string;
    /** A structure that defines the validation settings that want to enable for the policy store. */
    validationSettings: ValidationSettings;
    /** Specifies whether the policy store can be deleted. If enabled, the policy store can't be deleted. When you call UpdatePolicyStore, this parameter is unchanged unless explicitly included in the call. */
    deletionProtection?: 'ENABLED' | 'DISABLED';
    /** Descriptive text that you can provide to help with identification of the current policy store. */
    description?: string;
}
export interface UpdatePolicyTemplateInput {
    /** Specifies the ID of the policy store that contains the policy template that you want to update. */
    policyStoreId: string;
    /** Specifies the ID of the policy template that you want to update. */
    policyTemplateId: string;
    /** Specifies new statement content written in Cedar policy language to replace the current body of the policy template. You can change only the following elements of the policy body: The action reference */
    statement: string;
    /** Specifies a new description to apply to the policy template. */
    description?: string;
}
/** VerifiedPermissions service binding for Step Functions SDK integrations. */
export declare class VerifiedPermissions {
    constructor();
    batchGetPolicy<T>(params: BatchGetPolicyInput): Promise<T>;
    batchIsAuthorized<T>(params: BatchIsAuthorizedInput): Promise<T>;
    batchIsAuthorizedWithToken<T>(params: BatchIsAuthorizedWithTokenInput): Promise<T>;
    createIdentitySource<T>(params: CreateIdentitySourceInput): Promise<T>;
    createPolicy<T>(params: CreatePolicyInput): Promise<T>;
    createPolicyStore<T>(params: CreatePolicyStoreInput): Promise<T>;
    createPolicyTemplate<T>(params: CreatePolicyTemplateInput): Promise<T>;
    deleteIdentitySource<T>(params: DeleteIdentitySourceInput): Promise<T>;
    deletePolicy<T>(params: DeletePolicyInput): Promise<T>;
    deletePolicyStore<T>(params: DeletePolicyStoreInput): Promise<T>;
    deletePolicyTemplate<T>(params: DeletePolicyTemplateInput): Promise<T>;
    getIdentitySource<T>(params: GetIdentitySourceInput): Promise<T>;
    getPolicy<T>(params: GetPolicyInput): Promise<T>;
    getPolicyStore<T>(params: GetPolicyStoreInput): Promise<T>;
    getPolicyTemplate<T>(params: GetPolicyTemplateInput): Promise<T>;
    getSchema<T>(params: GetSchemaInput): Promise<T>;
    isAuthorized<T>(params: IsAuthorizedInput): Promise<T>;
    isAuthorizedWithToken<T>(params: IsAuthorizedWithTokenInput): Promise<T>;
    listIdentitySources<T>(params: ListIdentitySourcesInput): Promise<T>;
    listPolicies<T>(params: ListPoliciesInput): Promise<T>;
    listPolicyStores<T>(params: ListPolicyStoresInput): Promise<T>;
    listPolicyTemplates<T>(params: ListPolicyTemplatesInput): Promise<T>;
    listTagsForResource<T>(params: ListTagsForResourceInput): Promise<T>;
    putSchema<T>(params: PutSchemaInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateIdentitySource<T>(params: UpdateIdentitySourceInput): Promise<T>;
    updatePolicy<T>(params: UpdatePolicyInput): Promise<T>;
    updatePolicyStore<T>(params: UpdatePolicyStoreInput): Promise<T>;
    updatePolicyTemplate<T>(params: UpdatePolicyTemplateInput): Promise<T>;
}
//# sourceMappingURL=VerifiedPermissions.d.ts.map