import { OpenApiPoliciesMethods } from "../../openapi-client/index.js";
import { CreatePolicyBody, Policy, PolicyScope, UpdatePolicyBody } from "../../policies/types.js";
/**
 * The PoliciesClient type, where all OpenApiPoliciesMethods methods are wrapped.
 */
export type PoliciesClientInterface = Omit<typeof OpenApiPoliciesMethods, "createPolicy" | "listPolicies" | "getPolicyById" | "deletePolicy" | "updatePolicy"> & {
    listPolicies: (options: ListPoliciesOptions) => Promise<ListPoliciesResult>;
    createPolicy: (options: CreatePolicyOptions) => Promise<Policy>;
    getPolicyById: (options: GetPolicyByIdOptions) => Promise<Policy>;
    deletePolicy: (options: DeletePolicyOptions) => Promise<void>;
    updatePolicy: (options: UpdatePolicyOptions) => Promise<Policy>;
};
export interface ListPoliciesOptions {
    /** The page size to paginate through the accounts. */
    pageSize?: number;
    /** The page token to paginate through the accounts. */
    pageToken?: string;
    /**
     * The scope of the policies to return. If `project`, the response will include exactly one policy, which is the project-level policy. If `account`, the response will include all account-level policies for the developer's CDP Project.
     */
    scope?: PolicyScope;
}
/**
 * The result of listing policies.
 */
export interface ListPoliciesResult {
    /** The list of policies matching the query parameters. */
    policies: Policy[];
    /**
     * The next page token to paginate through the policies.
     * If undefined, there are no more policies to paginate through.
     */
    nextPageToken?: string;
}
/**
 * Options for creating a Policy.
 */
export interface CreatePolicyOptions {
    /**
     * The idempotency key to ensure the request is processed exactly once.
     * Used to safely retry requests without accidentally performing the same operation twice.
     */
    idempotencyKey?: string;
    /**
     * The policy definition to create.
     * Contains the scope, description, and rules for the policy.
     */
    policy: CreatePolicyBody;
}
/**
 * Options for retrieving a Policy by ID.
 */
export interface GetPolicyByIdOptions {
    /**
     * The unique identifier of the policy to retrieve.
     * This is a UUID that's generated when the policy is created.
     */
    id: string;
}
/**
 * Options for deleting a Policy.
 */
export interface DeletePolicyOptions {
    /**
     * The unique identifier of the policy to delete.
     * This is a UUID that's generated when the policy is created.
     */
    id: string;
    /**
     * The idempotency key to ensure the request is processed exactly once.
     * Used to safely retry requests without accidentally performing the same operation twice.
     */
    idempotencyKey?: string;
}
/**
 * Options for updating a Policy.
 */
export interface UpdatePolicyOptions {
    /**
     * The unique identifier of the policy to update.
     * This is a UUID that's generated when the policy is created.
     */
    id: string;
    /**
     * The updated policy definition.
     * Contains the description and rules for the policy.
     */
    policy: UpdatePolicyBody;
    /**
     * The idempotency key to ensure the request is processed exactly once.
     * Used to safely retry requests without accidentally performing the same operation twice.
     */
    idempotencyKey?: string;
}
//# sourceMappingURL=policies.types.d.ts.map