text: declare namespace cpFile {
  	interface Options {
  		/**
  		Overwrite existing file.
  
  		@default true
  		*/
  		readonly overwrite?: boolean;
  	}
  
  	interface ProgressData {
  		/**
  		Absolute path to source.
  		*/
  		src: string;
  
  		/**
  		Absolute path to destination.
  		*/
  		dest: string;
  
  		/**
  		File size in bytes.
  		*/
  		size: number;
  
  		/**
  		Copied size in bytes.
  		*/
  		written: number;
  
  		/**
  		Copied percentage, a value between `0` and `1`.
  		*/
  		percent: number;
  	}
  
  	interface ProgressEmitter {
  		/**
  		For empty files, the `progress` event is emitted only once.
  		*/
  		on(event: 'progress', handler: (data: ProgressData) => void): Promise<void>;
  	}
  }
  
  declare const cpFile: {
  	/**
  	Copy a file.
  
  	@param source - File you want to copy.
  	@param destination - Where you want the file copied.
  	@returns A `Promise` that resolves when the file is copied.
  
  	@example
  	```
  	import cpFile = require('cp-file');
  
  	(async () => {
  		await cpFile('source/unicorn.png', 'destination/unicorn.png');
  		console.log('File copied');
  	})();
  	```
  	*/
  	(source: string, destination: string, options?: cpFile.Options): Promise<void> & cpFile.ProgressEmitter;
  
  	/**
  	Copy a file synchronously.
  
  	@param source - File you want to copy.
  	@param destination - Where you want the file copied.
  	*/
  	sync(source: string, destination: string, options?: cpFile.Options): void;
  
  	// TODO: Remove this for the next major release
  	default: typeof cpFile;
  };
  
  export = cpFile;
  