@bbuilders/djeon402-core 1.0.2 → 1.0.4

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/README.md CHANGED
@@ -79,8 +79,8 @@ interface BlacklistResult {
79
79
 
80
80
  #### KYC Types
81
81
  ```typescript
82
- type KYCLevel = 0 | 1 | 2 | 3;
83
- type KYCLevelName = 'None' | 'Tier1' | 'Tier2' | 'Tier3';
82
+ type KYCLevel = 0 | 1 | 2 | 3 | 4;
83
+ type KYCLevelName = 'None' | 'Tier1' | 'Tier2' | 'Tier3' | 'Tier4';
84
84
 
85
85
  interface KYCData {
86
86
  level: KYCLevel;
@@ -235,5 +235,6 @@ MIT
235
235
 
236
236
  ## Related Packages
237
237
 
238
+ - [@bbuilders/djeon402-contracts](https://www.npmjs.com/package/@bbuilders/djeon402-contracts) - Smart Contracts (Solidity / Foundry)
238
239
  - [@bbuilders/djeon402-sdk-node](https://www.npmjs.com/package/@bbuilders/djeon402-sdk-node) - Node.js/Backend SDK
239
240
  - [@bbuilders/djeon402-sdk-client](https://www.npmjs.com/package/@bbuilders/djeon402-sdk-client) - Browser/Frontend SDK
package/dist/index.cjs CHANGED
@@ -453,6 +453,13 @@ var KYC_REGISTRY_ABI = [
453
453
  outputs: [{ name: "", type: "bool" }],
454
454
  stateMutability: "view"
455
455
  },
456
+ {
457
+ type: "function",
458
+ name: "getLevelLimit",
459
+ inputs: [{ name: "level", type: "uint8" }],
460
+ outputs: [{ name: "", type: "uint256" }],
461
+ stateMutability: "view"
462
+ },
456
463
  // State-changing Functions
457
464
  {
458
465
  type: "function",
@@ -504,6 +511,23 @@ var KYC_REGISTRY_ABI = [
504
511
  outputs: [{ name: "", type: "bool" }],
505
512
  stateMutability: "nonpayable"
506
513
  },
514
+ {
515
+ type: "function",
516
+ name: "setLevelLimit",
517
+ inputs: [
518
+ { name: "level", type: "uint8" },
519
+ { name: "newLimit", type: "uint256" }
520
+ ],
521
+ outputs: [],
522
+ stateMutability: "nonpayable"
523
+ },
524
+ {
525
+ type: "function",
526
+ name: "initializeV2",
527
+ inputs: [],
528
+ outputs: [],
529
+ stateMutability: "nonpayable"
530
+ },
507
531
  {
508
532
  type: "function",
509
533
  name: "approveProvider",
@@ -542,6 +566,14 @@ var KYC_REGISTRY_ABI = [
542
566
  { name: "level", type: "uint8", indexed: false },
543
567
  { name: "expiryDate", type: "uint256", indexed: false }
544
568
  ]
569
+ },
570
+ {
571
+ type: "event",
572
+ name: "LevelLimitUpdated",
573
+ inputs: [
574
+ { name: "level", type: "uint8", indexed: true },
575
+ { name: "newLimit", type: "uint256", indexed: false }
576
+ ]
545
577
  }
546
578
  ];
547
579
  var DEFAULT_CHAIN_ID = 31337;
@@ -562,7 +594,7 @@ var RECEIVE_WITH_AUTHORIZATION_TYPEHASH = viem.keccak256(
562
594
  var CANCEL_AUTHORIZATION_TYPEHASH = viem.keccak256(
563
595
  Buffer.from("CancelAuthorization(address authorizer,bytes32 nonce)")
564
596
  );
565
- var KYC_LEVEL_NAMES = ["None", "Tier1", "Tier2", "Tier3"];
597
+ var KYC_LEVEL_NAMES = ["None", "Tier1", "Tier2", "Tier3", "Tier4"];
566
598
  var DEFAULT_VALID_AFTER = 0n;
567
599
  var DEFAULT_VALID_BEFORE = () => BigInt(Math.floor(Date.now() / 1e3) + 3600);
568
600
  function formatTokenAmount(value, decimals = DJEON402_DECIMALS) {
@@ -577,7 +609,7 @@ function formatTimestamp(timestamp) {
577
609
  return new Date(ts * 1e3).toISOString();
578
610
  }
579
611
  function getKYCLevelName(level) {
580
- const names = ["None", "Tier1", "Tier2", "Tier3"];
612
+ const names = ["None", "Tier1", "Tier2", "Tier3", "Tier4"];
581
613
  return names[level];
582
614
  }
583
615
  function validateAddress(address) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/abi/index.ts","../src/constants.ts","../src/utils/format.ts","../src/utils/validate.ts"],"names":["keccak256","formatUnits","parseUnits","isAddress"],"mappings":"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","file":"index.cjs","sourcesContent":["export const DJEON402_ABI = [\n // ERC-20 Standard\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n ],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n // ERC-2612 Permit\n {\n type: 'function',\n name: 'permit',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'nonces',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'DOMAIN_SEPARATOR',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'view',\n },\n // EIP-3009 Transfer With Authorization\n {\n type: 'function',\n name: 'transferWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'receiveWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelAuthorization',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authorizationState',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Mint & Burn\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burn',\n inputs: [{ name: 'amount', type: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Blacklist\n {\n type: 'function',\n name: 'blacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unBlacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Pausable\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'paused',\n inputs: [],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Access Control\n {\n type: 'function',\n name: 'hasRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'grantRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'renounceRole',\n inputs: [{ name: 'role', type: 'bytes32' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Role constants\n {\n type: 'function',\n name: 'DEFAULT_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'MINTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BURNER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'PAUSER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BLACKLISTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'KYC_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n // Version\n {\n type: 'function',\n name: 'version',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'pure',\n },\n // Events\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true },\n { name: 'spender', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Mint',\n inputs: [\n { name: 'minter', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Burn',\n inputs: [\n { name: 'burner', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Blacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'UnBlacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'AuthorizationUsed',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n {\n type: 'event',\n name: 'AuthorizationCanceled',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n // Errors\n { type: 'error', name: 'InvalidAddress', inputs: [] },\n { type: 'error', name: 'InsufficientBalance', inputs: [] },\n { type: 'error', name: 'InsufficientAllowance', inputs: [] },\n {\n type: 'error',\n name: 'AccountBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n },\n { type: 'error', name: 'ContractPaused', inputs: [] },\n { type: 'error', name: 'AccessDenied', inputs: [] },\n { type: 'error', name: 'InvalidSignature', inputs: [] },\n { type: 'error', name: 'AuthorizationExpired', inputs: [] },\n { type: 'error', name: 'AuthorizationNotYetValid', inputs: [] },\n { type: 'error', name: 'AuthorizationAlreadyUsed', inputs: [] },\n { type: 'error', name: 'PermitExpired', inputs: [] },\n] as const;\n\nexport const KYC_REGISTRY_ABI = [\n // View Functions\n {\n type: 'function',\n name: 'getKYCData',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n { name: 'isActive', type: 'bool' },\n { name: 'dailyLimit', type: 'uint256' },\n { name: 'dailySpent', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getKYCLevel',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isKYCValid',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRemainingDailyLimit',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isProviderApproved',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n // State-changing Functions\n {\n type: 'function',\n name: 'verifyKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeKYC',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'newLimit', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'checkDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approveProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Events\n {\n type: 'event',\n name: 'KYCVerified',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n { name: 'dailyLimit', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'KYCRevoked',\n inputs: [{ name: 'user', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'KYCUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n ],\n },\n] as const;\n","import { keccak256 } from 'viem';\n\n// Default chain configurations\nexport const DEFAULT_CHAIN_ID = 31337; // Anvil local\nexport const DEFAULT_RPC_URL = 'http://127.0.0.1:8545';\n\n// Token decimals\nexport const DJEON402_DECIMALS = 18;\n\n// EIP-712 Domain Name\nexport const EIP712_DOMAIN_NAME = 'DONGJEON402 Token';\nexport const EIP712_DOMAIN_VERSION = '1';\n\n// EIP-3009 TypeHashes\nexport const TRANSFER_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const RECEIVE_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'ReceiveWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const CANCEL_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from('CancelAuthorization(address authorizer,bytes32 nonce)')\n);\n\n// KYC Level mappings\nexport const KYC_LEVEL_NAMES = ['None', 'Tier1', 'Tier2', 'Tier3'] as const;\n\n// Default validity period for x402 (1 hour)\nexport const DEFAULT_VALID_AFTER = 0n;\nexport const DEFAULT_VALID_BEFORE = () => BigInt(Math.floor(Date.now() / 1000) + 3600);\n","import { formatUnits, parseUnits } from 'viem';\nimport { DJEON402_DECIMALS } from '../constants';\n\n/**\n * Format raw token amount to human-readable string\n * @param value Raw value (with decimals)\n * @param decimals Token decimals (default: 6)\n * @returns Formatted string\n */\nexport function formatTokenAmount(value: bigint, decimals: number = DJEON402_DECIMALS): string {\n return formatUnits(value, decimals);\n}\n\n/**\n * Parse human-readable amount to raw value\n * @param value Human-readable value\n * @param decimals Token decimals (default: 6)\n * @returns Raw value (bigint)\n */\nexport function parseTokenAmount(value: string, decimals: number = DJEON402_DECIMALS): bigint {\n return parseUnits(value, decimals);\n}\n\n/**\n * Format timestamp to ISO string\n * @param timestamp Unix timestamp\n * @returns ISO string or \"No Expiry\"\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n if (ts === 0) return 'No Expiry';\n return new Date(ts * 1000).toISOString();\n}\n\n/**\n * Get KYC level name\n * @param level KYC level (0-3)\n * @returns Level name\n */\nexport function getKYCLevelName(level: 0 | 1 | 2 | 3): 'None' | 'Tier1' | 'Tier2' | 'Tier3' {\n const names = ['None', 'Tier1', 'Tier2', 'Tier3'] as const;\n return names[level];\n}\n","import { type Address, type Hex, isAddress } from 'viem';\n\n/**\n * Validate Ethereum address\n * @param address Address to validate\n * @throws Error if invalid\n */\nexport function validateAddress(address: string): asserts address is Address {\n if (!isAddress(address)) {\n throw new Error(`Invalid address: ${address}`);\n }\n}\n\n/**\n * Validate private key format\n * @param privateKey Private key to validate\n * @throws Error if invalid\n */\nexport function validatePrivateKey(privateKey: string): asserts privateKey is `0x${string}` {\n if (!privateKey.startsWith('0x')) {\n throw new Error('Private key must start with 0x');\n }\n if (privateKey.length !== 66) {\n throw new Error('Private key must be 66 characters (0x + 64 hex characters)');\n }\n}\n\n/**\n * Validate amount is positive\n * @param amount Amount to validate\n * @throws Error if invalid\n */\nexport function validateAmount(amount: string): void {\n const num = parseFloat(amount);\n if (Number.isNaN(num) || num <= 0) {\n throw new Error(`Invalid amount: ${amount}. Must be a positive number.`);\n }\n}\n\n/**\n * Validate KYC level\n * @param level KYC level to validate\n * @throws Error if invalid\n */\nexport function validateKYCLevel(level: number): asserts level is 0 | 1 | 2 | 3 {\n if (![0, 1, 2, 3].includes(level)) {\n throw new Error(`Invalid KYC level: ${level}. Must be 0, 1, 2, or 3.`);\n }\n}\n\n/**\n * Validate hex string\n * @param hex Hex string to validate\n * @throws Error if invalid\n */\nexport function validateHex(hex: string): asserts hex is Hex {\n if (!hex.startsWith('0x')) {\n throw new Error('Hex string must start with 0x');\n }\n if (!/^0x[0-9a-fA-F]+$/.test(hex)) {\n throw new Error('Invalid hex string');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/abi/index.ts","../src/constants.ts","../src/utils/format.ts","../src/utils/validate.ts"],"names":["keccak256","formatUnits","parseUnits","isAddress"],"mappings":"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","file":"index.cjs","sourcesContent":["export const DJEON402_ABI = [\n // ERC-20 Standard\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n ],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n // ERC-2612 Permit\n {\n type: 'function',\n name: 'permit',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'nonces',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'DOMAIN_SEPARATOR',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'view',\n },\n // EIP-3009 Transfer With Authorization\n {\n type: 'function',\n name: 'transferWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'receiveWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelAuthorization',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authorizationState',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Mint & Burn\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burn',\n inputs: [{ name: 'amount', type: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Blacklist\n {\n type: 'function',\n name: 'blacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unBlacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Pausable\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'paused',\n inputs: [],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Access Control\n {\n type: 'function',\n name: 'hasRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'grantRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'renounceRole',\n inputs: [{ name: 'role', type: 'bytes32' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Role constants\n {\n type: 'function',\n name: 'DEFAULT_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'MINTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BURNER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'PAUSER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BLACKLISTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'KYC_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n // Version\n {\n type: 'function',\n name: 'version',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'pure',\n },\n // Events\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true },\n { name: 'spender', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Mint',\n inputs: [\n { name: 'minter', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Burn',\n inputs: [\n { name: 'burner', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Blacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'UnBlacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'AuthorizationUsed',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n {\n type: 'event',\n name: 'AuthorizationCanceled',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n // Errors\n { type: 'error', name: 'InvalidAddress', inputs: [] },\n { type: 'error', name: 'InsufficientBalance', inputs: [] },\n { type: 'error', name: 'InsufficientAllowance', inputs: [] },\n {\n type: 'error',\n name: 'AccountBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n },\n { type: 'error', name: 'ContractPaused', inputs: [] },\n { type: 'error', name: 'AccessDenied', inputs: [] },\n { type: 'error', name: 'InvalidSignature', inputs: [] },\n { type: 'error', name: 'AuthorizationExpired', inputs: [] },\n { type: 'error', name: 'AuthorizationNotYetValid', inputs: [] },\n { type: 'error', name: 'AuthorizationAlreadyUsed', inputs: [] },\n { type: 'error', name: 'PermitExpired', inputs: [] },\n] as const;\n\nexport const KYC_REGISTRY_ABI = [\n // View Functions\n {\n type: 'function',\n name: 'getKYCData',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n { name: 'isActive', type: 'bool' },\n { name: 'dailyLimit', type: 'uint256' },\n { name: 'dailySpent', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getKYCLevel',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isKYCValid',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRemainingDailyLimit',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isProviderApproved',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLevelLimit',\n inputs: [{ name: 'level', type: 'uint8' }],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n // State-changing Functions\n {\n type: 'function',\n name: 'verifyKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeKYC',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'newLimit', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'checkDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setLevelLimit',\n inputs: [\n { name: 'level', type: 'uint8' },\n { name: 'newLimit', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'initializeV2',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approveProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Events\n {\n type: 'event',\n name: 'KYCVerified',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n { name: 'dailyLimit', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'KYCRevoked',\n inputs: [{ name: 'user', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'KYCUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'LevelLimitUpdated',\n inputs: [\n { name: 'level', type: 'uint8', indexed: true },\n { name: 'newLimit', type: 'uint256', indexed: false },\n ],\n },\n] as const;\n","import { keccak256 } from 'viem';\n\n// Default chain configurations\nexport const DEFAULT_CHAIN_ID = 31337; // Anvil local\nexport const DEFAULT_RPC_URL = 'http://127.0.0.1:8545';\n\n// Token decimals\nexport const DJEON402_DECIMALS = 18;\n\n// EIP-712 Domain Name\nexport const EIP712_DOMAIN_NAME = 'DONGJEON402 Token';\nexport const EIP712_DOMAIN_VERSION = '1';\n\n// EIP-3009 TypeHashes\nexport const TRANSFER_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const RECEIVE_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'ReceiveWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const CANCEL_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from('CancelAuthorization(address authorizer,bytes32 nonce)')\n);\n\n// KYC Level mappings\nexport const KYC_LEVEL_NAMES = ['None', 'Tier1', 'Tier2', 'Tier3', 'Tier4'] as const;\n\n// Default validity period for x402 (1 hour)\nexport const DEFAULT_VALID_AFTER = 0n;\nexport const DEFAULT_VALID_BEFORE = () => BigInt(Math.floor(Date.now() / 1000) + 3600);\n","import { formatUnits, parseUnits } from 'viem';\nimport { DJEON402_DECIMALS } from '../constants';\n\n/**\n * Format raw token amount to human-readable string\n * @param value Raw value (with decimals)\n * @param decimals Token decimals (default: 6)\n * @returns Formatted string\n */\nexport function formatTokenAmount(value: bigint, decimals: number = DJEON402_DECIMALS): string {\n return formatUnits(value, decimals);\n}\n\n/**\n * Parse human-readable amount to raw value\n * @param value Human-readable value\n * @param decimals Token decimals (default: 6)\n * @returns Raw value (bigint)\n */\nexport function parseTokenAmount(value: string, decimals: number = DJEON402_DECIMALS): bigint {\n return parseUnits(value, decimals);\n}\n\n/**\n * Format timestamp to ISO string\n * @param timestamp Unix timestamp\n * @returns ISO string or \"No Expiry\"\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n if (ts === 0) return 'No Expiry';\n return new Date(ts * 1000).toISOString();\n}\n\n/**\n * Get KYC level name\n * @param level KYC level (0-4)\n * @returns Level name\n */\nexport function getKYCLevelName(level: 0 | 1 | 2 | 3 | 4): 'None' | 'Tier1' | 'Tier2' | 'Tier3' | 'Tier4' {\n const names = ['None', 'Tier1', 'Tier2', 'Tier3', 'Tier4'] as const;\n return names[level];\n}\n","import { type Address, type Hex, isAddress } from 'viem';\n\n/**\n * Validate Ethereum address\n * @param address Address to validate\n * @throws Error if invalid\n */\nexport function validateAddress(address: string): asserts address is Address {\n if (!isAddress(address)) {\n throw new Error(`Invalid address: ${address}`);\n }\n}\n\n/**\n * Validate private key format\n * @param privateKey Private key to validate\n * @throws Error if invalid\n */\nexport function validatePrivateKey(privateKey: string): asserts privateKey is `0x${string}` {\n if (!privateKey.startsWith('0x')) {\n throw new Error('Private key must start with 0x');\n }\n if (privateKey.length !== 66) {\n throw new Error('Private key must be 66 characters (0x + 64 hex characters)');\n }\n}\n\n/**\n * Validate amount is positive\n * @param amount Amount to validate\n * @throws Error if invalid\n */\nexport function validateAmount(amount: string): void {\n const num = parseFloat(amount);\n if (Number.isNaN(num) || num <= 0) {\n throw new Error(`Invalid amount: ${amount}. Must be a positive number.`);\n }\n}\n\n/**\n * Validate KYC level\n * @param level KYC level to validate\n * @throws Error if invalid\n */\nexport function validateKYCLevel(level: number): asserts level is 0 | 1 | 2 | 3 {\n if (![0, 1, 2, 3].includes(level)) {\n throw new Error(`Invalid KYC level: ${level}. Must be 0, 1, 2, or 3.`);\n }\n}\n\n/**\n * Validate hex string\n * @param hex Hex string to validate\n * @throws Error if invalid\n */\nexport function validateHex(hex: string): asserts hex is Hex {\n if (!hex.startsWith('0x')) {\n throw new Error('Hex string must start with 0x');\n }\n if (!/^0x[0-9a-fA-F]+$/.test(hex)) {\n throw new Error('Invalid hex string');\n }\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -661,6 +661,18 @@ declare const KYC_REGISTRY_ABI: readonly [{
661
661
  readonly type: "bool";
662
662
  }];
663
663
  readonly stateMutability: "view";
664
+ }, {
665
+ readonly type: "function";
666
+ readonly name: "getLevelLimit";
667
+ readonly inputs: readonly [{
668
+ readonly name: "level";
669
+ readonly type: "uint8";
670
+ }];
671
+ readonly outputs: readonly [{
672
+ readonly name: "";
673
+ readonly type: "uint256";
674
+ }];
675
+ readonly stateMutability: "view";
664
676
  }, {
665
677
  readonly type: "function";
666
678
  readonly name: "verifyKYC";
@@ -730,6 +742,24 @@ declare const KYC_REGISTRY_ABI: readonly [{
730
742
  readonly type: "bool";
731
743
  }];
732
744
  readonly stateMutability: "nonpayable";
745
+ }, {
746
+ readonly type: "function";
747
+ readonly name: "setLevelLimit";
748
+ readonly inputs: readonly [{
749
+ readonly name: "level";
750
+ readonly type: "uint8";
751
+ }, {
752
+ readonly name: "newLimit";
753
+ readonly type: "uint256";
754
+ }];
755
+ readonly outputs: readonly [];
756
+ readonly stateMutability: "nonpayable";
757
+ }, {
758
+ readonly type: "function";
759
+ readonly name: "initializeV2";
760
+ readonly inputs: readonly [];
761
+ readonly outputs: readonly [];
762
+ readonly stateMutability: "nonpayable";
733
763
  }, {
734
764
  readonly type: "function";
735
765
  readonly name: "approveProvider";
@@ -792,6 +822,18 @@ declare const KYC_REGISTRY_ABI: readonly [{
792
822
  readonly type: "uint256";
793
823
  readonly indexed: false;
794
824
  }];
825
+ }, {
826
+ readonly type: "event";
827
+ readonly name: "LevelLimitUpdated";
828
+ readonly inputs: readonly [{
829
+ readonly name: "level";
830
+ readonly type: "uint8";
831
+ readonly indexed: true;
832
+ }, {
833
+ readonly name: "newLimit";
834
+ readonly type: "uint256";
835
+ readonly indexed: false;
836
+ }];
795
837
  }];
796
838
 
797
839
  declare const DEFAULT_CHAIN_ID = 31337;
@@ -802,7 +844,7 @@ declare const EIP712_DOMAIN_VERSION = "1";
802
844
  declare const TRANSFER_WITH_AUTHORIZATION_TYPEHASH: `0x${string}`;
803
845
  declare const RECEIVE_WITH_AUTHORIZATION_TYPEHASH: `0x${string}`;
804
846
  declare const CANCEL_AUTHORIZATION_TYPEHASH: `0x${string}`;
805
- declare const KYC_LEVEL_NAMES: readonly ["None", "Tier1", "Tier2", "Tier3"];
847
+ declare const KYC_LEVEL_NAMES: readonly ["None", "Tier1", "Tier2", "Tier3", "Tier4"];
806
848
  declare const DEFAULT_VALID_AFTER = 0n;
807
849
  declare const DEFAULT_VALID_BEFORE: () => bigint;
808
850
 
@@ -852,8 +894,8 @@ interface BlacklistResult {
852
894
  address: Address;
853
895
  isBlacklisted: boolean;
854
896
  }
855
- type KYCLevel = 0 | 1 | 2 | 3;
856
- type KYCLevelName = 'None' | 'Tier1' | 'Tier2' | 'Tier3';
897
+ type KYCLevel = 0 | 1 | 2 | 3 | 4;
898
+ type KYCLevelName = 'None' | 'Tier1' | 'Tier2' | 'Tier3' | 'Tier4';
857
899
  interface KYCDocument {
858
900
  filename: string;
859
901
  content: string;
@@ -1012,10 +1054,10 @@ declare function parseTokenAmount(value: string, decimals?: number): bigint;
1012
1054
  declare function formatTimestamp(timestamp: bigint | number): string;
1013
1055
  /**
1014
1056
  * Get KYC level name
1015
- * @param level KYC level (0-3)
1057
+ * @param level KYC level (0-4)
1016
1058
  * @returns Level name
1017
1059
  */
1018
- declare function getKYCLevelName(level: 0 | 1 | 2 | 3): 'None' | 'Tier1' | 'Tier2' | 'Tier3';
1060
+ declare function getKYCLevelName(level: 0 | 1 | 2 | 3 | 4): 'None' | 'Tier1' | 'Tier2' | 'Tier3' | 'Tier4';
1019
1061
 
1020
1062
  /**
1021
1063
  * Validate Ethereum address
package/dist/index.d.ts CHANGED
@@ -661,6 +661,18 @@ declare const KYC_REGISTRY_ABI: readonly [{
661
661
  readonly type: "bool";
662
662
  }];
663
663
  readonly stateMutability: "view";
664
+ }, {
665
+ readonly type: "function";
666
+ readonly name: "getLevelLimit";
667
+ readonly inputs: readonly [{
668
+ readonly name: "level";
669
+ readonly type: "uint8";
670
+ }];
671
+ readonly outputs: readonly [{
672
+ readonly name: "";
673
+ readonly type: "uint256";
674
+ }];
675
+ readonly stateMutability: "view";
664
676
  }, {
665
677
  readonly type: "function";
666
678
  readonly name: "verifyKYC";
@@ -730,6 +742,24 @@ declare const KYC_REGISTRY_ABI: readonly [{
730
742
  readonly type: "bool";
731
743
  }];
732
744
  readonly stateMutability: "nonpayable";
745
+ }, {
746
+ readonly type: "function";
747
+ readonly name: "setLevelLimit";
748
+ readonly inputs: readonly [{
749
+ readonly name: "level";
750
+ readonly type: "uint8";
751
+ }, {
752
+ readonly name: "newLimit";
753
+ readonly type: "uint256";
754
+ }];
755
+ readonly outputs: readonly [];
756
+ readonly stateMutability: "nonpayable";
757
+ }, {
758
+ readonly type: "function";
759
+ readonly name: "initializeV2";
760
+ readonly inputs: readonly [];
761
+ readonly outputs: readonly [];
762
+ readonly stateMutability: "nonpayable";
733
763
  }, {
734
764
  readonly type: "function";
735
765
  readonly name: "approveProvider";
@@ -792,6 +822,18 @@ declare const KYC_REGISTRY_ABI: readonly [{
792
822
  readonly type: "uint256";
793
823
  readonly indexed: false;
794
824
  }];
825
+ }, {
826
+ readonly type: "event";
827
+ readonly name: "LevelLimitUpdated";
828
+ readonly inputs: readonly [{
829
+ readonly name: "level";
830
+ readonly type: "uint8";
831
+ readonly indexed: true;
832
+ }, {
833
+ readonly name: "newLimit";
834
+ readonly type: "uint256";
835
+ readonly indexed: false;
836
+ }];
795
837
  }];
796
838
 
797
839
  declare const DEFAULT_CHAIN_ID = 31337;
@@ -802,7 +844,7 @@ declare const EIP712_DOMAIN_VERSION = "1";
802
844
  declare const TRANSFER_WITH_AUTHORIZATION_TYPEHASH: `0x${string}`;
803
845
  declare const RECEIVE_WITH_AUTHORIZATION_TYPEHASH: `0x${string}`;
804
846
  declare const CANCEL_AUTHORIZATION_TYPEHASH: `0x${string}`;
805
- declare const KYC_LEVEL_NAMES: readonly ["None", "Tier1", "Tier2", "Tier3"];
847
+ declare const KYC_LEVEL_NAMES: readonly ["None", "Tier1", "Tier2", "Tier3", "Tier4"];
806
848
  declare const DEFAULT_VALID_AFTER = 0n;
807
849
  declare const DEFAULT_VALID_BEFORE: () => bigint;
808
850
 
@@ -852,8 +894,8 @@ interface BlacklistResult {
852
894
  address: Address;
853
895
  isBlacklisted: boolean;
854
896
  }
855
- type KYCLevel = 0 | 1 | 2 | 3;
856
- type KYCLevelName = 'None' | 'Tier1' | 'Tier2' | 'Tier3';
897
+ type KYCLevel = 0 | 1 | 2 | 3 | 4;
898
+ type KYCLevelName = 'None' | 'Tier1' | 'Tier2' | 'Tier3' | 'Tier4';
857
899
  interface KYCDocument {
858
900
  filename: string;
859
901
  content: string;
@@ -1012,10 +1054,10 @@ declare function parseTokenAmount(value: string, decimals?: number): bigint;
1012
1054
  declare function formatTimestamp(timestamp: bigint | number): string;
1013
1055
  /**
1014
1056
  * Get KYC level name
1015
- * @param level KYC level (0-3)
1057
+ * @param level KYC level (0-4)
1016
1058
  * @returns Level name
1017
1059
  */
1018
- declare function getKYCLevelName(level: 0 | 1 | 2 | 3): 'None' | 'Tier1' | 'Tier2' | 'Tier3';
1060
+ declare function getKYCLevelName(level: 0 | 1 | 2 | 3 | 4): 'None' | 'Tier1' | 'Tier2' | 'Tier3' | 'Tier4';
1019
1061
 
1020
1062
  /**
1021
1063
  * Validate Ethereum address
package/dist/index.js CHANGED
@@ -451,6 +451,13 @@ var KYC_REGISTRY_ABI = [
451
451
  outputs: [{ name: "", type: "bool" }],
452
452
  stateMutability: "view"
453
453
  },
454
+ {
455
+ type: "function",
456
+ name: "getLevelLimit",
457
+ inputs: [{ name: "level", type: "uint8" }],
458
+ outputs: [{ name: "", type: "uint256" }],
459
+ stateMutability: "view"
460
+ },
454
461
  // State-changing Functions
455
462
  {
456
463
  type: "function",
@@ -502,6 +509,23 @@ var KYC_REGISTRY_ABI = [
502
509
  outputs: [{ name: "", type: "bool" }],
503
510
  stateMutability: "nonpayable"
504
511
  },
512
+ {
513
+ type: "function",
514
+ name: "setLevelLimit",
515
+ inputs: [
516
+ { name: "level", type: "uint8" },
517
+ { name: "newLimit", type: "uint256" }
518
+ ],
519
+ outputs: [],
520
+ stateMutability: "nonpayable"
521
+ },
522
+ {
523
+ type: "function",
524
+ name: "initializeV2",
525
+ inputs: [],
526
+ outputs: [],
527
+ stateMutability: "nonpayable"
528
+ },
505
529
  {
506
530
  type: "function",
507
531
  name: "approveProvider",
@@ -540,6 +564,14 @@ var KYC_REGISTRY_ABI = [
540
564
  { name: "level", type: "uint8", indexed: false },
541
565
  { name: "expiryDate", type: "uint256", indexed: false }
542
566
  ]
567
+ },
568
+ {
569
+ type: "event",
570
+ name: "LevelLimitUpdated",
571
+ inputs: [
572
+ { name: "level", type: "uint8", indexed: true },
573
+ { name: "newLimit", type: "uint256", indexed: false }
574
+ ]
543
575
  }
544
576
  ];
545
577
  var DEFAULT_CHAIN_ID = 31337;
@@ -560,7 +592,7 @@ var RECEIVE_WITH_AUTHORIZATION_TYPEHASH = keccak256(
560
592
  var CANCEL_AUTHORIZATION_TYPEHASH = keccak256(
561
593
  Buffer.from("CancelAuthorization(address authorizer,bytes32 nonce)")
562
594
  );
563
- var KYC_LEVEL_NAMES = ["None", "Tier1", "Tier2", "Tier3"];
595
+ var KYC_LEVEL_NAMES = ["None", "Tier1", "Tier2", "Tier3", "Tier4"];
564
596
  var DEFAULT_VALID_AFTER = 0n;
565
597
  var DEFAULT_VALID_BEFORE = () => BigInt(Math.floor(Date.now() / 1e3) + 3600);
566
598
  function formatTokenAmount(value, decimals = DJEON402_DECIMALS) {
@@ -575,7 +607,7 @@ function formatTimestamp(timestamp) {
575
607
  return new Date(ts * 1e3).toISOString();
576
608
  }
577
609
  function getKYCLevelName(level) {
578
- const names = ["None", "Tier1", "Tier2", "Tier3"];
610
+ const names = ["None", "Tier1", "Tier2", "Tier3", "Tier4"];
579
611
  return names[level];
580
612
  }
581
613
  function validateAddress(address) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/abi/index.ts","../src/constants.ts","../src/utils/format.ts","../src/utils/validate.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const DJEON402_ABI = [\n // ERC-20 Standard\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n ],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n // ERC-2612 Permit\n {\n type: 'function',\n name: 'permit',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'nonces',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'DOMAIN_SEPARATOR',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'view',\n },\n // EIP-3009 Transfer With Authorization\n {\n type: 'function',\n name: 'transferWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'receiveWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelAuthorization',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authorizationState',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Mint & Burn\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burn',\n inputs: [{ name: 'amount', type: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Blacklist\n {\n type: 'function',\n name: 'blacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unBlacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Pausable\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'paused',\n inputs: [],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Access Control\n {\n type: 'function',\n name: 'hasRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'grantRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'renounceRole',\n inputs: [{ name: 'role', type: 'bytes32' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Role constants\n {\n type: 'function',\n name: 'DEFAULT_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'MINTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BURNER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'PAUSER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BLACKLISTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'KYC_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n // Version\n {\n type: 'function',\n name: 'version',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'pure',\n },\n // Events\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true },\n { name: 'spender', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Mint',\n inputs: [\n { name: 'minter', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Burn',\n inputs: [\n { name: 'burner', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Blacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'UnBlacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'AuthorizationUsed',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n {\n type: 'event',\n name: 'AuthorizationCanceled',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n // Errors\n { type: 'error', name: 'InvalidAddress', inputs: [] },\n { type: 'error', name: 'InsufficientBalance', inputs: [] },\n { type: 'error', name: 'InsufficientAllowance', inputs: [] },\n {\n type: 'error',\n name: 'AccountBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n },\n { type: 'error', name: 'ContractPaused', inputs: [] },\n { type: 'error', name: 'AccessDenied', inputs: [] },\n { type: 'error', name: 'InvalidSignature', inputs: [] },\n { type: 'error', name: 'AuthorizationExpired', inputs: [] },\n { type: 'error', name: 'AuthorizationNotYetValid', inputs: [] },\n { type: 'error', name: 'AuthorizationAlreadyUsed', inputs: [] },\n { type: 'error', name: 'PermitExpired', inputs: [] },\n] as const;\n\nexport const KYC_REGISTRY_ABI = [\n // View Functions\n {\n type: 'function',\n name: 'getKYCData',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n { name: 'isActive', type: 'bool' },\n { name: 'dailyLimit', type: 'uint256' },\n { name: 'dailySpent', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getKYCLevel',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isKYCValid',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRemainingDailyLimit',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isProviderApproved',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n // State-changing Functions\n {\n type: 'function',\n name: 'verifyKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeKYC',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'newLimit', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'checkDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approveProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Events\n {\n type: 'event',\n name: 'KYCVerified',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n { name: 'dailyLimit', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'KYCRevoked',\n inputs: [{ name: 'user', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'KYCUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n ],\n },\n] as const;\n","import { keccak256 } from 'viem';\n\n// Default chain configurations\nexport const DEFAULT_CHAIN_ID = 31337; // Anvil local\nexport const DEFAULT_RPC_URL = 'http://127.0.0.1:8545';\n\n// Token decimals\nexport const DJEON402_DECIMALS = 18;\n\n// EIP-712 Domain Name\nexport const EIP712_DOMAIN_NAME = 'DONGJEON402 Token';\nexport const EIP712_DOMAIN_VERSION = '1';\n\n// EIP-3009 TypeHashes\nexport const TRANSFER_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const RECEIVE_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'ReceiveWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const CANCEL_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from('CancelAuthorization(address authorizer,bytes32 nonce)')\n);\n\n// KYC Level mappings\nexport const KYC_LEVEL_NAMES = ['None', 'Tier1', 'Tier2', 'Tier3'] as const;\n\n// Default validity period for x402 (1 hour)\nexport const DEFAULT_VALID_AFTER = 0n;\nexport const DEFAULT_VALID_BEFORE = () => BigInt(Math.floor(Date.now() / 1000) + 3600);\n","import { formatUnits, parseUnits } from 'viem';\nimport { DJEON402_DECIMALS } from '../constants';\n\n/**\n * Format raw token amount to human-readable string\n * @param value Raw value (with decimals)\n * @param decimals Token decimals (default: 6)\n * @returns Formatted string\n */\nexport function formatTokenAmount(value: bigint, decimals: number = DJEON402_DECIMALS): string {\n return formatUnits(value, decimals);\n}\n\n/**\n * Parse human-readable amount to raw value\n * @param value Human-readable value\n * @param decimals Token decimals (default: 6)\n * @returns Raw value (bigint)\n */\nexport function parseTokenAmount(value: string, decimals: number = DJEON402_DECIMALS): bigint {\n return parseUnits(value, decimals);\n}\n\n/**\n * Format timestamp to ISO string\n * @param timestamp Unix timestamp\n * @returns ISO string or \"No Expiry\"\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n if (ts === 0) return 'No Expiry';\n return new Date(ts * 1000).toISOString();\n}\n\n/**\n * Get KYC level name\n * @param level KYC level (0-3)\n * @returns Level name\n */\nexport function getKYCLevelName(level: 0 | 1 | 2 | 3): 'None' | 'Tier1' | 'Tier2' | 'Tier3' {\n const names = ['None', 'Tier1', 'Tier2', 'Tier3'] as const;\n return names[level];\n}\n","import { type Address, type Hex, isAddress } from 'viem';\n\n/**\n * Validate Ethereum address\n * @param address Address to validate\n * @throws Error if invalid\n */\nexport function validateAddress(address: string): asserts address is Address {\n if (!isAddress(address)) {\n throw new Error(`Invalid address: ${address}`);\n }\n}\n\n/**\n * Validate private key format\n * @param privateKey Private key to validate\n * @throws Error if invalid\n */\nexport function validatePrivateKey(privateKey: string): asserts privateKey is `0x${string}` {\n if (!privateKey.startsWith('0x')) {\n throw new Error('Private key must start with 0x');\n }\n if (privateKey.length !== 66) {\n throw new Error('Private key must be 66 characters (0x + 64 hex characters)');\n }\n}\n\n/**\n * Validate amount is positive\n * @param amount Amount to validate\n * @throws Error if invalid\n */\nexport function validateAmount(amount: string): void {\n const num = parseFloat(amount);\n if (Number.isNaN(num) || num <= 0) {\n throw new Error(`Invalid amount: ${amount}. Must be a positive number.`);\n }\n}\n\n/**\n * Validate KYC level\n * @param level KYC level to validate\n * @throws Error if invalid\n */\nexport function validateKYCLevel(level: number): asserts level is 0 | 1 | 2 | 3 {\n if (![0, 1, 2, 3].includes(level)) {\n throw new Error(`Invalid KYC level: ${level}. Must be 0, 1, 2, or 3.`);\n }\n}\n\n/**\n * Validate hex string\n * @param hex Hex string to validate\n * @throws Error if invalid\n */\nexport function validateHex(hex: string): asserts hex is Hex {\n if (!hex.startsWith('0x')) {\n throw new Error('Hex string must start with 0x');\n }\n if (!/^0x[0-9a-fA-F]+$/.test(hex)) {\n throw new Error('Invalid hex string');\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/abi/index.ts","../src/constants.ts","../src/utils/format.ts","../src/utils/validate.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const DJEON402_ABI = [\n // ERC-20 Standard\n {\n type: 'function',\n name: 'name',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'symbol',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'decimals',\n inputs: [],\n outputs: [{ type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'totalSupply',\n inputs: [],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'balanceOf',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'allowance',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n ],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'transfer',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approve',\n inputs: [\n { name: 'spender', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'transferFrom',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n // ERC-2612 Permit\n {\n type: 'function',\n name: 'permit',\n inputs: [\n { name: 'owner', type: 'address' },\n { name: 'spender', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'nonces',\n inputs: [{ name: 'owner', type: 'address' }],\n outputs: [{ type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'DOMAIN_SEPARATOR',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'view',\n },\n // EIP-3009 Transfer With Authorization\n {\n type: 'function',\n name: 'transferWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'receiveWithAuthorization',\n inputs: [\n { name: 'from', type: 'address' },\n { name: 'to', type: 'address' },\n { name: 'value', type: 'uint256' },\n { name: 'validAfter', type: 'uint256' },\n { name: 'validBefore', type: 'uint256' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'cancelAuthorization',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n { name: 'v', type: 'uint8' },\n { name: 'r', type: 'bytes32' },\n { name: 's', type: 'bytes32' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'authorizationState',\n inputs: [\n { name: 'authorizer', type: 'address' },\n { name: 'nonce', type: 'bytes32' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Mint & Burn\n {\n type: 'function',\n name: 'mint',\n inputs: [\n { name: 'to', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'burn',\n inputs: [{ name: 'amount', type: 'uint256' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Blacklist\n {\n type: 'function',\n name: 'blacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unBlacklist',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'isBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Pausable\n {\n type: 'function',\n name: 'pause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'unpause',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'paused',\n inputs: [],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n // Access Control\n {\n type: 'function',\n name: 'hasRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [{ type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'grantRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeRole',\n inputs: [\n { name: 'role', type: 'bytes32' },\n { name: 'account', type: 'address' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'renounceRole',\n inputs: [{ name: 'role', type: 'bytes32' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Role constants\n {\n type: 'function',\n name: 'DEFAULT_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'MINTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BURNER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'PAUSER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'BLACKLISTER_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n {\n type: 'function',\n name: 'KYC_ADMIN_ROLE',\n inputs: [],\n outputs: [{ type: 'bytes32' }],\n stateMutability: 'pure',\n },\n // Version\n {\n type: 'function',\n name: 'version',\n inputs: [],\n outputs: [{ type: 'string' }],\n stateMutability: 'pure',\n },\n // Events\n {\n type: 'event',\n name: 'Transfer',\n inputs: [\n { name: 'from', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Approval',\n inputs: [\n { name: 'owner', type: 'address', indexed: true },\n { name: 'spender', type: 'address', indexed: true },\n { name: 'value', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Mint',\n inputs: [\n { name: 'minter', type: 'address', indexed: true },\n { name: 'to', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Burn',\n inputs: [\n { name: 'burner', type: 'address', indexed: true },\n { name: 'amount', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'Blacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'UnBlacklisted',\n inputs: [{ name: 'account', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'Paused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'Unpaused',\n inputs: [{ name: 'account', type: 'address', indexed: false }],\n },\n {\n type: 'event',\n name: 'AuthorizationUsed',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n {\n type: 'event',\n name: 'AuthorizationCanceled',\n inputs: [\n { name: 'authorizer', type: 'address', indexed: true },\n { name: 'nonce', type: 'bytes32', indexed: true },\n ],\n },\n // Errors\n { type: 'error', name: 'InvalidAddress', inputs: [] },\n { type: 'error', name: 'InsufficientBalance', inputs: [] },\n { type: 'error', name: 'InsufficientAllowance', inputs: [] },\n {\n type: 'error',\n name: 'AccountBlacklisted',\n inputs: [{ name: 'account', type: 'address' }],\n },\n { type: 'error', name: 'ContractPaused', inputs: [] },\n { type: 'error', name: 'AccessDenied', inputs: [] },\n { type: 'error', name: 'InvalidSignature', inputs: [] },\n { type: 'error', name: 'AuthorizationExpired', inputs: [] },\n { type: 'error', name: 'AuthorizationNotYetValid', inputs: [] },\n { type: 'error', name: 'AuthorizationAlreadyUsed', inputs: [] },\n { type: 'error', name: 'PermitExpired', inputs: [] },\n] as const;\n\nexport const KYC_REGISTRY_ABI = [\n // View Functions\n {\n type: 'function',\n name: 'getKYCData',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n { name: 'isActive', type: 'bool' },\n { name: 'dailyLimit', type: 'uint256' },\n { name: 'dailySpent', type: 'uint256' },\n ],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getKYCLevel',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint8' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isKYCValid',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getRemainingDailyLimit',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'isProviderApproved',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'view',\n },\n {\n type: 'function',\n name: 'getLevelLimit',\n inputs: [{ name: 'level', type: 'uint8' }],\n outputs: [{ name: '', type: 'uint256' }],\n stateMutability: 'view',\n },\n // State-changing Functions\n {\n type: 'function',\n name: 'verifyKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n { name: 'kycHash', type: 'string' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'updateKYC',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'level', type: 'uint8' },\n { name: 'expiryDate', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeKYC',\n inputs: [{ name: 'user', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'newLimit', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'checkDailyLimit',\n inputs: [\n { name: 'user', type: 'address' },\n { name: 'amount', type: 'uint256' },\n ],\n outputs: [{ name: '', type: 'bool' }],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'setLevelLimit',\n inputs: [\n { name: 'level', type: 'uint8' },\n { name: 'newLimit', type: 'uint256' },\n ],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'initializeV2',\n inputs: [],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'approveProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n {\n type: 'function',\n name: 'revokeProvider',\n inputs: [{ name: 'provider', type: 'address' }],\n outputs: [],\n stateMutability: 'nonpayable',\n },\n // Events\n {\n type: 'event',\n name: 'KYCVerified',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n { name: 'dailyLimit', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'KYCRevoked',\n inputs: [{ name: 'user', type: 'address', indexed: true }],\n },\n {\n type: 'event',\n name: 'KYCUpdated',\n inputs: [\n { name: 'user', type: 'address', indexed: true },\n { name: 'level', type: 'uint8', indexed: false },\n { name: 'expiryDate', type: 'uint256', indexed: false },\n ],\n },\n {\n type: 'event',\n name: 'LevelLimitUpdated',\n inputs: [\n { name: 'level', type: 'uint8', indexed: true },\n { name: 'newLimit', type: 'uint256', indexed: false },\n ],\n },\n] as const;\n","import { keccak256 } from 'viem';\n\n// Default chain configurations\nexport const DEFAULT_CHAIN_ID = 31337; // Anvil local\nexport const DEFAULT_RPC_URL = 'http://127.0.0.1:8545';\n\n// Token decimals\nexport const DJEON402_DECIMALS = 18;\n\n// EIP-712 Domain Name\nexport const EIP712_DOMAIN_NAME = 'DONGJEON402 Token';\nexport const EIP712_DOMAIN_VERSION = '1';\n\n// EIP-3009 TypeHashes\nexport const TRANSFER_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const RECEIVE_WITH_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from(\n 'ReceiveWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'\n )\n);\n\nexport const CANCEL_AUTHORIZATION_TYPEHASH = keccak256(\n Buffer.from('CancelAuthorization(address authorizer,bytes32 nonce)')\n);\n\n// KYC Level mappings\nexport const KYC_LEVEL_NAMES = ['None', 'Tier1', 'Tier2', 'Tier3', 'Tier4'] as const;\n\n// Default validity period for x402 (1 hour)\nexport const DEFAULT_VALID_AFTER = 0n;\nexport const DEFAULT_VALID_BEFORE = () => BigInt(Math.floor(Date.now() / 1000) + 3600);\n","import { formatUnits, parseUnits } from 'viem';\nimport { DJEON402_DECIMALS } from '../constants';\n\n/**\n * Format raw token amount to human-readable string\n * @param value Raw value (with decimals)\n * @param decimals Token decimals (default: 6)\n * @returns Formatted string\n */\nexport function formatTokenAmount(value: bigint, decimals: number = DJEON402_DECIMALS): string {\n return formatUnits(value, decimals);\n}\n\n/**\n * Parse human-readable amount to raw value\n * @param value Human-readable value\n * @param decimals Token decimals (default: 6)\n * @returns Raw value (bigint)\n */\nexport function parseTokenAmount(value: string, decimals: number = DJEON402_DECIMALS): bigint {\n return parseUnits(value, decimals);\n}\n\n/**\n * Format timestamp to ISO string\n * @param timestamp Unix timestamp\n * @returns ISO string or \"No Expiry\"\n */\nexport function formatTimestamp(timestamp: bigint | number): string {\n const ts = typeof timestamp === 'bigint' ? Number(timestamp) : timestamp;\n if (ts === 0) return 'No Expiry';\n return new Date(ts * 1000).toISOString();\n}\n\n/**\n * Get KYC level name\n * @param level KYC level (0-4)\n * @returns Level name\n */\nexport function getKYCLevelName(level: 0 | 1 | 2 | 3 | 4): 'None' | 'Tier1' | 'Tier2' | 'Tier3' | 'Tier4' {\n const names = ['None', 'Tier1', 'Tier2', 'Tier3', 'Tier4'] as const;\n return names[level];\n}\n","import { type Address, type Hex, isAddress } from 'viem';\n\n/**\n * Validate Ethereum address\n * @param address Address to validate\n * @throws Error if invalid\n */\nexport function validateAddress(address: string): asserts address is Address {\n if (!isAddress(address)) {\n throw new Error(`Invalid address: ${address}`);\n }\n}\n\n/**\n * Validate private key format\n * @param privateKey Private key to validate\n * @throws Error if invalid\n */\nexport function validatePrivateKey(privateKey: string): asserts privateKey is `0x${string}` {\n if (!privateKey.startsWith('0x')) {\n throw new Error('Private key must start with 0x');\n }\n if (privateKey.length !== 66) {\n throw new Error('Private key must be 66 characters (0x + 64 hex characters)');\n }\n}\n\n/**\n * Validate amount is positive\n * @param amount Amount to validate\n * @throws Error if invalid\n */\nexport function validateAmount(amount: string): void {\n const num = parseFloat(amount);\n if (Number.isNaN(num) || num <= 0) {\n throw new Error(`Invalid amount: ${amount}. Must be a positive number.`);\n }\n}\n\n/**\n * Validate KYC level\n * @param level KYC level to validate\n * @throws Error if invalid\n */\nexport function validateKYCLevel(level: number): asserts level is 0 | 1 | 2 | 3 {\n if (![0, 1, 2, 3].includes(level)) {\n throw new Error(`Invalid KYC level: ${level}. Must be 0, 1, 2, or 3.`);\n }\n}\n\n/**\n * Validate hex string\n * @param hex Hex string to validate\n * @throws Error if invalid\n */\nexport function validateHex(hex: string): asserts hex is Hex {\n if (!hex.startsWith('0x')) {\n throw new Error('Hex string must start with 0x');\n }\n if (!/^0x[0-9a-fA-F]+$/.test(hex)) {\n throw new Error('Invalid hex string');\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bbuilders/djeon402-core",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Core types and utilities for DJEON402 SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",