import { GetArgumentsOptions } from '@aws-amplify/graphql-transformer-core';
export type AuthStrategy = 'owner' | 'groups' | 'public' | 'private' | 'custom';
export type AuthProvider = 'apiKey' | 'iam' | 'identityPool' | 'oidc' | 'userPools' | 'function';
export type ModelMutation = 'create' | 'update' | 'delete';
export type ModelOperation = 'create' | 'update' | 'delete' | 'get' | 'list' | 'sync' | 'search' | 'listen';
export type RelationalPrimaryMapConfig = Map<string, {
    claim: string;
    field: string;
}>;
export interface SearchableConfig {
    queries: {
        search: string;
    };
}
export type GetAuthRulesOptions = GetArgumentsOptions & {
    isField?: boolean;
    isSqlDataSource?: boolean;
};
export interface RolesByProvider {
    cognitoStaticRoles: Array<RoleDefinition>;
    cognitoDynamicRoles: Array<RoleDefinition>;
    oidcStaticRoles: Array<RoleDefinition>;
    oidcDynamicRoles: Array<RoleDefinition>;
    iamRoles: Array<RoleDefinition>;
    apiKeyRoles: Array<RoleDefinition>;
    lambdaRoles: Array<RoleDefinition>;
}
export interface AuthRule {
    allow: AuthStrategy;
    provider?: AuthProvider;
    ownerField?: string;
    identityClaim?: string;
    groupsField?: string;
    groupClaim?: string;
    groups?: string[];
    operations?: ModelOperation[];
    generateIAMPolicy?: boolean;
}
export interface RoleDefinition {
    provider: AuthProvider;
    strategy: AuthStrategy;
    static: boolean;
    claim?: string;
    entity?: string;
    allowedFields?: Array<string>;
    nullAllowedFields?: Array<string>;
    areAllFieldsAllowed?: boolean;
    areAllFieldsNullAllowed?: boolean;
    isEntityList?: boolean;
}
export interface AuthDirective {
    rules: AuthRule[];
}
export interface ConfiguredAuthProviders {
    default: AuthProvider;
    onlyDefaultAuthProviderConfigured: boolean;
    hasApiKey: boolean;
    hasUserPools: boolean;
    hasOIDC: boolean;
    hasIAM: boolean;
    hasLambda: boolean;
    hasAdminRolesEnabled: boolean;
    hasIdentityPoolId: boolean;
    shouldAddDefaultServiceDirective: boolean;
    genericIamAccessEnabled: boolean;
}
export declare const authDirectiveDefinition = "\n  directive @auth(rules: [AuthRule!]!) on OBJECT | FIELD_DEFINITION\n  input AuthRule {\n    allow: AuthStrategy!\n    provider: AuthProvider\n    identityClaim: String\n    groupClaim: String\n    ownerField: String\n    groupsField: String\n    groups: [String]\n    operations: [ModelOperation]\n  }\n  enum AuthStrategy {\n    owner\n    groups\n    private\n    public\n    custom\n  }\n  enum AuthProvider {\n    apiKey\n    iam\n    identityPool\n    oidc\n    userPools\n    function\n  }\n  enum ModelOperation {\n    create\n    update\n    delete\n    read\n    list\n    get\n    sync\n    listen\n    search\n  }\n";
//# sourceMappingURL=definitions.d.ts.map