- 
    Type:
New Feature
 - 
    Resolution: Fixed
 - 
    Priority:
Major - P3
 - 
    Affects Version/s: 5.0.0
 - 
    Component/s: Client Side Encryption
 
Use Case
In order to be compliant with the 5.0 driver, mongo-client-encryption must remove all usages of callbacks when using the driver.
User Impact
- Breaking Change: ClientEncryption APIs will now only return promises
 
Dependencies
- NA
 
Unknowns
- NA
 
Acceptance Criteria
Implementation Requirements
- Convert public API to async await.
	
- Remove any parameter assignment that was necessary as a result of having optional callbacks.
 - List of APIs:
		
- ClientEncryption.encrypt()
 - ClientEncryption.decrypt()
 - ClientEncryption.createDataKey()
			
- Fix return type to be UUID
 
 
 
 - Ensure no types related to callbacks are exported
 
Testing Requirements
- Refactor callback using tests to promise using tests
 - Add test for UUID instance at runtime from createDataKey
 
Documentation Requirements
- Release notes
 
Follow Up Requirements
- Covered in 
NODE-5514 
- is depended on by
 - 
                    
COMPASS-6440 Investigate changes in NODE-4986: Make Mongo Client Encryption Async/Await
-         
 - Closed
 
 -         
 
- is duplicated by
 - 
                    
NODE-5513 remove callbacks from public API
-         
 - Closed
 
 -         
 
- is related to
 - 
                    
NODE-4420 Convert FLE to Typescript
-         
 - Closed
 
 -         
 
- related to
 - 
                    
NODE-5283 Move js logic from mongodb-client-encryption to the driver
-         
 - Closed
 
 -         
 
1. 
 | 
                                            remove callbacks from public API | NODE-5513 |     
             | 
                                            Closed | Unassigned |