@circle-fin/w3s-pw-web-sdk
Version:
Javascript/Typescript SDK for Circle Programmable Wallets
347 lines (262 loc) • 14 kB
Markdown
# Usage Documentation
## Table of Contents
- [Usage Documentation](#usage-documentation)
- [Table of Contents](#table-of-contents)
- [Overview](#overview)
- [Enums](#enums)
- [ChallengeType](#challengetype)
- [ChallengeStatus](#challengestatus)
- [ErrorCode](#errorcode)
- [Interfaces](#interfaces)
- [Configs](#configs)
- [AppSettings](#appsettings)
- [Authentication](#authentication)
- [LoginConfigs](#loginconfigs)
- [Definitions](#definitions)
- [SocialLoginProvider](#socialloginprovider)
- [Challenge](#challenge)
- [ChallengeResult](#challengeresult)
- [SignMessageResult](#signmessageresult)
- [SignTransactionResult](#signtransactionresult)
- [SocialLoginResult](#socialloginresult)
- [EmailLoginResult](#emailloginresult)
- [OauthInfo](#oauthinfo)
- [Error](#error)
- [SocialLoginCompleteCallback](#sociallogincompletecallback)
- [Class Definition](#class-definition)
- [W3SSdk](#w3ssdk)
- [Constructor](#constructor)
- [Methods](#methods)
- [setAppSettings](#setappsettings)
- [setAuthentication](#setauthentication)
- [updateConfigs](#updateconfigs)
- [getDeviceId](#getdeviceid)
- [performLogin](#performlogin)
- [verifyOtp](#verifyotp)
- [execute](#execute)
---
## Overview
Programmable Wallets Web SDK secures the process when users input their secret data, for example, PIN code and recovery questions. It also has various interfaces to interact with the [W3S APIs](https://developers.circle.com/w3s/reference/createuserwithpinchallenge) as in wallet creation, transaction initiation, also sign message (EIP-191) and sign typed-data (EIP-712) via the `challengeId`.
## Enums
### ChallengeType
Enumerates the types of challenges supported.
```typescript
enum ChallengeType {
INITIALIZE,
SET_PIN,
RESTORE_PIN,
SET_SECURITY_QUESTIONS,
CREATE_WALLET,
CREATE_TRANSACTION,
ACCELERATE_TRANSACTION,
CANCEL_TRANSACTION,
CONTRACT_EXECUTION,
SIGN_MESSAGE,
SIGN_TYPEDDATA,
UNKNOWN,
}
```
### ChallengeStatus
Enumerates the possible statuses for a challenge.
```typescript
enum ChallengeStatus {
COMPLETE,
EXPIRED,
FAILED,
IN_PROGRESS,
PENDING,
}
```
### ErrorCode
Enumerates the types of error code.
```typescript
enum enum ErrorCode {
unknown = -1,
success = 0,
apiParameterMissing = 1,
apiParameterInvalid = 2,
forbidden = 3,
unauthorized = 4,
retry = 9,
customerSuspended = 10,
pending = 11,
invalidSession = 12,
invalidPartnerId = 13,
invalidMessage = 14,
invalidPhone = 15,
userAlreadyExisted = 155101,
userNotFound = 155102,
userTokenNotFound = 155103,
userTokenExpired = 155104,
invalidUserToken = 155105,
userWasInitialized = 155106,
userHasSetPin = 155107,
userHasSetSecurityQuestion = 155108,
userWasDisabled = 155109,
userDoesNotSetPinYet = 155110,
userDoesNotSetSecurityQuestionYet = 155111,
incorrectUserPin = 155112,
incorrectDeviceId = 155113,
incorrectAppId = 155114,
incorrectSecurityAnswers = 155115,
invalidChallengeId = 155116,
invalidApproveContent = 155117,
invalidEncryptionKey = 155118,
userPinLocked = 155119,
securityAnswersLocked = 155120,
notEnoughFunds = 155201,
notEnoughBalance = 155202,
exceedWithdrawLimit = 155203,
minimumFundsRequired = 155204,
invalidTransactionFee = 155205,
rejectedOnAmlScreening = 155206,
tagRequired = 155207,
gasLimitTooLow = 155208,
transactionDataNotEncodedProperly = 155209,
fullNodeReturnedError = 155210,
walletSetupRequired = 155211,
lowerThenMinimumAccountBalance = 155212,
rejectedByBlockchain = 155213,
droppedAsPartOfReorg = 155214,
operationNotSupport = 155215,
amountBelowMinimum = 155216,
wrongNftTokenIdNumber = 155217,
invalidDestinationAddress = 155218,
tokenWalletChainMismatch = 155219,
wrongAmountsNumber = 155220,
walletIsFrozen = 155501,
maxWalletLimitReached = 155502,
walletSetIdMutuallyExclusive = 155503,
metadataUnmatched = 155504,
userCanceled = 155701,
launchUiFailed = 155702,
pinCodeNotMatched = 155703,
insecurePinCode = 155704,
hintsMatchAnswers = 155705,
networkError = 155706,
userSecretMissing = 155717,
invalidUserTokenFormat= 155718,
userTokenMismatch = 155719,
walletIdNotFound = 156001,
tokenIdNotFound = 156002,
transactionIdNotFound = 156003,
entityCredentialNotFound = 156004,
walletSetIdNotFound = 156005,
}
```
## Interfaces
### Configs
- `appSettings` [\<AppSettings>](#appsettings) Application settings object
- `authentication` [\<Authentication>](#authentication) Authentication object
- `socialLoginConfig` [\<SocialLoginConfig>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Social login configuration object
### AppSettings
Holds application settings.
- `appId` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Application ID, retrieved from Circle Web3 Services Console
### Authentication
Holds authentication information.
- `userToken` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) User token
- `encryptionKey` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Encryption key
### LoginConfigs
Holds login configuration information.
- `google` [\<object> | undefined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#objects) (optional): Configuration for Google login.
- `clientId` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type): Google client ID.
- `redirectUri` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type): Google redirect URI.
- `facebook` [\<object> | undefined](<[#facebook](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#objects)>) (optional): Configuration for Facebook login.
- `appId` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type): Facebook app ID.
- `redirectUri` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type): Facebook redirect URI.
- `apple` [\<FirebaseOptions> | undefined](https://firebase.google.com/docs/reference/kotlin/com/google/firebase/FirebaseOptions) (optional): Configuration for Apple login, using Firebase.
- `deviceToken` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type): Device token.
- `deviceEncryptionKey` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type): Device encryption key.
- `otpToken` [\<string> | undefined](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) (optional): OTP token.
#### Definitions
- **google**: Configuration object for Google login.
- **clientId**: The Client ID for Google login.
- **redirectUri**: The Redirect URI for Google login.
- **facebook**: Configuration object for Facebook login.
- **appId**: The App ID for Facebook login.
- **redirectUri**: The Redirect URI for Facebook login.
- **apple**: Configuration for Apple login, using Firebase.
- **FirebaseOptions**: The Firebase configuration object.
- **deviceToken**: The token used to identify the device.
- **deviceEncryptionKey**: The encryption key used for the device.
- **otpToken**: The optional OTP token for verification.
### SocialLoginProvider
- `APPLE` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Apple login provider
- `FACEBOOK` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Facebook login provider
- `GOOGLE` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Google login provider
### Challenge
Holds information about a challenge.
- `challengeId` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Challenge Id
### ChallengeResult
Holds the basic information of a challenge.
- `type` [\<ChallengeType>](#challengetype) Challenge type
- `status` [\<ChallengeStatus>](#challengestatus) Challenge status
### SignMessageResult
Inherits from [ChallengeResult](#challengeresult). Holds the result of a sign message or sign typed-data challenge.
- `signature` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Signature result after signing
### SignTransactionResult
Inherits from [ChallengeResult](#challengeresult). Holds the result of a sign transaction challenge.
- `signature` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Signature result after signing
- `txHash` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Transaction hash
- `signedTransaction` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Signed transaction
### SocialLoginResult
Holds the result of a social login.
- `userToken` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) User token
- `encryptionKey` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Encryption key
- `refreshToken` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Refresh token
- `oAuthInfo` [\<object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#objects) OAuth information
### EmailLoginResult
Holds the result of an email login.
- `userToken` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) User token
- `encryptionKey` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Encryption key
- `refreshToken` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Refresh token
### OauthInfo
Holds the OAuth information.
- `provider` [\<SocialLoginProvider>](#socialloginprovider) Social login
- `scope` [\<string[]>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) OAuth scope
- socialUserUUID [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Social login user UUID
- `socialUserInfo` [\<object>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#objects) Social login user information
- email [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Email
- name [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Name
- phone [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Phone
### Error
Holds error information.
- `code` [\<number | undefined>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#number_type) Internal error code
- `message` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Error message
### SocialLoginCompleteCallback
Callback function for social login completion.
- `error` [\<Error>](#error) Presents if error occurs
- `result` [\<SocialLoginResult>](#socialloginresult) | [\<EmailLoginResult>](#emailloginresult) | undefined> Presents and contains the result of the social login when the social login is completed
## Class Definition
### W3SSdk
#### Constructor
Initializes a new instance of `W3SSdk`.
The constructor initializes a new instance of the W3SSdk class. If an instance already exists, it will set up the instance with the provided configurations and callback function, then return the existing instance. If an instance does not already exist, it will create a new one, setting up with the provided configurations and callback function, and assign the created instance to W3SSdk.instance.
- `configs` [\<Configs>](#configs) Configurations object
- `socialLoginCompleteCallback` [\<SocialLoginCompleteCallback | undefined>](#sociallogincompletecallback) Callback function
#### Methods
##### setAppSettings
Sets the application settings.
- `appSettings` [\<AppSettings>](#appsettings) Application settings object
##### setAuthentication
Sets the authentication information.
- `auth` [\<Authentication>](#authentication) Authentication object
##### updateConfigs
Updates the configurations.
- `configs` [\<Configs>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) Configurations object
- `onSocialLoginComplete` [\<Function | undefined>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) Callback function
- `error` [\<Error>](#error) Presents if error occurs
- `result` [\<SocialLoginResult>](#socialloginresult) | [\<EmailLoginResult>](#emailloginresult) | undefined> Presents and contains the result of the social login when the social login is completed
##### getDeviceId
Gets the device ID.
##### performLogin
Performs a social login.
- `provider` [\<SocialLoginProvider>](#socialloginprovider) Social login provider
##### verifyOtp
Verifies the OTP.
##### execute
Executes a challenge.
- `challengeId` [\<string>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#string_type) Challenge ID
- `onCompleted` [\<Function | undefined>](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) Callback function
- `error` [\<Error>](#error) Presents if error occurs
- `result`<[ChallengeResult](#challengeresult) | [SignMessageResult](#signmessageresult) | [SignTransactionResult](#signtransactionresult) | undefined> Presents and contains the result of the challenge when the challenge is completed