import { type PermissionGrantPolicy, type PermissionGrantPolicyCollectionResponse } from '@microsoft/msgraph-sdk/models/index.js';
import { type CountRequestBuilder } from './count/index.js';
import { type PermissionGrantPolicyItemRequestBuilder } from './item/index.js';
import { type BaseRequestBuilder, type KeysToExcludeForNavigationMetadata, type NavigationMetadata, type RequestConfiguration, type RequestInformation, type RequestsMetadata } from '@microsoft/kiota-abstractions';
/**
 * Provides operations to manage the permissionGrantPolicies property of the microsoft.graph.policyRoot entity.
 */
export interface PermissionGrantPoliciesRequestBuilder extends BaseRequestBuilder<PermissionGrantPoliciesRequestBuilder> {
    /**
     * Provides operations to count the resources in the collection.
     */
    get count(): CountRequestBuilder;
    /**
     * Provides operations to manage the permissionGrantPolicies property of the microsoft.graph.policyRoot entity.
     * @param permissionGrantPolicyId The unique identifier of permissionGrantPolicy
     * @returns {PermissionGrantPolicyItemRequestBuilder}
     */
    byPermissionGrantPolicyId(permissionGrantPolicyId: string): PermissionGrantPolicyItemRequestBuilder;
    /**
     * Retrieve the list of permissionGrantPolicy objects.
     * @param requestConfiguration Configuration for the request such as headers, query parameters, and middleware options.
     * @returns {Promise<PermissionGrantPolicyCollectionResponse>}
     * @throws {ODataError} error when the service returns a 4XX or 5XX status code
     * @see {@link https://learn.microsoft.com/graph/api/permissiongrantpolicy-list?view=graph-rest-1.0|Find more info here}
     */
    get(requestConfiguration?: RequestConfiguration<PermissionGrantPoliciesRequestBuilderGetQueryParameters> | undefined): Promise<PermissionGrantPolicyCollectionResponse | undefined>;
    /**
     * Creates a permissionGrantPolicy. A permission grant policy is used to describe the conditions under which permissions can be granted (for example, during application consent). After creating the permission grant policy, you can add include condition sets to add matching rules, and add exclude condition sets to add exclusion rules.
     * @param body The request body
     * @param requestConfiguration Configuration for the request such as headers, query parameters, and middleware options.
     * @returns {Promise<PermissionGrantPolicy>}
     * @throws {ODataError} error when the service returns a 4XX or 5XX status code
     * @see {@link https://learn.microsoft.com/graph/api/permissiongrantpolicy-post-permissiongrantpolicies?view=graph-rest-1.0|Find more info here}
     */
    post(body: PermissionGrantPolicy, requestConfiguration?: RequestConfiguration<object> | undefined): Promise<PermissionGrantPolicy | undefined>;
    /**
     * Retrieve the list of permissionGrantPolicy objects.
     * @param requestConfiguration Configuration for the request such as headers, query parameters, and middleware options.
     * @returns {RequestInformation}
     */
    toGetRequestInformation(requestConfiguration?: RequestConfiguration<PermissionGrantPoliciesRequestBuilderGetQueryParameters> | undefined): RequestInformation;
    /**
     * Creates a permissionGrantPolicy. A permission grant policy is used to describe the conditions under which permissions can be granted (for example, during application consent). After creating the permission grant policy, you can add include condition sets to add matching rules, and add exclude condition sets to add exclusion rules.
     * @param body The request body
     * @param requestConfiguration Configuration for the request such as headers, query parameters, and middleware options.
     * @returns {RequestInformation}
     */
    toPostRequestInformation(body: PermissionGrantPolicy, requestConfiguration?: RequestConfiguration<object> | undefined): RequestInformation;
}
/**
 * Retrieve the list of permissionGrantPolicy objects.
 */
export interface PermissionGrantPoliciesRequestBuilderGetQueryParameters {
    /**
     * Include count of items
     */
    count?: boolean;
    /**
     * Expand related entities
     */
    expand?: string[];
    /**
     * Filter items by property values
     */
    filter?: string;
    /**
     * Order items by property values
     */
    orderby?: string[];
    /**
     * Search items by search phrases
     */
    search?: string;
    /**
     * Select properties to be returned
     */
    select?: string[];
    /**
     * Skip the first n items
     */
    skip?: number;
    /**
     * Show only the first n items
     */
    top?: number;
}
/**
 * Uri template for the request builder.
 */
export declare const PermissionGrantPoliciesRequestBuilderUriTemplate = "{+baseurl}/policies/permissionGrantPolicies{?%24count,%24expand,%24filter,%24orderby,%24search,%24select,%24skip,%24top}";
/**
 * Metadata for all the navigation properties in the request builder.
 */
export declare const PermissionGrantPoliciesRequestBuilderNavigationMetadata: Record<Exclude<keyof PermissionGrantPoliciesRequestBuilder, KeysToExcludeForNavigationMetadata>, NavigationMetadata>;
/**
 * Metadata for all the requests in the request builder.
 */
export declare const PermissionGrantPoliciesRequestBuilderRequestsMetadata: RequestsMetadata;
//# sourceMappingURL=index.d.ts.map