/** @module @twilio-labs/serverless-api/dist/api */
import { AssetApiResource, AssetResource, ServerlessResourceConfig, Sid, VersionResource, ClientConfig } from '../types';
import { TwilioServerlessApiClient } from '../client';
/**
 * Calls the API to create a new Asset Resource
 *
 * @param  {string} name friendly name of the resource
 * @param  {string} serviceSid service to register asset under
 * @param  {TwilioServerlessApiClient} client API client
 * @returns {Promise<AssetApiResource>}
 */
export declare function createAssetResource(name: string, serviceSid: string, client: TwilioServerlessApiClient): Promise<AssetApiResource>;
/**
 * Calls the API to retrieve a list of all assets
 *
 * @param {string} serviceSid service to look for assets
 * @param {TwilioServerlessApiClient} client API client
 * @returns {Promise<AssetApiResource[]>}
 */
export declare function listAssetResources(serviceSid: string, client: TwilioServerlessApiClient): Promise<AssetApiResource[]>;
/**
 * Given a list of resources it will first check which assets already exists
 * and create the remaining ones.
 *
 * @param  {FileInfo[]} assets
 * @param  {string} serviceSid
 * @param  {TwilioServerlessApiClient} client
 * @returns {Promise<AssetResource[]>}
 */
export declare function getOrCreateAssetResources(assets: ServerlessResourceConfig[], serviceSid: string, client: TwilioServerlessApiClient): Promise<AssetResource[]>;
/**
 * Given an asset it will create a new version instance for it
 *
 * @param  {AssetResource} asset the one to create a new version for
 * @param  {string} serviceSid the service to create the asset version for
 * @param  {TwilioServerlessApiClient} client API client
 * @returns {Promise<VersionResource>}
 */
export declare function createAssetVersion(asset: AssetResource, serviceSid: string, client: TwilioServerlessApiClient, clientConfig: ClientConfig): Promise<VersionResource>;
/**
 * Uploads a given asset by creating a new version and uploading the content there
 *
 * @export
 * @param {AssetResource} asset The asset to upload
 * @param {string} serviceSid The service to upload it to
 * @param {TwilioServerlessApiClient} client The API client
 * @returns {Promise<Sid>}
 */
export declare function uploadAsset(asset: AssetResource, serviceSid: string, client: TwilioServerlessApiClient, clientConfig: ClientConfig): Promise<Sid>;
