/**
 * @fileoverview Client for managing listings in the Sharetribe Integration API.
 *
 * This privileged API allows creating, updating, querying, approving, opening, and closing listings
 * on behalf of users — typically used by admin tools, onboarding flows, or backend services.
 *
 * @see https://www.sharetribe.com/api-reference/integration.html#listings
 */
import type { AxiosResponse } from "axios";
import IntegrationApi from "./index";
import { ExtraParameter, ListingsApproveParameter, ListingsCloseParameter, ListingsCreateParameter, ListingsOpenParameter, ListingsQueryParameter, ListingsResponse, ListingsShowParameter, ListingsUpdateParameter } from "../../types";
/**
 * Listings API client (privileged)
 */
declare class Listings {
    private readonly axios;
    private readonly endpoint;
    private readonly headers;
    constructor(api: IntegrationApi);
    /**
     * Fetch a single listing by ID
     *
     * @template P
     * @param {P & ListingsShowParameter} params
     * @returns {Promise<AxiosResponse<ListingsResponse<"show", P>>>}
     */
    show<P extends ListingsShowParameter>(params: P): Promise<AxiosResponse<ListingsResponse<"show", P, {
        expand: true;
    }>>>;
    /**
     * Query listings with filters
     *
     * @template P
     * @param {P & ListingsQueryParameter} params
     * @returns {Promise<AxiosResponse<ListingsResponse<"query", P>>>}
     */
    query<P extends ListingsQueryParameter>(params: P): Promise<AxiosResponse<ListingsResponse<"query", P>>>;
    /**
     * Create a new listing
     *
     * @template P
     * @template EP
     * @param {P & ListingsCreateParameter} params
     * @param {EP} [extraParams] - Optional extra parameters (e.g. `expand: true`)
     * @returns {Promise<AxiosResponse<ListingsResponse<"create", P, EP>>>}
     */
    create<P extends ListingsCreateParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"create", P, EP>>>;
    /**
     * Update an existing listing
     *
     * @template P
     * @template EP
     * @param {P & ListingsUpdateParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<ListingsResponse<"update", P, EP>>>}
     */
    update<P extends ListingsUpdateParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"update", P, EP>>>;
    /**
     * Close a listing
     *
     * @template P
     * @template EP
     * @param {P & ListingsCloseParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<ListingsResponse<"close", P, EP>>>}
     */
    close<P extends ListingsCloseParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"close", P, EP>>>;
    /**
     * Open a previously closed listing
     *
     * @template P
     * @template EP
     * @param {P & ListingsOpenParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<ListingsResponse<"open", P, EP>>>}
     */
    open<P extends ListingsOpenParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"open", P, EP>>>;
    /**
     * Approve a pending listing (admin only)
     *
     * @template P
     * @template EP
     * @param {P & ListingsApproveParameter} params
     * @param {EP} [extraParams]
     * @returns {Promise<AxiosResponse<ListingsResponse<"approve", P, EP>>>}
     */
    approve<P extends ListingsApproveParameter, EP extends ExtraParameter | undefined = undefined>(params: P, extraParams?: EP): Promise<AxiosResponse<ListingsResponse<"approve", P, EP>>>;
}
export default Listings;
