import { Overrides } from '../config.js';
import { CreateRuleRequest, ListRuleEvaluationsQueryParams, ListRulesQueryParams, Rule, RuleEvaluation, UpdateRuleRequest } from '../models/rules.js';
import { NylasBaseResponse, NylasListResponse, NylasResponse } from '../models/response.js';
import { AsyncListResponse, Resource } from './resource.js';
/**
 * @property queryParams The query parameters to include in the request.
 */
interface ListRulesParams {
    queryParams?: ListRulesQueryParams;
}
/**
 * @property ruleId The ID of the rule to retrieve.
 */
interface FindRuleParams {
    ruleId: string;
}
/**
 * @property requestBody The values to create the rule with.
 */
interface CreateRuleParams {
    requestBody: CreateRuleRequest;
}
/**
 * @property ruleId The ID of the rule to update.
 * @property requestBody The values to update the rule with.
 */
interface UpdateRuleParams {
    ruleId: string;
    requestBody: UpdateRuleRequest;
}
/**
 * @property ruleId The ID of the rule to delete.
 */
interface DestroyRuleParams {
    ruleId: string;
}
/**
 * @property identifier The identifier of the grant to list rule evaluations for.
 * @property queryParams The query parameters to include in the request.
 */
interface ListRuleEvaluationsParams {
    identifier: string;
    queryParams?: ListRuleEvaluationsQueryParams;
}
/**
 * Nylas Agent Account Rules API
 *
 * Rules define inbound and outbound filtering logic for Agent Accounts.
 */
export declare class Rules extends Resource {
    /**
     * Return all rules.
     * @return The list of rules.
     */
    list({ queryParams, overrides, }?: ListRulesParams & Overrides): AsyncListResponse<NylasListResponse<Rule>>;
    /**
     * Return a rule.
     * @return The rule.
     */
    find({ ruleId, overrides, }: FindRuleParams & Overrides): Promise<NylasResponse<Rule>>;
    /**
     * Create a rule.
     * @return The created rule.
     */
    create({ requestBody, overrides, }: CreateRuleParams & Overrides): Promise<NylasResponse<Rule>>;
    /**
     * Update a rule.
     * @return The updated rule.
     */
    update({ ruleId, requestBody, overrides, }: UpdateRuleParams & Overrides): Promise<NylasResponse<Rule>>;
    /**
     * Delete a rule.
     * @return The deletion response.
     */
    destroy({ ruleId, overrides, }: DestroyRuleParams & Overrides): Promise<NylasBaseResponse>;
    /**
     * Return rule evaluation records for a grant.
     * @return The list of rule evaluation records.
     */
    listEvaluations({ identifier, queryParams, overrides, }: ListRuleEvaluationsParams & Overrides): AsyncListResponse<NylasListResponse<RuleEvaluation>>;
}
export {};
