import { StripeResource } from '../StripeResource.js';
import { PaginationParams, Metadata } from '../shared.js';
import { RequestOptions, ApiListPromise, Response } from '../lib.js';
export declare class InvoiceRenderingTemplateResource extends StripeResource {
    /**
     * List all templates, ordered by creation date, with the most recently created template appearing first.
     */
    list(params?: InvoiceRenderingTemplateListParams, options?: RequestOptions): ApiListPromise<InvoiceRenderingTemplate>;
    /**
     * Retrieves an invoice rendering template with the given ID. It by default returns the latest version of the template. Optionally, specify a version to see previous versions.
     */
    retrieve(id: string, params?: InvoiceRenderingTemplateRetrieveParams, options?: RequestOptions): Promise<Response<InvoiceRenderingTemplate>>;
    /**
     * Updates the status of an invoice rendering template to ‘archived' so no new Stripe objects (customers, invoices, etc.) can reference it. The template can also no longer be updated. However, if the template is already set on a Stripe object, it will continue to be applied on invoices generated by it.
     */
    archive(id: string, params?: InvoiceRenderingTemplateArchiveParams, options?: RequestOptions): Promise<Response<InvoiceRenderingTemplate>>;
    /**
     * Unarchive an invoice rendering template so it can be used on new Stripe objects again.
     */
    unarchive(id: string, params?: InvoiceRenderingTemplateUnarchiveParams, options?: RequestOptions): Promise<Response<InvoiceRenderingTemplate>>;
}
export interface InvoiceRenderingTemplate {
    /**
     * Unique identifier for the object.
     */
    id: string;
    /**
     * String representing the object's type. Objects of the same type share the same value.
     */
    object: 'invoice_rendering_template';
    /**
     * Time at which the object was created. Measured in seconds since the Unix epoch.
     */
    created: number;
    /**
     * If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`.
     */
    livemode: boolean;
    /**
     * Set of [key-value pairs](https://docs.stripe.com/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
     */
    metadata: Metadata | null;
    /**
     * A brief description of the template, hidden from customers
     */
    nickname: string | null;
    /**
     * The status of the template, one of `active` or `archived`.
     */
    status: InvoiceRenderingTemplate.Status;
    /**
     * Version of this template; version increases by one when an update on the template changes any field that controls invoice rendering
     */
    version: number;
}
export declare namespace InvoiceRenderingTemplate {
    type Status = 'active' | 'archived';
}
export interface InvoiceRenderingTemplateRetrieveParams {
    /**
     * Specifies which fields in the response should be expanded.
     */
    expand?: Array<string>;
    version?: number;
}
export interface InvoiceRenderingTemplateListParams extends PaginationParams {
    /**
     * Specifies which fields in the response should be expanded.
     */
    expand?: Array<string>;
    status?: InvoiceRenderingTemplateListParams.Status;
}
export declare namespace InvoiceRenderingTemplateListParams {
    type Status = 'active' | 'archived';
}
export interface InvoiceRenderingTemplateArchiveParams {
    /**
     * Specifies which fields in the response should be expanded.
     */
    expand?: Array<string>;
}
export interface InvoiceRenderingTemplateUnarchiveParams {
    /**
     * Specifies which fields in the response should be expanded.
     */
    expand?: Array<string>;
}
