import { Overrides } from '../config.js';
import { Provider } from '../models/auth.js';
import { CreateCredentialRequest, Credential, ListCredentialsQueryParams, UpdateCredentialRequest } from '../models/credentials.js';
import { NylasBaseResponse, NylasListResponse, NylasResponse } from '../models/response.js';
import { AsyncListResponse, Resource } from './resource.js';
/**
 * The parameters for the {@link Credentials.find} method
 * @property provider The provider associated to the credential to retrieve.
 * @property credentialsId The id of the credentials to retrieve.
 */
interface FindCredentialParams {
    provider: Provider;
    credentialsId: string;
}
/**
 * The parameters for the {@link Credentials.list} method
 * @property provider The provider associated to the credential to list from.
 * @property queryParams The query parameters to include in the request
 */
interface ListCredentialsParams {
    provider: Provider;
    queryParams?: ListCredentialsQueryParams;
}
/**
 * The parameters for the {@link Credentials.create} method
 * @property provider The provider associated to the credential being created.
 * @property requestBody The request body to create a credential
 */
interface CreateCredentialParams {
    provider: Provider;
    requestBody: CreateCredentialRequest;
}
/**
 * The parameters for the {@link Credentials.update} method
 * @property provider The provider associated to the credential to update from.
 * @property requestBody The request body to create a credential
 * @property credentialsId The id of the credentials to update.
 */
interface UpdateCredentialParams {
    provider: Provider;
    credentialsId: string;
    requestBody: UpdateCredentialRequest;
}
/**
 * The parameters for the {@link Credentials.destroy} method
 * @property provider The provider associated to the credential to delete from.
 * @property credentialsId The id of the credentials to delete.
 */
interface DestroyCredentialParams {
    provider: string;
    credentialsId: string;
}
export declare class Credentials extends Resource {
    /**
     * Return all credentials
     * @return A list of credentials
     */
    list({ provider, queryParams, overrides, }: ListCredentialsParams & ListCredentialsQueryParams & Overrides): AsyncListResponse<NylasListResponse<Credential>>;
    /**
     * Return a credential
     * @return The credential
     */
    find({ provider, credentialsId, overrides, }: FindCredentialParams & Overrides): Promise<NylasResponse<Credential>>;
    /**
     * Create a credential
     * @return The created credential
     */
    create({ provider, requestBody, overrides, }: CreateCredentialParams & Overrides): Promise<NylasResponse<Credential>>;
    /**
     * Update a credential
     * @return The updated credential
     */
    update({ provider, credentialsId, requestBody, overrides, }: UpdateCredentialParams & Overrides): Promise<NylasResponse<Credential>>;
    /**
     * Delete a credential
     * @return The deleted credential
     */
    destroy({ provider, credentialsId, overrides, }: DestroyCredentialParams & Overrides): Promise<NylasBaseResponse>;
}
export {};
