UNPKG

@0xobelisk/rooch-client

Version:
1 lines 40.2 kB
{"version":3,"sources":["../src/index.ts","../src/dubhe.ts","../src/libs/roochAccountManager/index.ts","../src/libs/roochAccountManager/keypair.ts","../src/libs/roochAccountManager/crypto.ts","../src/libs/roochInteractor/roochInteractor.ts","../src/libs/roochInteractor/util.ts","../src/libs/roochContractFactory/index.ts","../src/metadata/index.ts"],"sourcesContent":["export * from '@roochnetwork/rooch-sdk';\nexport type * from '@roochnetwork/rooch-sdk';\nexport { Dubhe } from './dubhe';\nexport { RoochAccountManager } from './libs/roochAccountManager';\nexport { RoochContractFactory } from './libs/roochContractFactory';\nexport { RoochInteractor } from './libs/roochInteractor';\nexport { loadMetadata } from './metadata';\nexport type * from './types';\n","import {\n getRoochNodeUrl,\n Args,\n TypeTag,\n AnnotatedFunctionResultView,\n Secp256k1Keypair,\n ExecuteTransactionResponseView,\n ModuleABIView,\n BalanceInfoView,\n Transaction,\n GetStatesParams,\n ObjectStateView,\n ListStatesParams,\n PaginatedStateKVViews,\n GetEventsByEventHandleParams,\n PaginatedEventViews,\n address,\n TypeArgs,\n} from '@roochnetwork/rooch-sdk';\nimport { RoochAccountManager } from './libs/roochAccountManager';\nimport { RoochInteractor } from './libs/roochInteractor';\nimport { RoochContractFactory } from './libs/roochContractFactory';\nimport {\n DubheParams,\n DerivePathParams,\n ContractQuery,\n ContractTx,\n MapModuleFuncQuery,\n MapModuleFuncTx,\n MoveModuleFuncType,\n} from './types';\n\nexport function isUndefined(value?: unknown): value is undefined {\n return value === undefined;\n}\n\nexport function withMeta<T extends { meta: MoveModuleFuncType }>(\n meta: MoveModuleFuncType,\n creator: Omit<T, 'meta'>\n): T {\n (creator as T).meta = meta;\n\n return creator as T;\n}\n\nfunction createQuery(\n meta: MoveModuleFuncType,\n fn: (\n params?: Args[],\n typeArguments?: TypeTag[]\n ) => Promise<AnnotatedFunctionResultView>\n): ContractQuery {\n return withMeta(\n meta,\n async ({\n params,\n typeArguments,\n }: {\n params?: Args[];\n typeArguments?: TypeTag[];\n } = {}): Promise<AnnotatedFunctionResultView> => {\n const result = await fn(params, typeArguments);\n return result;\n }\n );\n}\n\nfunction createTx(\n meta: MoveModuleFuncType,\n fn: (\n tx: Transaction,\n signer?: Secp256k1Keypair,\n params?: Args[],\n typeArguments?: TypeTag[],\n isRaw?: boolean\n ) => Promise<ExecuteTransactionResponseView>\n): ContractTx {\n return withMeta(\n meta,\n async ({\n tx,\n signer,\n params,\n typeArguments,\n isRaw,\n }: {\n tx: Transaction;\n signer?: Secp256k1Keypair;\n params?: Args[];\n typeArguments?: TypeTag[];\n isRaw?: boolean;\n }): Promise<ExecuteTransactionResponseView> => {\n // const result = await fn(signer, params, typeArguments, isRaw);\n const result = await fn(tx, signer, params, typeArguments, isRaw);\n return result;\n }\n );\n}\n\n/**\n * @class Dubhe\n * @description This class is used to aggregate the tools that used to interact with SUI network.\n */\nexport class Dubhe {\n public accountManager: RoochAccountManager;\n public roochInteractor: RoochInteractor;\n public contractFactory: RoochContractFactory;\n public packageId: string | undefined;\n public metadata: ModuleABIView[] | undefined;\n\n readonly #query: MapModuleFuncQuery = {};\n readonly #tx: MapModuleFuncTx = {};\n /**\n * Support the following ways to init the DubheClient:\n * 1. mnemonics\n * 2. secretKey (base64 or hex)\n * If none of them is provided, will generate a random mnemonics with 24 words.\n *\n * @param mnemonics, 12 or 24 mnemonics words, separated by space\n * @param secretKey, base64 or hex string, when mnemonics is provided, secretKey will be ignored\n * @param networkType, 'testnet' | 'mainnet' | 'devnet' | 'localnet', default is 'devnet'\n * @param fullnodeUrl, the fullnode url, default is the preconfig fullnode url for the given network type\n * @param packageId\n */\n constructor({\n mnemonics,\n secretKey,\n networkType,\n fullnodeUrls,\n packageId,\n metadata,\n }: DubheParams = {}) {\n // Init the account manager\n this.accountManager = new RoochAccountManager({ mnemonics, secretKey });\n // Init the rpc provider\n fullnodeUrls = fullnodeUrls || [getRoochNodeUrl(networkType ?? 'mainnet')];\n this.roochInteractor = new RoochInteractor(fullnodeUrls);\n\n this.packageId = packageId;\n if (metadata !== undefined) {\n this.metadata = metadata as ModuleABIView[];\n Object.values(metadata as ModuleABIView[]).forEach((metadataRes) => {\n let contractAddress = metadataRes.address;\n let moduleName = metadataRes.name;\n Object.values(metadataRes.functions).forEach((value) => {\n const meta: MoveModuleFuncType = {\n contractAddress,\n moduleName,\n funcName: value.name,\n isEntry: value.is_entry,\n typeParams: value.type_params,\n params: value.params,\n return: value.return,\n };\n\n // if (value.is_view) {\n if (isUndefined(this.#query[moduleName])) {\n this.#query[moduleName] = {};\n }\n if (isUndefined(this.#query[moduleName][value.name])) {\n this.#query[moduleName][value.name] = createQuery(\n meta,\n (p, type_p) => this.#read(meta, p, type_p)\n );\n }\n // }\n\n // if (value.is_entry) {\n if (isUndefined(this.#tx[moduleName])) {\n this.#tx[moduleName] = {};\n }\n if (isUndefined(this.#tx[moduleName][value.name])) {\n this.#tx[moduleName][value.name] = createTx(\n meta,\n (tx, s, p, type_p, isRaw) =>\n this.#exec(meta, tx, s, p, type_p, isRaw)\n );\n }\n // }\n });\n });\n }\n this.contractFactory = new RoochContractFactory({\n packageId,\n metadata,\n });\n }\n\n public get query(): MapModuleFuncQuery {\n return this.#query;\n }\n\n public get tx(): MapModuleFuncTx {\n return this.#tx;\n }\n\n #exec = async (\n meta: MoveModuleFuncType,\n tx: Transaction,\n signer?: Secp256k1Keypair,\n params?: Args[],\n typeArguments?: TypeTag[],\n isRaw?: boolean\n ) => {\n if (isRaw === true) {\n return tx.callFunction({\n target: `${this.contractFactory.packageId}::${meta.moduleName}::${meta.funcName}`,\n args: params,\n typeArgs: typeArguments,\n });\n }\n\n tx.callFunction({\n target: `${this.contractFactory.packageId}::${meta.moduleName}::${meta.funcName}`,\n args: params,\n typeArgs: typeArguments,\n });\n return await this.signAndExecuteTransaction(tx, signer);\n };\n\n #read = async (\n meta: MoveModuleFuncType,\n params?: Args[],\n typeArguments?: TypeTag[]\n ) => {\n return this.roochInteractor.executeViewFunction(\n meta.contractAddress,\n meta.moduleName,\n meta.funcName,\n typeArguments,\n params\n );\n };\n\n /**\n * if derivePathParams is not provided or mnemonics is empty, it will return the keypair.\n * else:\n * it will generate signer from the mnemonic with the given derivePathParams.\n * @param derivePathParams, such as { accountIndex: 2, isExternal: false, addressIndex: 10 }, comply with the BIP44 standard\n */\n getKeypair(derivePathParams?: DerivePathParams) {\n return this.accountManager.getKeyPair(derivePathParams);\n }\n\n /**\n * if derivePathParams is not provided or mnemonics is empty, it will return the currentSigner.\n * else:\n * it will generate signer from the mnemonic with the given derivePathParams.\n * @param derivePathParams, such as { accountIndex: 2, isExternal: false, addressIndex: 10 }, comply with the BIP44 standard\n */\n getSigner(derivePathParams?: DerivePathParams) {\n const keyPair = this.accountManager.getKeyPair(derivePathParams);\n return keyPair;\n }\n\n /**\n * @description Switch the current account with the given derivePathParams\n * @param derivePathParams, such as { accountIndex: 2, isExternal: false, addressIndex: 10 }, comply with the BIP44 standard\n */\n switchAccount(derivePathParams: DerivePathParams) {\n this.accountManager.switchAccount(derivePathParams);\n }\n\n /**\n * @description Get the address of the account for the given derivePathParams\n * @param derivePathParams, such as { accountIndex: 2, isExternal: false, addressIndex: 10 }, comply with the BIP44 standard\n */\n getBech32Address(derivePathParams?: DerivePathParams) {\n return this.accountManager.getAddress(derivePathParams).toBech32Address();\n }\n\n getRoochAddress(derivePathParams?: DerivePathParams) {\n return this.accountManager.getAddress(derivePathParams);\n }\n\n getHexAddress(derivePathParams?: DerivePathParams) {\n return this.accountManager.getAddress(derivePathParams).toHexAddress();\n }\n\n getBitcoinAddress(derivePathParams?: DerivePathParams) {\n return this.accountManager.getBitcoinAddress(derivePathParams);\n }\n\n currentAddress() {\n return this.accountManager.currentAddress;\n }\n\n client() {\n return this.roochInteractor.currentClient;\n }\n\n getPackageId() {\n return this.contractFactory.packageId;\n }\n\n getMetadata(): ModuleABIView[] | undefined {\n return this.contractFactory.metadata;\n }\n\n getNetwork() {\n return this.roochInteractor.network;\n }\n\n getFullNodeUrl() {\n return this.roochInteractor.currentFullNode;\n }\n\n async getRpcApiVersion(): Promise<string | undefined> {\n return this.roochInteractor.getRpcApiVersion();\n }\n\n async getChainId(): Promise<bigint> {\n return this.roochInteractor.getChainId();\n }\n\n async getBalance(\n accountAddress?: string,\n coinType?: string,\n outputOnly?: boolean\n ): Promise<BalanceInfoView | string> {\n try {\n if (accountAddress === undefined) {\n accountAddress = this.getBech32Address();\n }\n if (coinType === undefined) {\n coinType = '0x3::gas_coin::RGas';\n }\n\n const resource = await this.roochInteractor.getBalance(\n accountAddress,\n coinType\n );\n\n return outputOnly ? resource : resource.balance;\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n throw new Error(\n `Failed to get ${coinType} balance for address ${accountAddress}: ${errorMessage}`\n );\n }\n }\n\n async signAndExecuteTransaction(\n transaction: Transaction,\n signer?: Secp256k1Keypair,\n derivePathParams?: DerivePathParams\n ) {\n if (signer === undefined) {\n signer = this.getSigner(derivePathParams);\n }\n\n return this.roochInteractor.signAndExecuteTransaction(transaction, signer, {\n withOutput: true,\n });\n }\n\n async signAndSendTransaction(\n tx: Transaction,\n derivePathParams?: DerivePathParams\n ) {\n const sender = this.getSigner(derivePathParams);\n return this.signAndExecuteTransaction(tx, sender);\n }\n\n async createSession(\n sessionArgs: {\n appName: string;\n appUrl: string;\n scopes: string[];\n },\n signer?: Secp256k1Keypair,\n derivePathParams?: DerivePathParams\n ) {\n if (signer === undefined) {\n signer = this.getSigner(derivePathParams);\n }\n return this.roochInteractor.createSession(sessionArgs, signer);\n }\n\n async moveCall(callParams: {\n target: string;\n params?: Args[];\n typeArguments?: TypeTag[];\n signer?: Secp256k1Keypair;\n derivePathParams?: DerivePathParams;\n }) {\n const {\n target,\n params = [],\n typeArguments = [],\n signer,\n derivePathParams,\n } = callParams;\n\n const effectiveSigner = signer ?? this.getSigner(derivePathParams);\n console.log('effectiveSigner', effectiveSigner.getRoochAddress().toStr());\n const tx = new Transaction();\n tx.callFunction({\n target,\n args: params,\n typeArgs: typeArguments,\n });\n return this.signAndExecuteTransaction(\n tx,\n effectiveSigner,\n derivePathParams\n );\n }\n\n async publishPackage(callParams: {\n packageBytes: Uint8Array;\n signer?: Secp256k1Keypair;\n derivePathParams?: DerivePathParams;\n }) {\n const { packageBytes, signer, derivePathParams } = callParams;\n return this.moveCall({\n target: `0x2::module_store::publish_package_entry`,\n params: [Args.vec('u8', Array.from(packageBytes))],\n signer,\n derivePathParams,\n });\n }\n\n async getStates(params: GetStatesParams): Promise<ObjectStateView[]> {\n return this.roochInteractor.getStates(params);\n }\n\n async listStates(params: ListStatesParams): Promise<PaginatedStateKVViews> {\n return this.roochInteractor.listStates(params);\n }\n\n async getEvents(\n input: GetEventsByEventHandleParams\n ): Promise<PaginatedEventViews> {\n return this.roochInteractor.getEvents(input);\n }\n\n async transfer(\n input: {\n recipient: address;\n amount: number | bigint;\n coinType: TypeArgs;\n },\n signer?: Secp256k1Keypair,\n derivePathParams?: DerivePathParams\n ): Promise<ExecuteTransactionResponseView> {\n if (signer === undefined) {\n signer = this.getSigner(derivePathParams);\n }\n return this.roochInteractor.transfer({\n ...input,\n signer,\n });\n }\n\n async transferObject(\n input: {\n recipient: address;\n objectId: string;\n objectType: TypeArgs;\n },\n signer?: Secp256k1Keypair,\n derivePathParams?: DerivePathParams\n ): Promise<ExecuteTransactionResponseView> {\n if (signer === undefined) {\n signer = this.getSigner(derivePathParams);\n }\n return this.roochInteractor.transferObject({\n ...input,\n signer,\n });\n }\n}\n","import {\n Secp256k1Keypair,\n RoochAddress,\n BitcoinAddress,\n} from '@roochnetwork/rooch-sdk';\nimport { getKeyPair } from './keypair';\nimport { generateMnemonic } from './crypto';\nimport type { AccountMangerParams, DerivePathParams } from '../../types';\nimport RoochSDK from '@roochnetwork/rooch-sdk';\n\nexport class RoochAccountManager {\n private mnemonics: string;\n private secretKey: string;\n public currentKeyPair: Secp256k1Keypair;\n public currentAddress: RoochAddress;\n public currentBitcoinAddress: BitcoinAddress;\n\n /**\n * Support the following ways to init the SuiToolkit:\n * 1. mnemonics\n * 2. secretKey (base64 or hex)\n * If none of them is provided, will generate a random mnemonics with 24 words.\n *\n * @param mnemonics, 12 or 24 mnemonics words, separated by space\n * @param secretKey, base64 or hex string, when mnemonics is provided, secretKey will be ignored\n */\n constructor({ mnemonics, secretKey }: AccountMangerParams = {}) {\n // If the mnemonics or secretKey is provided, use it\n // Otherwise, generate a random mnemonics with 24 words\n this.mnemonics = mnemonics || '';\n this.secretKey = secretKey || '';\n if (!this.mnemonics && !this.secretKey) {\n this.mnemonics = generateMnemonic(24);\n }\n\n this.currentKeyPair = this.secretKey\n ? Secp256k1Keypair.fromSecretKey(secretKey!)\n : getKeyPair(this.mnemonics);\n\n this.currentAddress = this.currentKeyPair.getRoochAddress();\n this.currentBitcoinAddress = this.currentKeyPair.getBitcoinAddress();\n }\n\n /**\n * if derivePathParams is not provided or mnemonics is empty, it will return the currentKeyPair.\n * else:\n * it will generate keyPair from the mnemonic with the given derivePathParams.\n */\n getKeyPair(derivePathParams?: DerivePathParams) {\n if (!derivePathParams || !this.mnemonics) return this.currentKeyPair;\n return getKeyPair(this.mnemonics, derivePathParams);\n }\n\n /**\n * if derivePathParams is not provided or mnemonics is empty, it will return the currentAddress.\n * else:\n * it will generate address from the mnemonic with the given derivePathParams.\n */\n getAddress(derivePathParams?: DerivePathParams): RoochAddress {\n if (!derivePathParams || !this.mnemonics) return this.currentAddress;\n return getKeyPair(this.mnemonics, derivePathParams).getRoochAddress();\n }\n\n getBitcoinAddress(derivePathParams?: DerivePathParams): BitcoinAddress {\n if (!derivePathParams || !this.mnemonics) return this.currentBitcoinAddress;\n return getKeyPair(this.mnemonics, derivePathParams).getBitcoinAddress();\n }\n\n /**\n * Switch the current account with the given derivePathParams.\n * This is only useful when the mnemonics is provided. For secretKey mode, it will always use the same account.\n */\n switchAccount(derivePathParams: DerivePathParams) {\n if (this.mnemonics) {\n this.currentKeyPair = getKeyPair(this.mnemonics, derivePathParams);\n this.currentAddress = this.currentKeyPair.getRoochAddress();\n this.currentBitcoinAddress = this.currentKeyPair.getBitcoinAddress();\n }\n }\n}\n","import {\n RoochClient,\n Secp256k1Keypair,\n getRoochNodeUrl,\n} from '@roochnetwork/rooch-sdk';\nimport type { DerivePathParams } from '../../types';\n\n/**\n * @description Get derive path for ROOCH\n * @param derivePathParams\n */\nexport const getDerivePathForROOCH = (\n derivePathParams: DerivePathParams = {}\n) => {\n const {\n accountIndex = 0,\n isExternal = false,\n addressIndex = 0,\n } = derivePathParams;\n return `m/54'/784'/${accountIndex}'/${isExternal ? 1 : 0}'/${addressIndex}'`;\n};\n\n/**\n * @description Get keypair from mnemonics and derive path\n * @param mnemonics\n * @param derivePathParams\n */\nexport const getKeyPair = (\n mnemonics: string,\n derivePathParams: DerivePathParams = {}\n) => {\n const derivePath = getDerivePathForROOCH(derivePathParams);\n return Secp256k1Keypair.deriveKeypair(mnemonics, derivePath);\n};\n","import { generateMnemonic as genMnemonic } from '@scure/bip39';\nimport { wordlist } from '@scure/bip39/wordlists/english';\n\nexport const generateMnemonic = (numberOfWords: 12 | 24 = 24) => {\n const strength = numberOfWords === 12 ? 128 : 256;\n return genMnemonic(wordlist, strength);\n};\n","import {\n Args,\n Bytes,\n CallFunctionArgs,\n ModuleABIView,\n RoochClient,\n Secp256k1Keypair,\n Transaction,\n TypeArgs,\n TypeTag,\n NetworkType,\n GetStatesParams,\n ObjectStateView,\n ListStatesParams,\n PaginatedStateKVViews,\n ExecuteTransactionResponseView,\n address,\n GetEventsByEventHandleParams,\n PaginatedEventViews,\n} from '@roochnetwork/rooch-sdk';\nimport { delay } from './util';\n\n/**\n * `RoochTransaction` is used to send transaction with a given gas coin.\n * It always uses the gas coin to pay for the gas,\n * and update the gas coin after the transaction.\n */\nexport class RoochInteractor {\n public readonly clients: RoochClient[];\n public currentClient: RoochClient;\n public readonly fullNodes: string[];\n public currentFullNode: string;\n public network?: NetworkType;\n\n constructor(fullNodeUrls: string[], network?: NetworkType) {\n if (fullNodeUrls.length === 0)\n throw new Error('fullNodeUrls must not be empty');\n this.clients = fullNodeUrls.map((url) => new RoochClient({ url }));\n this.currentClient = this.clients[0];\n this.fullNodes = fullNodeUrls;\n this.currentFullNode = fullNodeUrls[0];\n\n this.network = network;\n }\n\n switchToNextProvider() {\n const currentClientIdx = this.clients.indexOf(this.currentClient);\n this.currentClient =\n this.clients[(currentClientIdx + 1) % this.clients.length];\n this.currentFullNode =\n this.fullNodes[(currentClientIdx + 1) % this.clients.length];\n }\n\n async createSession(\n sessionArgs: {\n appName: string;\n appUrl: string;\n scopes: string[];\n },\n signer: Secp256k1Keypair\n ) {\n for (const client of this.clients) {\n try {\n const session = await client.createSession({\n sessionArgs,\n signer,\n });\n return session;\n } catch (err) {\n console.warn(`Failed to create session: ${err}`);\n await delay(2000);\n }\n }\n throw new Error('Failed to create session with all fullnodes');\n }\n\n async signAndExecuteTransaction(\n transaction: Transaction | Bytes,\n signer: Secp256k1Keypair,\n option: {\n withOutput: boolean;\n }\n ): Promise<any> {\n for (const client of this.clients) {\n try {\n const txnResponse = await client.signAndExecuteTransaction({\n transaction,\n signer,\n option,\n });\n return txnResponse;\n } catch (err) {\n console.warn(`Failed to send transaction: ${err}`);\n await delay(2000);\n }\n }\n throw new Error('Failed to send transaction with all fullnodes');\n }\n\n async executeViewFunction(\n contractAddress: string,\n moduleName: string,\n funcName: string,\n typeArguments: TypeTag[] = [],\n args: Args[] = []\n ) {\n for (const client of this.clients) {\n try {\n const input: CallFunctionArgs = {\n address: contractAddress,\n module: moduleName,\n function: funcName,\n typeArgs: typeArguments,\n args,\n };\n const result = await client.executeViewFunction(input);\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to execute view function: ${err}`);\n }\n }\n throw new Error('Failed to execute view function with all fullnodes');\n }\n\n async getModuleAbi(\n accountAddress: string,\n moduleName: string\n ): Promise<ModuleABIView> {\n for (const client of this.clients) {\n try {\n const result = await client.getModuleAbi({\n moduleAddr: accountAddress,\n moduleName,\n });\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(\n `Failed to get ModuleAbi ${accountAddress} ${moduleName}: ${err}`\n );\n }\n }\n throw new Error(\n `Failed to get ModuleAbi ${accountAddress} ${moduleName} with all fullnodes`\n );\n }\n\n async getModuleAbis(\n accountAddress: string,\n modules: string[]\n ): Promise<ModuleABIView[]> {\n for (const client of this.clients) {\n try {\n const result: ModuleABIView[] = [];\n for (const moduleName of modules) {\n const moduleAbi = await client.getModuleAbi({\n moduleAddr: accountAddress,\n moduleName,\n });\n result.push(moduleAbi);\n }\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(\n `Failed to get ModuleAbi ${accountAddress} ${modules.join(\n ','\n )}: ${err}`\n );\n }\n }\n throw new Error(\n `Failed to get ModuleAbi ${accountAddress} ${modules.join(\n ','\n )} with all fullnodes`\n );\n }\n\n async getBalance(address: string, coinType: string) {\n for (const client of this.clients) {\n try {\n const result = await client.getBalance({\n owner: address,\n coinType,\n });\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to get balance: ${err}`);\n }\n }\n throw new Error(`Failed to get balance with all fullnodes`);\n }\n\n async getRpcApiVersion(): Promise<string | undefined> {\n for (const client of this.clients) {\n try {\n const result = await client.getRpcApiVersion();\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to get RPC API version: ${err}`);\n }\n }\n throw new Error('Failed to get RPC API version with all fullnodes');\n }\n\n async getChainId(): Promise<bigint> {\n for (const client of this.clients) {\n try {\n const result = await client.getChainId();\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to get chain ID: ${err}`);\n }\n }\n throw new Error('Failed to get chain ID with all fullnodes');\n }\n\n async getStates(params: GetStatesParams): Promise<ObjectStateView[]> {\n for (const client of this.clients) {\n try {\n const result = await client.getStates(params);\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to get states: ${err}`);\n }\n }\n throw new Error('Failed to get states with all fullnodes');\n }\n\n async listStates(params: ListStatesParams): Promise<PaginatedStateKVViews> {\n for (const client of this.clients) {\n try {\n const result = await client.listStates(params);\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to list states: ${err}`);\n }\n }\n throw new Error('Failed to list states with all fullnodes');\n }\n\n async getEvents(\n input: GetEventsByEventHandleParams\n ): Promise<PaginatedEventViews> {\n for (const client of this.clients) {\n try {\n const result = await client.getEvents(input);\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to get events: ${err}`);\n }\n }\n throw new Error('Failed to get events with all fullnodes');\n }\n\n async transfer(input: {\n signer: Secp256k1Keypair;\n recipient: address;\n amount: number | bigint;\n coinType: TypeArgs;\n }): Promise<ExecuteTransactionResponseView> {\n for (const client of this.clients) {\n try {\n const result = await client.transfer(input);\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to transfer: ${err}`);\n }\n }\n throw new Error('Failed to transfer with all fullnodes');\n }\n\n async transferObject(input: {\n signer: Secp256k1Keypair;\n recipient: address;\n objectId: string;\n objectType: TypeArgs;\n }): Promise<ExecuteTransactionResponseView> {\n for (const client of this.clients) {\n try {\n const result = await client.transferObject(input);\n return result;\n } catch (err) {\n await delay(2000);\n console.warn(`Failed to transfer object: ${err}`);\n }\n }\n throw new Error('Failed to transfer object with all fullnodes');\n }\n}\n","export const delay = (ms: number) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n","import type { ContractFactoryParams } from './types';\nimport type { ModuleABIView } from '@roochnetwork/rooch-sdk';\n\nexport class RoochContractFactory {\n public packageId: string;\n public metadata: ModuleABIView[] | undefined;\n\n /**\n * @param packageId\n * @param metadata\n */\n constructor({ packageId, metadata }: ContractFactoryParams = {}) {\n this.packageId = packageId || '';\n this.metadata = metadata || undefined;\n }\n}\n","import {\n getRoochNodeUrl,\n ModuleABIView,\n NetworkType,\n} from '@roochnetwork/rooch-sdk';\nimport { RoochInteractor } from '../libs/roochInteractor';\n\nexport async function loadMetadata(\n networkType: NetworkType,\n packageId: string,\n modules: string[],\n fullnodeUrls?: string[]\n): Promise<ModuleABIView[] | undefined> {\n // Init the rpc provider\n fullnodeUrls = fullnodeUrls ?? [getRoochNodeUrl(networkType)];\n const roochInteractor = new RoochInteractor(fullnodeUrls);\n if (packageId !== undefined) {\n const jsonData = await roochInteractor.getModuleAbis(packageId, modules);\n return jsonData;\n } else {\n console.error('please set your package id.');\n }\n}\n"],"mappings":"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","names":["getRoochNodeUrl","Args","Transaction","Secp256k1Keypair","Secp256k1Keypair","RoochClient","RoochClient","address","getRoochNodeUrl","Transaction","Args","getRoochNodeUrl","getRoochNodeUrl"]}