/// import { EventEmitter } from 'events'; import { S3PutModifier, S3DeleteModifier, Item } from './types'; import { TransferItemCompleteEvent } from './Transfer'; import Stats from './Stats'; import { DiffKey } from './diff'; import { WildcardPolicy } from './generateInvalidations'; export declare type WebsyncModifier = T | ((item: Item) => T | Promise); export interface WebsyncPutModifiers { [key: string]: WebsyncModifier; } export interface WebsyncDeleteModifiers { [key: string]: WebsyncModifier; } export interface WebsyncTransferProgressEvent extends TransferItemCompleteEvent { progress: number; } export interface WebsyncEmitter { emit(event: 'progress', eventData: WebsyncTransferProgressEvent): boolean; on(event: 'progress', listener: (eventData: WebsyncTransferProgressEvent) => void): this; } export interface WebsyncOptions { source: string; target: string; include?: string; exclude?: string; diffBy?: DiffKey; modifiers?: WebsyncPutModifiers; deleteModifiers?: WebsyncDeleteModifiers; wildcardPolicy?: WildcardPolicy; wildcardAll?: boolean; invalidateDeletes?: boolean; distributions?: string[]; } export default class Websync extends EventEmitter implements WebsyncEmitter { private source; private target; private filterOptions; private putOptionsTable; private deleteOptionsTable; private diffBy?; private wildcardPolicy; private wildcardAll; private invalidateDeletes; private initialized; private completed; private diffs; private stats; private transfer; private invalidations; private invalidator; private distributions; private completeCount; constructor(options: WebsyncOptions); initialize(): Promise; constitutesPayment(): boolean; sync(invalidate?: boolean): Promise; getStats(): Stats; }