namespace pxt . workspace { export type ScriptText = pxt . Map < string > ; export interface Project { header ? : Header ; text ? : ScriptText ; } export interface Asset { name : string ; size : number ; url : string ; } export type Version = any ; export interface File { header : Header ; text : ScriptText ; version : Version ; } export interface WorkspaceProvider { listAsync ( ) : Promise < Header [ ] > ; getAsync ( h ) : Promise < File > ; setAsync ( h , prevVersion , text ? ) : Promise < Version > ; deleteAsync ? : ( h : Header , prevVersion : Version ) => Promise < void > ; resetAsync ( ) : Promise < void > ; loadedAsync ? : ( ) => Promise < void > ; getSyncState ? : ( ) => pxt . editor . EditorSyncState ; saveScreenshotAsync ? : ( h : Header , screenshot : string , icon : string ) => Promise < void > ; saveAssetAsync ? : ( id : string , filename : string , data : Uint8Array ) => Promise < void > ; listAssetsAsync ? : ( id : string ) => Promise < Asset [ ] > ; fireEvent ? : ( ev : pxt . editor . events . Event ) => void ; } export function freshHeader ( name , modTime ) { let header = { target : pxt . appTarget . id , targetVersion : pxt . appTarget . versions . target , name : name , meta : { } , editor : pxt . JAVASCRIPT_PROJECT_NAME , pubId : "" , pubCurrent : false , _rev : null , id : U . guidGen ( ) , recentUse : modTime , modificationTime : modTime , cloudUserId : null , cloudCurrent : false , cloudVersion : null , cloudLastSyncTime : 0 , isDeleted : false , } ; return header ; } }