/** * Extended files API 3P storage providers, features like sending Blob from Teams to 3P app on user * actions like drag and drop to compose * @beta * @module */ import { SdkError } from './interfaces'; /** * Interface to assemble file chunks * @beta */ export interface AssembleAttachment { /** A number representing the sequence of the attachment in the file chunks. */ sequence: number; /** A Blob object representing the data of the file chunks. */ file: Blob; } /** * Object used to represent a file * @beta * */ export interface FilesFor3PStorage extends Blob { /** * A number that represents the number of milliseconds since the Unix epoch */ lastModified: number; /** * Name of the file */ name: string; /** * file type */ type: string; /** * A string containing the path of the file relative to the ancestor directory the user selected */ webkitRelativePath?: string; } /** * File chunks an output of getDragAndDropFiles API from platform * @beta */ export interface FileChunk { /** * Base 64 data for the requested uri */ chunk: string; /** * chunk sequence number */ chunkSequence: number; /** * Indicates whether this chunk is the final segment of a file */ endOfFile: boolean; } /** * Output of getDragAndDropFiles API from platform * @beta */ export interface FileResult { /** * Error encountered in getDragAndDropFiles API */ error?: SdkError; /** * File chunk which will be assemebled and converted into a blob */ fileChunk: FileChunk; /** * File index of the file for which chunk data is getting recieved */ fileIndex: number; /** * File type/MIME type which is getting recieved */ fileType: string; /** * Indicates whether this file is the last one in a sequence. */ isLastFile: boolean; /** * The name of the file. */ fileName: string; } /** * Defines the callback function received from Third Party App * @beta */ export interface DragAndDropFileCallback { /** * Definition of the callback which is received from third party app when calling {@link thirdPartyCloudStorage.getDragAndDropFiles} * An array of drag and dropped files {@link thirdPartyCloudStorage.FilesFor3PStorage} * Error encountered during the API call {@link SdkError} */ (files: FilesFor3PStorage[], error?: SdkError): void; } /** * Get drag-and-drop files using a callback. * * @param {string} dragAndDropInput - unique id which is a combination of replyToId + threadId of teams chat and channel. * Both replyToId and threadId can be fetched from application context. * @param {DragAndDropFileCallback} dragAndDropFileCallback - callback * A callback function to handle the result of the operation * @beta */ export declare function getDragAndDropFiles(dragAndDropInput: string, dragAndDropFileCallback: DragAndDropFileCallback): void; /** * Checks if the thirdPartyCloudStorage capability is supported by the host * @returns boolean to represent whether the thirdPartyCloudStorage capability is supported * * @throws Error if {@linkcode app.initialize} has not successfully completed * @beta */ export declare function isSupported(): boolean;