@zerochain/sdk
Version:
The Züs JS SDK is a JavaScript client library that provides a convenient interface for interacting with the Züs Network. It allows developers to perform various operations such as creating and managing allocations, uploading and downloading files, executi
177 lines (166 loc) • 4.28 kB
text/typescript
// TODO: not used in webapps: splitKeys, registerAuthorizer, registerAuthCommon, callAuth
import { getWasm } from '@/setup/wasm'
import type { ActiveWallet, NetworkDomain } from '@/types/wallet'
/**
* Split keys from the primary master key
*
* splitKeys splits the primary master key into n number of keys
*/
export const splitKeys = async ({
domain,
wallet,
privateKey,
numSplits,
}: {
domain: NetworkDomain
wallet: ActiveWallet
/** Primary master key */
privateKey: string
/** Number of keys to split into */
numSplits: number
}): Promise<string> => {
const goWasm = await getWasm({ domain, wallet })
const resp = await goWasm.sdk.splitKeys(privateKey, numSplits)
return resp
}
/**
* setWalletInfo sets the Split key wallet info
*
* setWalletInfo should be set before any transaction or client specific APIs.
*/
export const setWalletInfo = async ({
domain,
wallet,
jsonWallet,
splitKeyWallet = false,
}: {
domain: NetworkDomain
wallet: ActiveWallet
/** JSON format of wallet */
jsonWallet: string
/**
* `true` If wallet keys is split.
*
* splitKeyWallet parameter is valid only if SignatureScheme is `bls0chain`.
*
* @default false
*/
splitKeyWallet?: boolean
}): Promise<void> => {
const goWasm = await getWasm({ domain, wallet })
return goWasm.sdk.setWalletInfo(jsonWallet, splitKeyWallet)
}
/** setAuthUrl will be called by app to set zauth URL to SDK. */
export const setAuthUrl = async ({
domain,
wallet,
url,
}: {
domain: NetworkDomain
wallet: ActiveWallet
/** URL of zAuth server */
url: string
}): Promise<void> => {
const goWasm = await getWasm({ domain, wallet })
return goWasm.sdk.setAuthUrl(url)
}
/**
* registerAuthorizer registers the callback function to authorize the transaction.
*
* It stores the callback function in the global variable `authCallback`
*/
export const registerAuthorizer = async ({
domain,
wallet,
authTxnCallback,
}: {
domain: NetworkDomain
wallet: ActiveWallet
authTxnCallback: (message: string) => void
}): Promise<void> => {
const goWasm = await getWasm({ domain, wallet })
const registerAuthorizer = await goWasm.sdk.registerAuthorizer
await registerAuthorizer(authTxnCallback)
}
export const registerAuthCommon = async ({
domain,
wallet,
authTxnCallback,
}: {
domain: NetworkDomain
wallet: ActiveWallet
authTxnCallback: (message: string) => void
}): Promise<void> => {
const goWasm = await getWasm({ domain, wallet })
const registerAuthCommon = await goWasm.sdk.registerAuthCommon
await registerAuthCommon(authTxnCallback)
}
/**
* callAuth calls the authorization callback function and provides the message to pass to it.
*
* The message is passed as the first argument to the JS calling.
*/
// export const callAuth = async ({
// domain,
// wallet,
// }: {
// domain: NetworkDomain
// wallet: ActiveWallet
// }) => {
// const goWasm = await getWasm({ domain, wallet })
// const callAuth = await goWasm.sdk.callAuth
// return callAuth(message) // TODO: is this correct? this method is not used in webapps
// }
/** authResponse Publishes the response to the authorization request. */
export const authResponse = async ({
domain,
wallet,
response,
}: {
domain: NetworkDomain
wallet: ActiveWallet
response: string
}): Promise<void> => {
const goWasm = await getWasm({ domain, wallet })
return goWasm.sdk.authResponse(response)
}
export const registerZauthServer = async ({
domain,
wallet,
serverAddress,
}: {
domain: NetworkDomain
wallet: ActiveWallet
serverAddress: string
}): Promise<void> => {
const goWasm = await getWasm({ domain, wallet })
return goWasm.sdk.registerZauthServer(serverAddress)
}
export const zauthRetrieveKey = async ({
domain,
wallet,
clientId,
peerPublicKey,
serverAddress,
token,
}: {
domain: NetworkDomain
wallet: ActiveWallet
/** Wallet ID */
clientId: string
/** Peer public key */
peerPublicKey: string
/** Server address */
serverAddress: string
/** JWT Token */
token: string
}): Promise<string> => {
const goWasm = await getWasm({ domain, wallet })
const resp = await goWasm.sdk.zauthRetrieveKey(
clientId,
peerPublicKey,
serverAddress,
token
)
return resp
}