import type { BuildInput } from 'rapiq';
import type { Policy } from '@authup/core-kit';
import { BaseAPI } from '../../base';
import type { EntityAPI, EntityCollectionResponse, EntityRecordResponse } from '../../types-base';
import type { BuiltInPolicyCreateRequest, BuiltInPolicyResponse, BuiltInPolicyUpdateRequest, PolicyAPICheckResponse, PolicyCreateRequest, PolicyResponse, PolicyUpdateRequest } from './types';
export declare class PolicyAPI extends BaseAPI implements EntityAPI<Policy> {
    getMany<OUTPUT extends PolicyResponse = PolicyResponse>(data?: BuildInput<Policy & {
        parent_id?: string | null;
    }>): Promise<EntityCollectionResponse<OUTPUT>>;
    delete<OUTPUT extends PolicyResponse = PolicyResponse>(id: Policy['id']): Promise<EntityRecordResponse<OUTPUT>>;
    getOne<OUTPUT extends PolicyResponse = PolicyResponse>(id: Policy['id'], record?: BuildInput<Policy>): Promise<EntityRecordResponse<OUTPUT>>;
    getOneExpanded<OUTPUT extends PolicyResponse = PolicyResponse>(id: Policy['id'], record?: BuildInput<Policy>): Promise<EntityRecordResponse<OUTPUT>>;
    create<INPUT extends PolicyCreateRequest = PolicyCreateRequest, OUTPUT extends PolicyResponse = PolicyResponse>(data: INPUT): Promise<EntityRecordResponse<OUTPUT>>;
    createBuiltIn(data: BuiltInPolicyCreateRequest): Promise<EntityRecordResponse<BuiltInPolicyResponse>>;
    update<INPUT extends PolicyUpdateRequest = PolicyUpdateRequest, OUTPUT extends PolicyResponse = PolicyResponse>(id: Policy['id'], data: INPUT): Promise<EntityRecordResponse<OUTPUT>>;
    updateBuiltIn(id: Policy['id'], data: BuiltInPolicyUpdateRequest): Promise<EntityRecordResponse<BuiltInPolicyResponse>>;
    createOrUpdate<INPUT extends PolicyCreateRequest = PolicyCreateRequest, OUTPUT extends PolicyResponse = PolicyResponse>(idOrName: string, data: INPUT): Promise<EntityRecordResponse<OUTPUT>>;
    createOrUpdateBuiltin(idOrName: string, data: BuiltInPolicyCreateRequest): Promise<EntityRecordResponse<BuiltInPolicyResponse>>;
    check(idOrName: string, data?: Record<string, any>): Promise<PolicyAPICheckResponse>;
}
//# sourceMappingURL=module.d.ts.map