import * as Figma from './figmaTypes';
export * from './figmaTypes';
import { AxiosInstance, AxiosPromise } from 'axios';
export interface FileParams {
    /**
     * A list of nodes that you care about in the document.
     * If specified, only a subset of the document will be returned corresponding to the nodes listed, their children, and everything between the root node and the listed nodes
     */
    readonly ids?: ReadonlyArray<string>;
    /**
     * Positive integer representing how deep into the document tree to traverse.
     * For example, setting this to 1 returns only Pages, setting it to 2 returns Pages and all top level objects on each page.
     * Not setting this parameter returns all nodes
     */
    readonly depth?: number;
    /**
     * A specific version ID to get. Omitting this will get the current version of the file
     */
    readonly version?: string;
    /**
     * Set to "paths" to export vector data
     */
    readonly geometry?: string;
    /**
     * A comma separated list of plugin IDs and/or the string "shared".
     * Any data present in the document written by those plugins will be included in the result in the `pluginData` and `sharedPluginData` properties.
     */
    readonly plugin_data?: string;
}
export interface FileNodesParams {
    /** A list of node IDs to retrieve and convert */
    readonly ids: ReadonlyArray<string>;
    /**
     * A specific version ID to get. Omitting this will get the current version of the file
     */
    readonly version?: string;
    /**
     * Set to "paths" to export vector data
     */
    readonly geometry?: string;
    /**
     * A comma separated list of plugin IDs and/or the string "shared".
     * Any data present in the document written by those plugins will be included in the result in the `pluginData` and `sharedPluginData` properties.
     */
    readonly plugin_data?: string;
}
export type exportFormatOptions = 'jpg' | 'png' | 'svg' | 'pdf';
export interface FileImageParams {
    /** A list of node IDs to render */
    readonly ids: ReadonlyArray<string>;
    /** A number between 0.01 and 4, the image scaling factor */
    readonly scale?: number;
    /** A string enum for the image output format, can be "jpg", "png", "svg", or "pdf" */
    readonly format?: exportFormatOptions;
    /**
     * Whether to include id attributes for all SVG elements.
     * @default false
     */
    readonly svg_include_id?: boolean;
    /**
     * Whether to simplify inside/outside strokes and use stroke attribute if
     * possible instead of <mask>.
     * @default true
     */
    readonly svg_simplify_stroke?: boolean;
    /**
     * Use the full dimensions of the node regardless of whether or not it is cropped or the space around it is empty.
     * Use this to export text nodes without cropping.
     * @default false
     */
    readonly use_absolute_bounds?: boolean;
    /** A specific version ID to use. Omitting this will use the current version of the file */
    readonly version?: string;
}
export interface PostCommentParams {
    /** The text contents of the comment to post */
    readonly message: string;
    /** The absolute canvas position of where to place the comment */
    readonly client_meta?: Figma.Vector2 | Figma.FrameOffset;
    /** The comment to reply to, if any. This must be a root comment, that is, you cannot reply to a comment that is a reply itself (a reply has a parent_id). */
    readonly comment_id?: string;
}
export interface PaginationParams {
    /**
     * Number of items in a paged list of results.
     * @default 30
     */
    readonly page_size?: number;
    /**
     * A map that indicates the starting/ending point from which objects are returned.
     * The cursor value is an internally tracked integer that doesn't correspond to any Ids
     */
    readonly cursor?: {
        readonly before?: number;
        readonly after?: number;
    };
}
export interface ClientOptions {
    /** access token returned from OAuth authentication */
    readonly accessToken?: string;
    /** personal access token obtained from account settings */
    readonly personalAccessToken?: string;
    /** custom API root */
    readonly apiRoot?: string;
}
export interface ClientInterface {
    readonly client: AxiosInstance;
    /**
     * Returns the document refered to by :key as a JSON object.
     * The file key can be parsed from any Figma file url:
     * https://www.figma.com/file/:key/:title.
     * The "document" attribute contains a Node of type DOCUMENT.
     * @param {fileId} String File to export JSON from
     * @see https://www.figma.com/developers/api#get-files-endpoint
     */
    readonly file: (fileId: string, params?: FileParams) => AxiosPromise<Figma.FileResponse>;
    /**
     * Returns a list of the versions of a file.
     * The file key can be parsed from any Figma node url:
     * https://www.figma.com/file/:key/:title.
     * @param {fileId} String File to get version history from
     * @see https://www.figma.com/developers/api#get-file-versions-endpoint
     */
    readonly fileVersions: (fileId: string) => AxiosPromise<Figma.FileVersionsResponse>;
    /**
     * Returns the nodes referenced to by :ids as a JSON object.
     * The nodes are retrieved from the Figma file referenced to by :key.
     * The node Id and file key can be parsed from any Figma node url:
     * https://www.figma.com/file/:key/:title?node-id=:id.
     * @param {fileId} String File to export JSON from
     * @param {params} FileNodesParams
     * @see https://www.figma.com/developers/api#get-file-nodes-endpoint
     */
    readonly fileNodes: (fileId: string, params: FileNodesParams) => AxiosPromise<Figma.FileNodesResponse>;
    /**
     * If no error occurs, "images" will be populated with a map from
     * node IDs to URLs of the rendered images, and "status" will be omitted.
     * Important: the image map may contain values that are null.
     * This indicates that rendering of that specific node has failed.
     * This may be due to the node id not existing, or other reasons such
     * has the node having no renderable components. It is guaranteed that
     * any node that was requested for rendering will be represented in this
     * map whether or not the render succeeded.
     * @param {fileId} String File to export images from
     * @param {params} FileImageParams
     * @see https://www.figma.com/developers/api#get-images-endpoint
     */
    readonly fileImages: (fileId: string, params: FileImageParams) => AxiosPromise<Figma.FileImageResponse>;
    /**
     * Returns download links for all images present in image fills in a document.
     * Image fills are how Figma represents any user supplied images.
     * When you drag an image into Figma, we create a rectangle with a single
     * fill that represents the image, and the user is able to transform the
     * rectangle (and properties on the fill) as they wish.
     *
     * This endpoint returns a mapping from image references to the URLs at which
     * the images may be download. Image URLs will expire after no more than 14 days.
     * Image references are located in the output of the GET files endpoint under the
     * imageRef attribute in a Paint.
     * @param {fileId} String File to export images from
     * @see https://www.figma.com/developers/api#get-image-fills-endpoint
     */
    readonly fileImageFills: (fileId: string) => AxiosPromise<Figma.FileImageFillsResponse>;
    /**
     * A list of comments left on the file
     * @param {fileId} String File to get comments from
     * @see https://www.figma.com/developers/api#get-comments-endpoint
     */
    readonly comments: (fileId: string) => AxiosPromise<Figma.CommentsResponse>;
    /**
     * Posts a new comment on the file.
     * @param {fileId} String File to post comment to
     * @param {params} PostCommentParams
     * @see https://www.figma.com/developers/api#post-comments-endpoint
     */
    readonly postComment: (fileId: string, params: PostCommentParams) => AxiosPromise<Figma.Comment>;
    /**
     * Delete a comment from the file
     * @param {fileId} String File to delete comment from
     * @param {commentId} String id of the comment to be deleted
     * @see https://www.figma.com/developers/api#delete-comments-endpoint
     */
    readonly deleteComment: (fileId: string, commentId: string) => AxiosPromise<Figma.Comment>;
    /**
     * Get user information for the authenticated user.
     * @see https://www.figma.com/developers/api#get-me-endpoint
     */
    readonly me: () => AxiosPromise<Figma.User & {
        readonly email: string;
    }>;
    /**
     * Lists the projects for a specified team. Note that this will only
     * return projects visible to the authenticated user or owner of the
     * developer token.
     * @param {teamId} String Id of the team to list projects from
     * @see https://www.figma.com/developers/api#get-team-projects-endpoint
     */
    readonly teamProjects: (teamId: string) => AxiosPromise<Figma.TeamProjectsResponse>;
    /**
     * List the files in a given project.
     * @param {projectId} String Id of the project to list files from
     * @see https://www.figma.com/developers/api#get-project-files-endpoint
     */
    readonly projectFiles: (projectId: string) => AxiosPromise<Figma.ProjectFilesResponse>;
    /**
     * Get a paginated list of published components within a team library
     * @param {teamId} String Id of the team to list components from
     * @see https://www.figma.com/developers/api#get-team-components-endpoint
     */
    readonly teamComponents: (teamId: string, params?: PaginationParams) => AxiosPromise<Figma.TeamComponentsResponse>;
    /**
     * Get a list of published components within a file
     * @param {fileId} String Id of the file to list components from
     * @see https://www.figma.com/developers/api#get-file-components-endpoint
     */
    readonly fileComponents: (fileId: string) => AxiosPromise<Figma.FileComponentsResponse>;
    /**
     * Get metadata on a component by key.
     * @param {key} The unique identifier of the component.
     * @see https://www.figma.com/developers/api#get-component-endpoint
     */
    readonly component: (key: string) => AxiosPromise<Figma.ComponentResponse>;
    /**
     * Get a paginated list of published component sets within a team library
     * @param {teamId} String Id of the team to list components from
     * @see https://www.figma.com/developers/api#get-team-component-sets-endpoint
     */
    readonly teamComponentSets: (teamId: string, params?: PaginationParams) => AxiosPromise<Figma.TeamComponentSetsResponse>;
    /**
     * Get a list of published component sets within a file
     * @param {fileId} String Id of the file to list components from
     * @see https://www.figma.com/developers/api#get-team-component-sets-endpoint
     */
    readonly fileComponentSets: (fileId: string) => AxiosPromise<Figma.FileComponentSetsResponse>;
    /**
     * Get metadata on a component set by key.
     * @param {key} The unique identifier of the component.
     * @see https://www.figma.com/developers/api#get-component-sets-endpoint
     */
    readonly componentSet: (key: string) => AxiosPromise<Figma.ComponentSetResponse>;
    /**
     * Get a paginated list of published styles within a team library
     * @param {teamId} String Id of the team to list styles from
     * @see https://www.figma.com/developers/api#get-team-styles-endpoint
     */
    readonly teamStyles: (teamId: string, params?: PaginationParams) => AxiosPromise<Figma.TeamStylesResponse>;
    /**
     * Get a list of published styles within a file
     * @param {fileId} String Id of the file to list styles from
     * @see https://www.figma.com/developers/api#get-file-styles-endpoint
     */
    readonly fileStyles: (fileId: string) => AxiosPromise<Figma.FileStylesResponse>;
    /**
     * Get metadata on a style by key.
     * @param {key} The unique identifier of the style.
     * @see https://www.figma.com/developers/api#get-style-endpoint
     */
    readonly style: (key: string) => AxiosPromise<Figma.StyleResponse>;
}
export declare const Client: (opts: ClientOptions) => ClientInterface;
