{"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"]}