@bbuilders/djeon402-core 1.0.3 → 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 +3 -2
- package/dist/index.cjs +34 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +47 -5
- package/dist/index.d.ts +47 -5
- package/dist/index.js +34 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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) {
|
package/dist/index.cjs.map
CHANGED
|
@@ -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-
|
|
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-
|
|
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"]}
|