@weblock-wallet/sdk 0.1.42 → 0.1.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -12,6 +12,8 @@ declare enum SDKErrorCode {
12
12
  WALLET_ALREADY_EXISTS = "WALLET_ALREADY_EXISTS",
13
13
  WALLET_CREATION_FAILED = "WALLET_CREATION_FAILED",
14
14
  INVALID_PASSWORD = "INVALID_PASSWORD",
15
+ RECOVERY_NOT_AVAILABLE = "RECOVERY_NOT_AVAILABLE",
16
+ PIN_RESET_FAILED = "PIN_RESET_FAILED",
15
17
  ASSET_NOT_FOUND = "ASSET_NOT_FOUND",
16
18
  INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
17
19
  TRANSFER_FAILED = "TRANSFER_FAILED",
package/dist/index.d.ts CHANGED
@@ -12,6 +12,8 @@ declare enum SDKErrorCode {
12
12
  WALLET_ALREADY_EXISTS = "WALLET_ALREADY_EXISTS",
13
13
  WALLET_CREATION_FAILED = "WALLET_CREATION_FAILED",
14
14
  INVALID_PASSWORD = "INVALID_PASSWORD",
15
+ RECOVERY_NOT_AVAILABLE = "RECOVERY_NOT_AVAILABLE",
16
+ PIN_RESET_FAILED = "PIN_RESET_FAILED",
15
17
  ASSET_NOT_FOUND = "ASSET_NOT_FOUND",
16
18
  INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
17
19
  TRANSFER_FAILED = "TRANSFER_FAILED",
package/dist/index.js CHANGED
@@ -103990,6 +103990,8 @@ var SDKErrorCode = /* @__PURE__ */ ((SDKErrorCode2) => {
103990
103990
  SDKErrorCode2["WALLET_ALREADY_EXISTS"] = "WALLET_ALREADY_EXISTS";
103991
103991
  SDKErrorCode2["WALLET_CREATION_FAILED"] = "WALLET_CREATION_FAILED";
103992
103992
  SDKErrorCode2["INVALID_PASSWORD"] = "INVALID_PASSWORD";
103993
+ SDKErrorCode2["RECOVERY_NOT_AVAILABLE"] = "RECOVERY_NOT_AVAILABLE";
103994
+ SDKErrorCode2["PIN_RESET_FAILED"] = "PIN_RESET_FAILED";
103993
103995
  SDKErrorCode2["ASSET_NOT_FOUND"] = "ASSET_NOT_FOUND";
103994
103996
  SDKErrorCode2["INSUFFICIENT_BALANCE"] = "INSUFFICIENT_BALANCE";
103995
103997
  SDKErrorCode2["TRANSFER_FAILED"] = "TRANSFER_FAILED";
@@ -104106,6 +104108,16 @@ var ERC20_ABI = [
104106
104108
  "function decimals() view returns (uint8)",
104107
104109
  "function symbol() view returns (string)"
104108
104110
  ];
104111
+ var STORAGE_KEYS = {
104112
+ walletAddress: (orgHost) => `${orgHost}:walletAddress`,
104113
+ share2: (orgHost) => `${orgHost}:share2`,
104114
+ encryptedShare2: (orgHost) => `${orgHost}:encryptedShare2`,
104115
+ encryptedShare2Device: (orgHost) => `${orgHost}:encryptedShare2_device`,
104116
+ deviceSecret: (orgHost) => `${orgHost}:deviceSecret`,
104117
+ firebaseId: (orgHost) => `${orgHost}:firebaseId`,
104118
+ accessToken: (orgHost) => `${orgHost}:accessToken`,
104119
+ isNewUser: (orgHost) => `${orgHost}:isNewUser`
104120
+ };
104109
104121
  var WalletService = class {
104110
104122
  constructor(walletClient, rpcClient, orgHost, networkService) {
104111
104123
  this.walletClient = walletClient;
@@ -104114,13 +104126,53 @@ var WalletService = class {
104114
104126
  this.networkService = networkService;
104115
104127
  this.walletAddress = null;
104116
104128
  }
104129
+ /**
104130
+ * Wallet PIN/password mismatch handling.
104131
+ */
104132
+ isInvalidPasswordError(error) {
104133
+ if (!error) return false;
104134
+ if (error instanceof Error) {
104135
+ const msg = (error.message || "").toLowerCase();
104136
+ return msg.includes("wrong password") || msg.includes("unable to decrypt") || msg.includes("bad decrypt") || msg.includes("invalid key");
104137
+ }
104138
+ try {
104139
+ const msg = String(error?.message ?? "").toLowerCase();
104140
+ return msg.includes("wrong password") || msg.includes("unable to decrypt") || msg.includes("bad decrypt") || msg.includes("invalid key");
104141
+ } catch {
104142
+ return false;
104143
+ }
104144
+ }
104145
+ isSixDigitPin(pin) {
104146
+ return /^[0-9]{6}$/.test(pin);
104147
+ }
104148
+ /**
104149
+ * deviceSecret은 "PIN과 무관한 로컬 복구용 비밀값"입니다.
104150
+ * - 같은 디바이스에서만 PIN reset이 가능하도록 하는 역할
104151
+ * - 서버에는 절대 전달하지 않습니다.
104152
+ */
104153
+ async getOrCreateDeviceSecret() {
104154
+ const key = STORAGE_KEYS.deviceSecret(this.orgHost);
104155
+ const existing = await LocalForage.get(key);
104156
+ if (existing) return existing;
104157
+ const secret = randomBytes(32).toString("hex");
104158
+ await LocalForage.save(key, secret);
104159
+ return secret;
104160
+ }
104161
+ async ensureDeviceEncryptedShare2(share2Plain, firebaseId) {
104162
+ const encryptedKey = STORAGE_KEYS.encryptedShare2Device(this.orgHost);
104163
+ const existing = await LocalForage.get(encryptedKey);
104164
+ if (existing) return;
104165
+ const deviceSecret = await this.getOrCreateDeviceSecret();
104166
+ const encrypted = Crypto.encryptShare(share2Plain, deviceSecret, firebaseId);
104167
+ await LocalForage.save(encryptedKey, encrypted);
104168
+ }
104117
104169
  async getAddress() {
104118
104170
  try {
104119
104171
  if (this.walletAddress) {
104120
104172
  return this.walletAddress;
104121
104173
  }
104122
104174
  const savedAddress = await LocalForage.get(
104123
- `${this.orgHost}:walletAddress`
104175
+ STORAGE_KEYS.walletAddress(this.orgHost)
104124
104176
  );
104125
104177
  if (savedAddress) {
104126
104178
  this.walletAddress = savedAddress;
@@ -104130,7 +104182,7 @@ var WalletService = class {
104130
104182
  if (walletInfo?.address) {
104131
104183
  this.walletAddress = walletInfo.address;
104132
104184
  await LocalForage.save(
104133
- `${this.orgHost}:walletAddress`,
104185
+ STORAGE_KEYS.walletAddress(this.orgHost),
104134
104186
  walletInfo.address
104135
104187
  );
104136
104188
  return walletInfo.address;
@@ -104147,7 +104199,7 @@ var WalletService = class {
104147
104199
  async create(password) {
104148
104200
  try {
104149
104201
  const firebaseId = await LocalForage.get(
104150
- `${this.orgHost}:firebaseId`
104202
+ STORAGE_KEYS.firebaseId(this.orgHost)
104151
104203
  );
104152
104204
  console.log("1. FirebaseId:", firebaseId);
104153
104205
  if (!firebaseId) {
@@ -104156,8 +104208,14 @@ var WalletService = class {
104156
104208
  if (!password) {
104157
104209
  throw new SDKError("Password is required", "INVALID_PARAMS" /* INVALID_PARAMS */);
104158
104210
  }
104211
+ if (!this.isSixDigitPin(password)) {
104212
+ throw new SDKError(
104213
+ "PIN must be a 6-digit number",
104214
+ "INVALID_PARAMS" /* INVALID_PARAMS */
104215
+ );
104216
+ }
104159
104217
  const isNewUser = await LocalForage.get(
104160
- `${this.orgHost}:isNewUser`
104218
+ STORAGE_KEYS.isNewUser(this.orgHost)
104161
104219
  );
104162
104220
  if (!isNewUser) {
104163
104221
  throw new SDKError(
@@ -104176,21 +104234,15 @@ var WalletService = class {
104176
104234
  console.log("4. Splitting private key...");
104177
104235
  const shares = await Secrets.split(wallet.privateKey, 3, 2);
104178
104236
  const [share1, share2, share3] = shares;
104179
- console.log("5. Shares created:", {
104180
- share1Length: share1.length,
104181
- share2Length: share2.length,
104182
- share3Length: share3.length
104183
- });
104184
104237
  console.log("6. Encrypting shares...");
104185
104238
  const encryptedShare2 = Crypto.encryptShare(share2, password, firebaseId);
104186
104239
  const encryptedShare3 = Crypto.encryptShare(share3, password, firebaseId);
104187
- console.log("7. Shares encrypted:", {
104188
- encryptedShare2Length: encryptedShare2.length,
104189
- encryptedShare3Length: encryptedShare3.length
104190
- });
104191
104240
  console.log("8. Saving encryptedShare2 to LocalForage...");
104192
- await LocalForage.save(`${this.orgHost}:encryptedShare2`, encryptedShare2);
104193
- console.log("9. encryptedShare2 saved");
104241
+ await LocalForage.save(
104242
+ STORAGE_KEYS.encryptedShare2(this.orgHost),
104243
+ encryptedShare2
104244
+ );
104245
+ await this.ensureDeviceEncryptedShare2(share2, firebaseId);
104194
104246
  console.log("10. Creating wallet on server...");
104195
104247
  await this.walletClient.createWallet({
104196
104248
  address: wallet.address,
@@ -104198,9 +104250,11 @@ var WalletService = class {
104198
104250
  share1,
104199
104251
  encryptedShare3
104200
104252
  });
104201
- console.log("11. Wallet created on server");
104202
104253
  this.walletAddress = wallet.address;
104203
- await LocalForage.save(`${this.orgHost}:walletAddress`, wallet.address);
104254
+ await LocalForage.save(
104255
+ STORAGE_KEYS.walletAddress(this.orgHost),
104256
+ wallet.address
104257
+ );
104204
104258
  return wallet.address;
104205
104259
  } catch (error) {
104206
104260
  console.error("Error in create wallet:", error);
@@ -104215,44 +104269,54 @@ var WalletService = class {
104215
104269
  async retrieveWallet(password) {
104216
104270
  try {
104217
104271
  const accessToken = await LocalForage.get(
104218
- `${this.orgHost}:accessToken`
104272
+ STORAGE_KEYS.accessToken(this.orgHost)
104219
104273
  );
104220
104274
  if (!accessToken) {
104221
104275
  throw new SDKError("Access token not found", "AUTH_REQUIRED" /* AUTH_REQUIRED */);
104222
104276
  }
104223
- console.log("1. Checking login status...");
104224
104277
  const firebaseId = await LocalForage.get(
104225
- `${this.orgHost}:firebaseId`
104278
+ STORAGE_KEYS.firebaseId(this.orgHost)
104226
104279
  );
104227
104280
  if (!firebaseId) {
104228
104281
  throw new SDKError("Not logged in", "AUTH_REQUIRED" /* AUTH_REQUIRED */);
104229
104282
  }
104230
- console.log("2. Getting wallet info from server...");
104283
+ if (!this.isSixDigitPin(password)) {
104284
+ throw new SDKError(
104285
+ "PIN must be a 6-digit number",
104286
+ "INVALID_PARAMS" /* INVALID_PARAMS */
104287
+ );
104288
+ }
104289
+ const decryptShareOrThrow = (encryptedShare) => {
104290
+ try {
104291
+ return Crypto.decryptShare(encryptedShare, password, firebaseId);
104292
+ } catch (e7) {
104293
+ if (this.isInvalidPasswordError(e7)) {
104294
+ throw new SDKError(
104295
+ "Incorrect PIN code",
104296
+ "INVALID_PASSWORD" /* INVALID_PASSWORD */,
104297
+ e7
104298
+ );
104299
+ }
104300
+ throw e7;
104301
+ }
104302
+ };
104231
104303
  const walletInfo = await this.walletClient.getWallet();
104232
- console.log("3. Wallet info received:", { address: walletInfo.address });
104233
- let share2 = await LocalForage.get(`${this.orgHost}:share2`);
104304
+ let share2 = await LocalForage.get(
104305
+ STORAGE_KEYS.share2(this.orgHost)
104306
+ );
104234
104307
  if (!share2) {
104235
104308
  const encryptedShare2 = await LocalForage.get(
104236
- `${this.orgHost}:encryptedShare2`
104309
+ STORAGE_KEYS.encryptedShare2(this.orgHost)
104237
104310
  );
104238
104311
  if (encryptedShare2) {
104239
- share2 = Crypto.decryptShare(encryptedShare2, password, firebaseId);
104240
- await LocalForage.save(`${this.orgHost}:share2`, share2);
104312
+ share2 = decryptShareOrThrow(encryptedShare2);
104313
+ await LocalForage.save(STORAGE_KEYS.share2(this.orgHost), share2);
104241
104314
  } else {
104242
- console.log("8. No encryptedShare2, recovering using share3...");
104243
- const share3 = Crypto.decryptShare(
104244
- walletInfo.encryptedShare3,
104245
- password,
104246
- firebaseId
104247
- );
104248
- console.log("9. Share3 decrypted, combining with share1...");
104315
+ const share3 = decryptShareOrThrow(walletInfo.encryptedShare3);
104249
104316
  const privateKey2 = await Secrets.combine([walletInfo.share1, share3]);
104250
104317
  const wallet2 = new Wallet(privateKey2);
104251
- console.log("10. Generating new shares...");
104252
104318
  const newShares = await Secrets.split(wallet2.privateKey, 3, 2);
104253
104319
  const [newShare1, newShare2, newShare3] = newShares;
104254
- console.log("11. New shares generated");
104255
- console.log("12. Updating wallet keys on server...");
104256
104320
  await this.walletClient.updateWalletKey({
104257
104321
  share1: newShare1,
104258
104322
  encryptedShare3: Crypto.encryptShare(
@@ -104261,28 +104325,34 @@ var WalletService = class {
104261
104325
  firebaseId
104262
104326
  )
104263
104327
  });
104264
- console.log("13. Saving new shares locally...");
104265
- await LocalForage.save(`${this.orgHost}:share2`, newShare2);
104328
+ await LocalForage.save(STORAGE_KEYS.share2(this.orgHost), newShare2);
104266
104329
  await LocalForage.save(
104267
- `${this.orgHost}:encryptedShare2`,
104330
+ STORAGE_KEYS.encryptedShare2(this.orgHost),
104268
104331
  Crypto.encryptShare(newShare2, password, firebaseId)
104269
104332
  );
104270
- console.log("14. Wallet recovered with share3:", wallet2.address);
104333
+ await this.ensureDeviceEncryptedShare2(newShare2, firebaseId);
104271
104334
  this.walletAddress = wallet2.address;
104272
- console.log("15. Wallet address set:", this.walletAddress);
104335
+ await LocalForage.save(
104336
+ STORAGE_KEYS.walletAddress(this.orgHost),
104337
+ wallet2.address
104338
+ );
104339
+ await LocalForage.delete(STORAGE_KEYS.share2(this.orgHost));
104273
104340
  return wallet2.address;
104274
104341
  }
104275
104342
  }
104276
- console.log("15. Combining share1 and share2...");
104277
104343
  const privateKey = await Secrets.combine([walletInfo.share1, share2]);
104278
104344
  const wallet = new Wallet(privateKey);
104345
+ await this.ensureDeviceEncryptedShare2(share2, firebaseId);
104279
104346
  this.walletAddress = wallet.address;
104280
- await LocalForage.save(`${this.orgHost}:walletAddress`, wallet.address);
104281
- await LocalForage.delete(`${this.orgHost}:share2`);
104347
+ await LocalForage.save(
104348
+ STORAGE_KEYS.walletAddress(this.orgHost),
104349
+ wallet.address
104350
+ );
104351
+ await LocalForage.delete(STORAGE_KEYS.share2(this.orgHost));
104282
104352
  return wallet.address;
104283
104353
  } catch (error) {
104284
104354
  this.walletAddress = null;
104285
- await LocalForage.delete(`${this.orgHost}:share2`);
104355
+ await LocalForage.delete(STORAGE_KEYS.share2(this.orgHost));
104286
104356
  console.error("Error in retrieveWallet:", error);
104287
104357
  if (error instanceof SDKError) throw error;
104288
104358
  throw new SDKError(
@@ -104292,11 +104362,109 @@ var WalletService = class {
104292
104362
  );
104293
104363
  }
104294
104364
  }
104365
+ /**
104366
+ * NEW: PIN reset (프라이빗키/주소 유지)
104367
+ * - 같은 디바이스에 남아있는 encryptedShare2_device를 이용
104368
+ * - 서버는 PATCH /v1/wallets/keys 로 share1 / encryptedShare3 만 업데이트
104369
+ */
104370
+ async resetPin(newPassword) {
104371
+ try {
104372
+ const accessToken = await LocalForage.get(
104373
+ STORAGE_KEYS.accessToken(this.orgHost)
104374
+ );
104375
+ if (!accessToken) {
104376
+ throw new SDKError("Access token not found", "AUTH_REQUIRED" /* AUTH_REQUIRED */);
104377
+ }
104378
+ const firebaseId = await LocalForage.get(
104379
+ STORAGE_KEYS.firebaseId(this.orgHost)
104380
+ );
104381
+ if (!firebaseId) {
104382
+ throw new SDKError("Not logged in", "AUTH_REQUIRED" /* AUTH_REQUIRED */);
104383
+ }
104384
+ if (!newPassword || !this.isSixDigitPin(newPassword)) {
104385
+ throw new SDKError(
104386
+ "PIN must be a 6-digit number",
104387
+ "INVALID_PARAMS" /* INVALID_PARAMS */
104388
+ );
104389
+ }
104390
+ const encryptedDevice = await LocalForage.get(
104391
+ STORAGE_KEYS.encryptedShare2Device(this.orgHost)
104392
+ );
104393
+ if (!encryptedDevice) {
104394
+ throw new SDKError(
104395
+ "PIN reset is not available on this device",
104396
+ "RECOVERY_NOT_AVAILABLE" /* RECOVERY_NOT_AVAILABLE */
104397
+ );
104398
+ }
104399
+ const deviceSecret = await LocalForage.get(
104400
+ STORAGE_KEYS.deviceSecret(this.orgHost)
104401
+ );
104402
+ if (!deviceSecret) {
104403
+ throw new SDKError(
104404
+ "PIN reset is not available on this device",
104405
+ "RECOVERY_NOT_AVAILABLE" /* RECOVERY_NOT_AVAILABLE */
104406
+ );
104407
+ }
104408
+ let share2;
104409
+ try {
104410
+ share2 = Crypto.decryptShare(encryptedDevice, deviceSecret, firebaseId);
104411
+ } catch (e7) {
104412
+ throw new SDKError(
104413
+ "PIN reset is not available on this device",
104414
+ "RECOVERY_NOT_AVAILABLE" /* RECOVERY_NOT_AVAILABLE */,
104415
+ e7
104416
+ );
104417
+ }
104418
+ const walletInfo = await this.walletClient.getWallet();
104419
+ const privateKey = await Secrets.combine([walletInfo.share1, share2]);
104420
+ const wallet = new Wallet(privateKey);
104421
+ const newShares = await Secrets.split(wallet.privateKey, 3, 2);
104422
+ const [newShare1, newShare2, newShare3] = newShares;
104423
+ await this.walletClient.updateWalletKey({
104424
+ share1: newShare1,
104425
+ encryptedShare3: Crypto.encryptShare(
104426
+ newShare3,
104427
+ newPassword,
104428
+ firebaseId
104429
+ )
104430
+ });
104431
+ await LocalForage.save(
104432
+ STORAGE_KEYS.encryptedShare2(this.orgHost),
104433
+ Crypto.encryptShare(newShare2, newPassword, firebaseId)
104434
+ );
104435
+ const newEncryptedDevice = Crypto.encryptShare(
104436
+ newShare2,
104437
+ deviceSecret,
104438
+ firebaseId
104439
+ );
104440
+ await LocalForage.save(
104441
+ STORAGE_KEYS.encryptedShare2Device(this.orgHost),
104442
+ newEncryptedDevice
104443
+ );
104444
+ this.walletAddress = wallet.address;
104445
+ await LocalForage.save(
104446
+ STORAGE_KEYS.walletAddress(this.orgHost),
104447
+ wallet.address
104448
+ );
104449
+ await LocalForage.delete(STORAGE_KEYS.share2(this.orgHost));
104450
+ return wallet.address;
104451
+ } catch (error) {
104452
+ console.error("Error in resetPin:", error);
104453
+ if (error instanceof SDKError) throw error;
104454
+ throw new SDKError(
104455
+ "Failed to reset PIN",
104456
+ "PIN_RESET_FAILED" /* PIN_RESET_FAILED */,
104457
+ error
104458
+ );
104459
+ }
104460
+ }
104295
104461
  async clearWalletState() {
104296
104462
  this.walletAddress = null;
104297
- await LocalForage.delete(`${this.orgHost}:walletAddress`);
104298
- await LocalForage.delete(`${this.orgHost}:share2`);
104299
- await LocalForage.delete(`${this.orgHost}:encryptedShare2`);
104463
+ await LocalForage.delete(STORAGE_KEYS.walletAddress(this.orgHost));
104464
+ await LocalForage.delete(STORAGE_KEYS.share2(this.orgHost));
104465
+ await LocalForage.delete(STORAGE_KEYS.encryptedShare2(this.orgHost));
104466
+ await LocalForage.delete(STORAGE_KEYS.encryptedShare2Device(this.orgHost));
104467
+ await LocalForage.delete(STORAGE_KEYS.deviceSecret(this.orgHost));
104300
104468
  }
104301
104469
  async getBalance(address, chainId) {
104302
104470
  const response = await this.rpcClient.sendRpc({
@@ -104453,7 +104621,7 @@ var WalletService = class {
104453
104621
  }
104454
104622
  const [share1, share2] = await Promise.all([
104455
104623
  this.walletClient.getWallet().then((wallet2) => wallet2.share1),
104456
- LocalForage.get(`${this.orgHost}:share2`)
104624
+ LocalForage.get(STORAGE_KEYS.share2(this.orgHost))
104457
104625
  ]);
104458
104626
  if (!share1 || !share2) {
104459
104627
  throw new SDKError(
@@ -105949,6 +106117,7 @@ var InternalCoreImpl = class {
105949
106117
  getAddress: () => this.walletService.getAddress(),
105950
106118
  create: (password) => this.walletService.create(password),
105951
106119
  retrieveWallet: (password) => this.walletService.retrieveWallet(password),
106120
+ resetPin: (newPassword) => this.walletService.resetPin(newPassword),
105952
106121
  getBalance: (address, chainId) => this.walletService.getBalance(address, chainId),
105953
106122
  getTokenBalance: (tokenAddress, walletAddress, chainId) => this.walletService.getTokenBalance(tokenAddress, walletAddress, chainId),
105954
106123
  sendTransaction: (params) => this.walletService.sendTransaction(params),
@@ -105970,21 +106139,20 @@ var InternalCoreImpl = class {
105970
106139
  };
105971
106140
  this.asset = {
105972
106141
  transfer: (params) => this.assetService.transfer(params),
105973
- addToken: (params) => this.assetService.addToken(params),
105974
- // New ERC20 methods
106142
+ /**
106143
+ * 타입 정합성:
106144
+ * - InternalCore는 decimals?: number
106145
+ * - 기존 AssetService 내부 구현이 decimals를 string으로 받는 경우가 있어,
106146
+ * 여기서 안전하게 string으로 변환해서 전달합니다.
106147
+ */
106148
+ addToken: (params) => this.assetService.addToken({
106149
+ ...params,
106150
+ decimals: typeof params.decimals === "number" ? String(params.decimals) : void 0
106151
+ }),
105975
106152
  getTokenBalance: (params) => this.assetService.getTokenBalance(params),
105976
106153
  approveToken: (params) => this.assetService.approveToken(params),
105977
106154
  getAllowance: (params) => this.assetService.getAllowance(params),
105978
- // getTokenInfo: (params: TokenInfoParams) =>
105979
- // this.assetService.getTokenInfo(params),
105980
106155
  addNFTCollection: (params) => this.assetService.addNFTCollection(params),
105981
- // checkSecurityTokenCompliance: (params: {
105982
- // networkId: string
105983
- // tokenAddress: string
105984
- // from: string
105985
- // to: string
105986
- // amount: string
105987
- // }) => this.assetService.checkSecurityTokenCompliance(params),
105988
106156
  on: (event, listener) => this.assetService.on(event, listener),
105989
106157
  off: (event, listener) => this.assetService.off(event, listener),
105990
106158
  getTokenInfo: (params) => this.assetService.getTokenInfo(params),
@@ -106073,6 +106241,18 @@ var UserModule = class {
106073
106241
  const wallet = await this.walletModule.getInfo();
106074
106242
  return { wallet };
106075
106243
  }
106244
+ /**
106245
+ * PIN을 모르는 상태에서 같은 디바이스에 남아있는 복구용 share2(encryptedShare2_device)로
106246
+ * PIN을 재설정합니다. (프라이빗키/주소 유지)
106247
+ */
106248
+ async resetPin(newPassword) {
106249
+ if (!newPassword) {
106250
+ throw new SDKError("Password is required", "INVALID_PARAMS" /* INVALID_PARAMS */);
106251
+ }
106252
+ await this.core.wallet.resetPin(newPassword);
106253
+ const wallet = await this.walletModule.getInfo();
106254
+ return { wallet };
106255
+ }
106076
106256
  async signOut() {
106077
106257
  return this.core.auth.signOut();
106078
106258
  }
@@ -106126,30 +106306,6 @@ var WalletModule = class {
106126
106306
  network.chainId
106127
106307
  );
106128
106308
  console.log("\uB124\uC774\uD2F0\uBE0C \uCF54\uC778 \uC794\uC561:", nativeBalance);
106129
- const rbtBalance = await this.core.wallet.getTokenBalance(
106130
- "0xB10536cC40Cb6E6415f70d3a4C1AF7Fa638AE829",
106131
- address,
106132
- network.chainId
106133
- );
106134
- console.log("RBT \uC794\uC561:", rbtBalance);
106135
- const usdrBalance = await this.core.wallet.getTokenBalance(
106136
- "0x8d335fe5B30e27F2B21F057a4766cf4BB8c30785",
106137
- address,
106138
- network.chainId
106139
- );
106140
- console.log("USDR \uC794\uC561:", usdrBalance);
106141
- const wftBalance = await this.core.wallet.getTokenBalance(
106142
- "0x6fa62Eda03956ef4E54f3C8597E8c3f3bE40A45B",
106143
- address,
106144
- network.chainId
106145
- );
106146
- console.log("WFT \uC794\uC561:", wftBalance);
106147
- const usdtBalance = await this.core.wallet.getTokenBalance(
106148
- "0xfF54B9ebe777f528E64C74bc95c68433B7546038",
106149
- address,
106150
- network.chainId
106151
- );
106152
- console.log("USDT \uC794\uC561:", usdtBalance);
106153
106309
  console.log("5. \uCD5C\uADFC \uD2B8\uB79C\uC7AD\uC158 \uC870\uD68C \uC2DC\uC791");
106154
106310
  const latestTransaction = await this.core.wallet.getLatestTransaction(
106155
106311
  address,
@@ -106169,38 +106325,38 @@ var WalletModule = class {
106169
106325
  decimals: 18
106170
106326
  },
106171
106327
  tokens: [
106172
- {
106173
- symbol: rbtBalance.symbol,
106174
- name: "Real-estate Backed Token",
106175
- address: "0xB10536cC40Cb6E6415f70d3a4C1AF7Fa638AE829",
106176
- balance: rbtBalance,
106177
- decimals: rbtBalance.decimals,
106178
- totalSupply: rbtBalance
106179
- },
106180
- {
106181
- symbol: usdrBalance.symbol,
106182
- name: "USD Real-estate",
106183
- address: "0x8d335fe5B30e27F2B21F057a4766cf4BB8c30785",
106184
- balance: usdrBalance,
106185
- decimals: usdrBalance.decimals,
106186
- totalSupply: usdrBalance
106187
- },
106188
- {
106189
- symbol: wftBalance.symbol,
106190
- name: "WeBlock Foundation Token",
106191
- address: "0x6fa62Eda03956ef4E54f3C8597E8c3f3bE40A45B",
106192
- balance: wftBalance,
106193
- decimals: wftBalance.decimals,
106194
- totalSupply: wftBalance
106195
- },
106196
- {
106197
- symbol: usdtBalance.symbol,
106198
- name: "USD Tether",
106199
- address: "0xfF54B9ebe777f528E64C74bc95c68433B7546038",
106200
- balance: usdtBalance,
106201
- decimals: usdtBalance.decimals,
106202
- totalSupply: usdtBalance
106203
- }
106328
+ // {
106329
+ // symbol: rbtBalance.symbol,
106330
+ // name: 'Real-estate Backed Token',
106331
+ // address: '0xB10536cC40Cb6E6415f70d3a4C1AF7Fa638AE829',
106332
+ // balance: rbtBalance,
106333
+ // decimals: rbtBalance.decimals,
106334
+ // totalSupply: rbtBalance,
106335
+ // },
106336
+ // {
106337
+ // symbol: usdrBalance.symbol,
106338
+ // name: 'USD Real-estate',
106339
+ // address: '0x8d335fe5B30e27F2B21F057a4766cf4BB8c30785',
106340
+ // balance: usdrBalance,
106341
+ // decimals: usdrBalance.decimals,
106342
+ // totalSupply: usdrBalance,
106343
+ // },
106344
+ // {
106345
+ // symbol: wftBalance.symbol,
106346
+ // name: 'WeBlock Foundation Token',
106347
+ // address: '0x6fa62Eda03956ef4E54f3C8597E8c3f3bE40A45B',
106348
+ // balance: wftBalance,
106349
+ // decimals: wftBalance.decimals,
106350
+ // totalSupply: wftBalance,
106351
+ // },
106352
+ // {
106353
+ // symbol: usdtBalance.symbol,
106354
+ // name: 'USD Tether',
106355
+ // address: '0xfF54B9ebe777f528E64C74bc95c68433B7546038',
106356
+ // balance: usdtBalance,
106357
+ // decimals: usdtBalance.decimals,
106358
+ // totalSupply: usdtBalance,
106359
+ // },
106204
106360
  ],
106205
106361
  nfts: [],
106206
106362
  securities: []