@zubari/sdk 0.1.21 → 0.1.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/PayoutsProtocol-BFrXok86.d.ts +181 -0
- package/dist/PayoutsProtocol-Q3wZHcaf.d.mts +181 -0
- package/dist/{WalletManager-wRV8RrnE.d.ts → WalletManager-9bC646Ax.d.ts} +49 -141
- package/dist/{WalletManager-bdFpa_yr.d.mts → WalletManager-B4Ag188W.d.mts} +49 -141
- package/dist/{index-C4wdFOtM.d.mts → index-C4SuAZP4.d.ts} +3 -2
- package/dist/{index-DhluuR9H.d.mts → index-D9vwxETQ.d.mts} +17 -1
- package/dist/{index-DhluuR9H.d.ts → index-D9vwxETQ.d.ts} +17 -1
- package/dist/{index-Cq024jR8.d.ts → index-DkB0ouBN.d.mts} +3 -2
- package/dist/index.d.mts +5 -6
- package/dist/index.d.ts +5 -6
- package/dist/index.js +22 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -51
- package/dist/index.mjs.map +1 -1
- package/dist/protocols/index.d.mts +149 -171
- package/dist/protocols/index.d.ts +149 -171
- package/dist/protocols/index.js +889 -0
- package/dist/protocols/index.js.map +1 -1
- package/dist/protocols/index.mjs +889 -1
- package/dist/protocols/index.mjs.map +1 -1
- package/dist/react/index.d.mts +4 -5
- package/dist/react/index.d.ts +4 -5
- package/dist/react/index.js +15 -54
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +9 -48
- package/dist/react/index.mjs.map +1 -1
- package/dist/services/index.d.mts +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.js +16 -12
- package/dist/services/index.js.map +1 -1
- package/dist/services/index.mjs +10 -6
- package/dist/services/index.mjs.map +1 -1
- package/dist/wallet/index.d.mts +4 -5
- package/dist/wallet/index.d.ts +4 -5
- package/dist/wallet/index.js +22 -57
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/index.mjs +16 -51
- package/dist/wallet/index.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/config/contracts.ts","../../src/protocols/NFTProtocol.ts","../../src/protocols/TipsProtocol.ts","../../src/protocols/SubscriptionProtocol.ts","../../src/protocols/PayoutsProtocol.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["// Contract addresses for Zubari ecosystem\nexport interface ContractAddresses {\n registry: string;\n nft: string;\n marketplace: string;\n tips: string;\n subscriptions: string;\n payouts: string;\n entryPoint: string;\n paymaster: string;\n accountFactory: string;\n usdt: string;\n weth: string;\n}\n\n// Placeholder addresses - will be updated after deployment\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\nexport const ZUBARI_CONTRACTS: Record<'testnet' | 'mainnet', ContractAddresses> = {\n testnet: {\n // Ethereum Sepolia (11155111) - Deployed 2024-12-09\n registry: '0xEdDf443D48832f23D4A0bED4C4c5eF200B38A7d3',\n nft: '0xdc37e25650D685e4c38124aC314477Ea5f508a9e',\n marketplace: ZERO_ADDRESS, // Not yet deployed\n tips: '0xFDc353edC63Cd3D4bba35bB43861369516a9Dc85',\n subscriptions: '0x8C05F8aD2F295fB7f3596043a7c37C98A5F7fAB8',\n payouts: '0x804Fe503936E8b8d3D5Dbb62AF4fB6Fe7265Fb2c',\n entryPoint: '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',\n paymaster: ZERO_ADDRESS, // Not yet deployed\n accountFactory: ZERO_ADDRESS, // Not yet deployed\n usdt: '0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0', // USDT on Sepolia\n weth: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n mainnet: {\n // Ethereum Mainnet (1)\n registry: ZERO_ADDRESS,\n nft: ZERO_ADDRESS,\n marketplace: ZERO_ADDRESS,\n tips: ZERO_ADDRESS,\n subscriptions: ZERO_ADDRESS,\n payouts: ZERO_ADDRESS,\n entryPoint: '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',\n paymaster: ZERO_ADDRESS,\n accountFactory: ZERO_ADDRESS,\n usdt: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT on Ethereum\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n};\n\n// Platform configuration\nexport const PLATFORM_CONFIG = {\n // Platform fee in basis points (300 = 3%)\n tipFeeBps: 300,\n // Maximum royalty in basis points (1000 = 10%)\n maxRoyaltyBps: 1000,\n // Default slippage tolerance for swaps (50 = 0.5%)\n defaultSlippageBps: 50,\n // Voucher validity in seconds (30 days)\n voucherValiditySecs: 30 * 24 * 60 * 60,\n // Swap deadline in seconds (30 minutes)\n swapDeadlineSecs: 30 * 60,\n} as const;\n\n// EIP-712 Domain for lazy minting\nexport const NFT_VOUCHER_DOMAIN = {\n name: 'ZubariNFT',\n version: '1',\n} as const;\n\nexport const NFT_VOUCHER_TYPES = {\n NFTVoucher: [\n { name: 'tokenId', type: 'bytes32' },\n { name: 'uri', type: 'string' },\n { name: 'creator', type: 'address' },\n { name: 'royaltyBps', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n} as const;\n\nexport function getContractAddresses(network: 'testnet' | 'mainnet'): ContractAddresses {\n return ZUBARI_CONTRACTS[network];\n}\n","import type {\n NFTMetadata,\n LazyMintVoucher,\n NFT,\n ListingParams,\n TxResult,\n} from '../types';\nimport { PLATFORM_CONFIG, NFT_VOUCHER_DOMAIN, NFT_VOUCHER_TYPES } from '../config/contracts';\n\n/**\n * ZubariNFTProtocol - NFT creation and marketplace operations\n *\n * Handles lazy minting via EIP-712 signatures, NFT listing,\n * and marketplace operations on Ethereum network.\n */\nexport class ZubariNFTProtocol {\n private readonly contractAddress: string;\n private readonly _marketplaceAddress: string;\n private readonly chainId: number;\n\n constructor(\n contractAddress: string,\n marketplaceAddress: string,\n chainId: number\n ) {\n this.contractAddress = contractAddress;\n this._marketplaceAddress = marketplaceAddress;\n this.chainId = chainId;\n }\n\n /**\n * Create a lazy mint voucher for off-chain NFT creation\n * The voucher can be redeemed on-chain when purchased\n */\n async createLazyMintVoucher(\n metadata: NFTMetadata,\n creatorAddress: string,\n signer: { signTypedData: (domain: object, types: object, value: object) => Promise<string> }\n ): Promise<LazyMintVoucher> {\n // Validate royalty\n if (metadata.royaltyBps > PLATFORM_CONFIG.maxRoyaltyBps) {\n throw new Error(`Royalty cannot exceed ${PLATFORM_CONFIG.maxRoyaltyBps / 100}%`);\n }\n\n // Generate random tokenId\n const tokenId = this.generateTokenId();\n\n // Calculate deadline (30 days from now)\n const deadline = Math.floor(Date.now() / 1000) + PLATFORM_CONFIG.voucherValiditySecs;\n\n // Build voucher data\n const voucherData = {\n tokenId,\n uri: metadata.image, // Will be IPFS URI\n creator: creatorAddress,\n royaltyBps: metadata.royaltyBps,\n deadline,\n };\n\n // Create EIP-712 domain\n const domain = {\n ...NFT_VOUCHER_DOMAIN,\n chainId: this.chainId,\n verifyingContract: this.contractAddress,\n };\n\n // Sign the voucher\n const signature = await signer.signTypedData(domain, NFT_VOUCHER_TYPES, voucherData);\n\n return {\n ...voucherData,\n signature,\n };\n }\n\n /**\n * Redeem a lazy mint voucher to mint the NFT on-chain\n */\n async redeemVoucher(voucher: LazyMintVoucher, _buyerAddress: string): Promise<TxResult> {\n // Validate voucher deadline\n if (voucher.deadline < Math.floor(Date.now() / 1000)) {\n throw new Error('Voucher has expired');\n }\n\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * List an NFT for sale on the marketplace\n */\n async listForSale(_params: ListingParams): Promise<TxResult> {\n // Placeholder - will approve and list\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Buy an NFT from the marketplace\n */\n async buyNFT(_listingId: string, _price: bigint): Promise<TxResult> {\n // Placeholder - will call marketplace contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Transfer an NFT to another address\n */\n async transfer(_tokenId: string, _to: string): Promise<TxResult> {\n // Placeholder - will call NFT contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Get NFTs owned by an address\n */\n async getOwnedNFTs(_address: string): Promise<NFT[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Generate a random tokenId (32 bytes hex)\n */\n private generateTokenId(): string {\n const bytes = new Uint8Array(32);\n crypto.getRandomValues(bytes);\n return '0x' + Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n}\n","import type { TipData, TipResult, TipStats, TxResult } from '../types';\nimport { PLATFORM_CONFIG } from '../config/contracts';\n\n/**\n * ZubariTipsProtocol - Micropayment tips for creators\n *\n * Handles ETH and ERC-20 token tips with platform fee distribution.\n * Supports gasless tips via ERC-4337 when enabled.\n */\nexport class ZubariTipsProtocol {\n private readonly contractAddress: string;\n private readonly chainId: number;\n private readonly gaslessEnabled: boolean;\n\n constructor(contractAddress: string, chainId: number, gaslessEnabled: boolean = false) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n this.gaslessEnabled = gaslessEnabled;\n }\n\n /**\n * Send a tip to a creator\n */\n async sendTip(tip: TipData): Promise<TipResult> {\n const { recipient, amount, token, message } = tip;\n\n // Calculate platform fee (3%)\n const platformFee = (amount * BigInt(PLATFORM_CONFIG.tipFeeBps)) / BigInt(10000);\n const creatorAmount = amount - platformFee;\n\n // Validate amount\n if (amount <= 0n) {\n throw new Error('Tip amount must be greater than 0');\n }\n\n // Placeholder - will call contract\n const txResult: TxResult = {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n\n return {\n txHash: txResult.hash,\n tipId: '', // Will be returned from contract event\n recipient,\n amount: creatorAmount,\n platformFee,\n timestamp: Math.floor(Date.now() / 1000),\n };\n }\n\n /**\n * Send tips to multiple creators in a single transaction\n */\n async sendBatchTips(tips: TipData[]): Promise<TipResult[]> {\n if (tips.length === 0) {\n throw new Error('At least one tip is required');\n }\n\n // Calculate total amount needed\n const totalAmount = tips.reduce((sum, tip) => sum + tip.amount, BigInt(0));\n\n // Placeholder - will call batch function\n return tips.map(tip => ({\n txHash: '',\n tipId: '',\n recipient: tip.recipient,\n amount: tip.amount - (tip.amount * BigInt(PLATFORM_CONFIG.tipFeeBps)) / BigInt(10000),\n platformFee: (tip.amount * BigInt(PLATFORM_CONFIG.tipFeeBps)) / BigInt(10000),\n timestamp: Math.floor(Date.now() / 1000),\n }));\n }\n\n /**\n * Get tips received by an address\n */\n async getTipsReceived(address: string): Promise<TipResult[]> {\n // Placeholder - will query indexer\n return [];\n }\n\n /**\n * Get tips sent by an address\n */\n async getTipsSent(address: string): Promise<TipResult[]> {\n // Placeholder - will query indexer\n return [];\n }\n\n /**\n * Get tip statistics for a creator\n */\n async getCreatorTipStats(creator: string): Promise<TipStats> {\n // Placeholder - will query indexer/contract\n return {\n totalReceived: BigInt(0),\n tipCount: 0,\n uniqueTippers: 0,\n };\n }\n\n /**\n * Get platform fee in basis points\n */\n getPlatformFeeBps(): number {\n return PLATFORM_CONFIG.tipFeeBps;\n }\n}\n","import type { SubscriptionPlan, Subscription, TxResult } from '../types';\n\n/**\n * ZubariSubscriptionProtocol - Recurring subscription payments\n *\n * Handles subscription plan creation, subscription management,\n * and verification of active subscriptions.\n */\nexport class ZubariSubscriptionProtocol {\n private readonly contractAddress: string;\n private readonly chainId: number;\n\n constructor(contractAddress: string, chainId: number) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n }\n\n /**\n * Create a new subscription plan\n */\n async createPlan(plan: SubscriptionPlan): Promise<string> {\n // Validate plan\n if (!plan.name || plan.name.length === 0) {\n throw new Error('Plan name is required');\n }\n if (plan.price <= 0n) {\n throw new Error('Plan price must be greater than 0');\n }\n if (plan.duration <= 0) {\n throw new Error('Plan duration must be greater than 0');\n }\n\n // Generate planId based on creator + name hash\n const planId = this.generatePlanId(plan.name);\n\n // Placeholder - will call contract\n return planId;\n }\n\n /**\n * Update an existing subscription plan\n */\n async updatePlan(planId: string, updates: Partial<SubscriptionPlan>): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Subscribe to a creator's plan\n */\n async subscribe(\n creator: string,\n planId: string,\n months: number = 1\n ): Promise<Subscription> {\n if (months <= 0) {\n throw new Error('Subscription duration must be at least 1 month');\n }\n\n const now = Math.floor(Date.now() / 1000);\n const durationSeconds = months * 30 * 24 * 60 * 60; // 30 days per month\n\n // Placeholder - will call contract\n return {\n subscriptionId: '',\n planId,\n creator,\n subscriber: '', // Current user address\n startTime: now,\n endTime: now + durationSeconds,\n autoRenew: false,\n status: 'active',\n };\n }\n\n /**\n * Cancel an active subscription\n */\n async cancel(subscriptionId: string): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Check if an address is subscribed to a creator\n */\n async isSubscribed(creator: string, subscriber?: string): Promise<boolean> {\n // Placeholder - will call contract view function\n return false;\n }\n\n /**\n * Get active subscriptions for a subscriber\n */\n async getActiveSubscriptions(subscriber?: string): Promise<Subscription[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Get all subscribers for a creator\n */\n async getSubscribers(creator: string): Promise<Subscription[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Get a specific plan by ID\n */\n async getPlan(planId: string): Promise<SubscriptionPlan | null> {\n // Placeholder - will query contract\n return null;\n }\n\n /**\n * Get all plans for a creator\n */\n async getCreatorPlans(creator: string): Promise<SubscriptionPlan[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Generate a unique plan ID\n */\n private generatePlanId(name: string): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n return '0x' + Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n}\n","import type { EarningsBreakdown, RevenueSplit, TxResult } from '../types';\n\n/**\n * ZubariPayoutsProtocol - Creator earnings management\n *\n * Handles earnings tracking, claiming, revenue splits,\n * and conversion to stablecoins.\n */\nexport class ZubariPayoutsProtocol {\n private readonly contractAddress: string;\n private readonly chainId: number;\n\n constructor(contractAddress: string, chainId: number) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n }\n\n /**\n * Get pending earnings breakdown for the current user\n */\n async getPendingEarnings(): Promise<EarningsBreakdown> {\n // Placeholder - will call contract\n return {\n tips: BigInt(0),\n subscriptions: BigInt(0),\n nftSales: BigInt(0),\n royalties: BigInt(0),\n total: BigInt(0),\n };\n }\n\n /**\n * Get historical earnings for a time period\n */\n async getEarningsHistory(\n period: 'day' | 'week' | 'month' | 'all' = 'all'\n ): Promise<EarningsBreakdown[]> {\n // Placeholder - will query indexer\n return [];\n }\n\n /**\n * Claim all pending earnings\n */\n async claimEarnings(): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Claim specific amount of earnings\n */\n async claimPartialEarnings(amount: bigint): Promise<TxResult> {\n if (amount <= 0n) {\n throw new Error('Amount must be greater than 0');\n }\n\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Setup revenue split with collaborators\n * Basis points must sum to 10000 (100%)\n */\n async setupRevenueSplit(splits: RevenueSplit[]): Promise<TxResult> {\n // Validate that basis points sum to 100%\n const totalBps = splits.reduce((sum, split) => sum + split.basisPoints, 0);\n if (totalBps !== 10000) {\n throw new Error('Revenue splits must sum to 100% (10000 basis points)');\n }\n\n // Validate each split\n for (const split of splits) {\n if (split.basisPoints <= 0) {\n throw new Error('Each split must have positive basis points');\n }\n if (!split.recipient || split.recipient.length === 0) {\n throw new Error('Each split must have a valid recipient address');\n }\n }\n\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Get current revenue split configuration\n */\n async getRevenueSplit(): Promise<RevenueSplit[]> {\n // Placeholder - will query contract\n return [];\n }\n\n /**\n * Remove revenue split (creator gets 100%)\n */\n async removeRevenueSplit(): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Convert earnings to stablecoin (USDT)\n */\n async convertToStable(token: string, amount: bigint): Promise<TxResult> {\n if (amount <= 0n) {\n throw new Error('Amount must be greater than 0');\n }\n\n // Placeholder - will use swap protocol\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/config/contracts.ts","../../src/protocols/NFTProtocol.ts","../../src/abi/ZubariMarket.json","../../src/protocols/MarketProtocol.ts","../../src/protocols/TipsProtocol.ts","../../src/protocols/SubscriptionProtocol.ts","../../src/protocols/PayoutsProtocol.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["// Contract addresses for Zubari ecosystem\nexport interface ContractAddresses {\n registry: string;\n nft: string;\n marketplace: string;\n tips: string;\n subscriptions: string;\n payouts: string;\n entryPoint: string;\n paymaster: string;\n accountFactory: string;\n usdc: string;\n usdt: string;\n weth: string;\n}\n\n// Placeholder addresses - will be updated after deployment\nconst ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';\n\nexport const ZUBARI_CONTRACTS: Record<'testnet' | 'mainnet', ContractAddresses> = {\n testnet: {\n // Ethereum Sepolia (11155111) - Deployed 2024-12-09\n registry: '0xEdDf443D48832f23D4A0bED4C4c5eF200B38A7d3',\n nft: '0xdc37e25650D685e4c38124aC314477Ea5f508a9e',\n marketplace: '0x48D0F3b6552A8CcDA7528db5aE8be004fCC3D3D9', // ZubariMarket deployed 2024-12-22\n tips: '0xFDc353edC63Cd3D4bba35bB43861369516a9Dc85',\n subscriptions: '0x8C05F8aD2F295fB7f3596043a7c37C98A5F7fAB8',\n payouts: '0x804Fe503936E8b8d3D5Dbb62AF4fB6Fe7265Fb2c',\n entryPoint: '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',\n paymaster: ZERO_ADDRESS, // Deploy with: npx hardhat run deploy/deploy.ts --network ethereum-sepolia\n accountFactory: ZERO_ADDRESS, // Not yet deployed\n usdc: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238', // USDC on Sepolia\n usdt: '0xaA8E23Fb1079EA71e0a56F48a2aA51851D8433D0', // USDT on Sepolia\n weth: '0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14',\n },\n mainnet: {\n // Ethereum Mainnet (1)\n registry: ZERO_ADDRESS,\n nft: ZERO_ADDRESS,\n marketplace: ZERO_ADDRESS,\n tips: ZERO_ADDRESS,\n subscriptions: ZERO_ADDRESS,\n payouts: ZERO_ADDRESS,\n entryPoint: '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789',\n paymaster: ZERO_ADDRESS,\n accountFactory: ZERO_ADDRESS,\n usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC on Ethereum\n usdt: '0xdAC17F958D2ee523a2206206994597C13D831ec7', // USDT on Ethereum\n weth: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',\n },\n};\n\n// Platform configuration\nexport const PLATFORM_CONFIG = {\n // Platform fee in basis points (300 = 3%)\n tipFeeBps: 300,\n // Maximum royalty in basis points (1000 = 10%)\n maxRoyaltyBps: 1000,\n // Default slippage tolerance for swaps (50 = 0.5%)\n defaultSlippageBps: 50,\n // Voucher validity in seconds (30 days)\n voucherValiditySecs: 30 * 24 * 60 * 60,\n // Swap deadline in seconds (30 minutes)\n swapDeadlineSecs: 30 * 60,\n} as const;\n\n// EIP-712 Domain for lazy minting\nexport const NFT_VOUCHER_DOMAIN = {\n name: 'ZubariNFT',\n version: '1',\n} as const;\n\nexport const NFT_VOUCHER_TYPES = {\n NFTVoucher: [\n { name: 'tokenId', type: 'bytes32' },\n { name: 'uri', type: 'string' },\n { name: 'creator', type: 'address' },\n { name: 'royaltyBps', type: 'uint256' },\n { name: 'deadline', type: 'uint256' },\n ],\n} as const;\n\nexport function getContractAddresses(network: 'testnet' | 'mainnet'): ContractAddresses {\n return ZUBARI_CONTRACTS[network];\n}\n","import type {\n NFTMetadata,\n LazyMintVoucher,\n NFT,\n ListingParams,\n TxResult,\n} from '../types';\nimport { PLATFORM_CONFIG, NFT_VOUCHER_DOMAIN, NFT_VOUCHER_TYPES } from '../config/contracts';\n\n/**\n * ZubariNFTProtocol - NFT creation and marketplace operations\n *\n * Handles lazy minting via EIP-712 signatures, NFT listing,\n * and marketplace operations on Ethereum network.\n */\nexport class ZubariNFTProtocol {\n private readonly contractAddress: string;\n private readonly _marketplaceAddress: string;\n private readonly chainId: number;\n\n constructor(\n contractAddress: string,\n marketplaceAddress: string,\n chainId: number\n ) {\n this.contractAddress = contractAddress;\n this._marketplaceAddress = marketplaceAddress;\n this.chainId = chainId;\n }\n\n /**\n * Create a lazy mint voucher for off-chain NFT creation\n * The voucher can be redeemed on-chain when purchased\n */\n async createLazyMintVoucher(\n metadata: NFTMetadata,\n creatorAddress: string,\n signer: { signTypedData: (domain: object, types: object, value: object) => Promise<string> }\n ): Promise<LazyMintVoucher> {\n // Validate royalty\n if (metadata.royaltyBps > PLATFORM_CONFIG.maxRoyaltyBps) {\n throw new Error(`Royalty cannot exceed ${PLATFORM_CONFIG.maxRoyaltyBps / 100}%`);\n }\n\n // Generate random tokenId\n const tokenId = this.generateTokenId();\n\n // Calculate deadline (30 days from now)\n const deadline = Math.floor(Date.now() / 1000) + PLATFORM_CONFIG.voucherValiditySecs;\n\n // Build voucher data\n const voucherData = {\n tokenId,\n uri: metadata.image, // Will be IPFS URI\n creator: creatorAddress,\n royaltyBps: metadata.royaltyBps,\n deadline,\n };\n\n // Create EIP-712 domain\n const domain = {\n ...NFT_VOUCHER_DOMAIN,\n chainId: this.chainId,\n verifyingContract: this.contractAddress,\n };\n\n // Sign the voucher\n const signature = await signer.signTypedData(domain, NFT_VOUCHER_TYPES, voucherData);\n\n return {\n ...voucherData,\n signature,\n };\n }\n\n /**\n * Redeem a lazy mint voucher to mint the NFT on-chain\n */\n async redeemVoucher(voucher: LazyMintVoucher, _buyerAddress: string): Promise<TxResult> {\n // Validate voucher deadline\n if (voucher.deadline < Math.floor(Date.now() / 1000)) {\n throw new Error('Voucher has expired');\n }\n\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * List an NFT for sale on the marketplace\n */\n async listForSale(_params: ListingParams): Promise<TxResult> {\n // Placeholder - will approve and list\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Buy an NFT from the marketplace\n */\n async buyNFT(_listingId: string, _price: bigint): Promise<TxResult> {\n // Placeholder - will call marketplace contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Transfer an NFT to another address\n */\n async transfer(_tokenId: string, _to: string): Promise<TxResult> {\n // Placeholder - will call NFT contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Get NFTs owned by an address\n */\n async getOwnedNFTs(_address: string): Promise<NFT[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Generate a random tokenId (32 bytes hex)\n */\n private generateTokenId(): string {\n const bytes = new Uint8Array(32);\n crypto.getRandomValues(bytes);\n return '0x' + Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n}\n","[\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_treasury\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"_platformFeeBps\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"constructor\"\n },\n {\n \"inputs\": [],\n \"name\": \"EnforcedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ExpectedPause\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InsufficientPayment\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidAddress\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidDuration\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidFee\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"InvalidPrice\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ListingExpired\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ListingNotActive\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotApproved\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotSeller\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"NotTokenOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"owner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableInvalidOwner\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnableUnauthorizedAccount\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"ReentrancyGuardReentrantCall\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"SafeERC20FailedOperation\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"TransferFailed\",\n \"type\": \"error\"\n },\n {\n \"inputs\": [],\n \"name\": \"UnsupportedPaymentToken\",\n \"type\": \"error\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"nftContract\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"price\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"paymentToken\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"expiresAt\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Listed\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ListingCancelled\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"newPrice\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"ListingUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"previousOwner\",\n \"type\": \"address\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"OwnershipTransferred\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Paused\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"bool\",\n \"name\": \"supported\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"PaymentTokenUpdated\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": true,\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": true,\n \"internalType\": \"address\",\n \"name\": \"buyer\",\n \"type\": \"address\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"price\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"royaltyAmount\",\n \"type\": \"uint256\"\n },\n {\n \"indexed\": false,\n \"internalType\": \"uint256\",\n \"name\": \"platformFee\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"Sale\",\n \"type\": \"event\"\n },\n {\n \"anonymous\": false,\n \"inputs\": [\n {\n \"indexed\": false,\n \"internalType\": \"address\",\n \"name\": \"account\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"Unpaused\",\n \"type\": \"event\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"buyItem\",\n \"outputs\": [],\n \"stateMutability\": \"payable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"cancelListing\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"getListing\",\n \"outputs\": [\n {\n \"components\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"nftContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"price\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"paymentToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"expiresAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isActive\",\n \"type\": \"bool\"\n }\n ],\n \"internalType\": \"struct ZubariMarket.Listing\",\n \"name\": \"\",\n \"type\": \"tuple\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"isListingValid\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"nftContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"price\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"paymentToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"duration\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"listItem\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"listingCounter\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"listings\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"nftContract\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"tokenId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"seller\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"price\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"address\",\n \"name\": \"paymentToken\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"expiresAt\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"isActive\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"owner\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"pause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"paused\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"platformFeeBps\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"renounceOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"_feeBps\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"setPlatformFee\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"token\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"bool\",\n \"name\": \"supported\",\n \"type\": \"bool\"\n }\n ],\n \"name\": \"setSupportedToken\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"_treasury\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"setTreasury\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"supportedTokens\",\n \"outputs\": [\n {\n \"internalType\": \"bool\",\n \"name\": \"\",\n \"type\": \"bool\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"tokenListings\",\n \"outputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"\",\n \"type\": \"uint256\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"newOwner\",\n \"type\": \"address\"\n }\n ],\n \"name\": \"transferOwnership\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"treasury\",\n \"outputs\": [\n {\n \"internalType\": \"address\",\n \"name\": \"\",\n \"type\": \"address\"\n }\n ],\n \"stateMutability\": \"view\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [],\n \"name\": \"unpause\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n },\n {\n \"inputs\": [\n {\n \"internalType\": \"uint256\",\n \"name\": \"listingId\",\n \"type\": \"uint256\"\n },\n {\n \"internalType\": \"uint256\",\n \"name\": \"newPrice\",\n \"type\": \"uint256\"\n }\n ],\n \"name\": \"updatePrice\",\n \"outputs\": [],\n \"stateMutability\": \"nonpayable\",\n \"type\": \"function\"\n }\n]\n","import type {\n ListingParams,\n Listing,\n BuyParams,\n TxResult,\n} from '../types';\nimport { PLATFORM_CONFIG } from '../config/contracts';\n\n// Import ABI\nimport ZubariMarketAbi from '../abi/ZubariMarket.json';\n\n/**\n * ZubariMarketProtocol - NFT Marketplace operations\n *\n * Handles NFT listings, purchases, and marketplace management\n * with support for ETH and ERC-20 payment tokens.\n */\nexport class ZubariMarketProtocol {\n private readonly contractAddress: string;\n private readonly chainId: number;\n private readonly abi = ZubariMarketAbi;\n\n constructor(contractAddress: string, chainId: number) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n }\n\n /**\n * Get the contract ABI\n */\n getAbi() {\n return this.abi;\n }\n\n /**\n * Get the contract address\n */\n getAddress(): string {\n return this.contractAddress;\n }\n\n /**\n * List an NFT for sale\n * @param params Listing parameters\n * @param signer Wallet signer with sendTransaction method\n */\n async listItem(\n params: ListingParams,\n signer: { sendTransaction: (tx: object) => Promise<{ hash: string }> }\n ): Promise<TxResult> {\n // Validate price\n if (params.price <= 0n) {\n throw new Error('Price must be greater than 0');\n }\n\n // Validate duration\n if (params.duration <= 0) {\n throw new Error('Duration must be greater than 0');\n }\n\n // Encode function data\n const iface = new (await import('ethers')).Interface(this.abi);\n const data = iface.encodeFunctionData('listItem', [\n params.nftContract,\n params.tokenId,\n params.price,\n params.paymentToken,\n params.duration,\n ]);\n\n const result = await signer.sendTransaction({\n to: this.contractAddress,\n value: 0n,\n data,\n });\n\n return {\n hash: result.hash,\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Buy an NFT from a listing\n * @param params Buy parameters\n * @param signer Wallet signer\n */\n async buyItem(\n params: BuyParams,\n signer: { sendTransaction: (tx: object) => Promise<{ hash: string }> }\n ): Promise<TxResult> {\n const iface = new (await import('ethers')).Interface(this.abi);\n const data = iface.encodeFunctionData('buyItem', [params.listingId]);\n\n // If paying with ETH (zero address), include value\n const isEthPayment = params.paymentToken === '0x0000000000000000000000000000000000000000';\n\n const result = await signer.sendTransaction({\n to: this.contractAddress,\n value: isEthPayment ? params.price : 0n,\n data,\n });\n\n return {\n hash: result.hash,\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Cancel a listing\n * @param listingId The listing ID to cancel\n * @param signer Wallet signer\n */\n async cancelListing(\n listingId: string,\n signer: { sendTransaction: (tx: object) => Promise<{ hash: string }> }\n ): Promise<TxResult> {\n const iface = new (await import('ethers')).Interface(this.abi);\n const data = iface.encodeFunctionData('cancelListing', [listingId]);\n\n const result = await signer.sendTransaction({\n to: this.contractAddress,\n value: 0n,\n data,\n });\n\n return {\n hash: result.hash,\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Update listing price\n * @param listingId The listing ID\n * @param newPrice New price\n * @param signer Wallet signer\n */\n async updatePrice(\n listingId: string,\n newPrice: bigint,\n signer: { sendTransaction: (tx: object) => Promise<{ hash: string }> }\n ): Promise<TxResult> {\n if (newPrice <= 0n) {\n throw new Error('Price must be greater than 0');\n }\n\n const iface = new (await import('ethers')).Interface(this.abi);\n const data = iface.encodeFunctionData('updatePrice', [listingId, newPrice]);\n\n const result = await signer.sendTransaction({\n to: this.contractAddress,\n value: 0n,\n data,\n });\n\n return {\n hash: result.hash,\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Get listing details\n * @param listingId The listing ID\n * @param provider JSON-RPC provider\n */\n async getListing(\n listingId: string,\n provider: { call: (tx: object) => Promise<string> }\n ): Promise<Listing | null> {\n const iface = new (await import('ethers')).Interface(this.abi);\n const data = iface.encodeFunctionData('getListing', [listingId]);\n\n try {\n const result = await provider.call({\n to: this.contractAddress,\n data,\n });\n\n const decoded = iface.decodeFunctionResult('getListing', result);\n const listing = decoded[0];\n\n return {\n listingId,\n nftContract: listing.nftContract,\n tokenId: listing.tokenId.toString(),\n seller: listing.seller,\n price: listing.price,\n paymentToken: listing.paymentToken,\n expiresAt: Number(listing.expiresAt),\n isActive: listing.isActive,\n };\n } catch {\n return null;\n }\n }\n\n /**\n * Check if a payment token is supported\n * @param token Token address\n * @param provider JSON-RPC provider\n */\n async isTokenSupported(\n token: string,\n provider: { call: (tx: object) => Promise<string> }\n ): Promise<boolean> {\n const iface = new (await import('ethers')).Interface(this.abi);\n const data = iface.encodeFunctionData('supportedTokens', [token]);\n\n try {\n const result = await provider.call({\n to: this.contractAddress,\n data,\n });\n\n const decoded = iface.decodeFunctionResult('supportedTokens', result);\n return decoded[0];\n } catch {\n return false;\n }\n }\n\n /**\n * Calculate platform fee for a given price\n * @param price The sale price\n */\n calculateFee(price: bigint): { fee: bigint; sellerAmount: bigint } {\n const fee = (price * BigInt(PLATFORM_CONFIG.tipFeeBps)) / 10000n;\n return {\n fee,\n sellerAmount: price - fee,\n };\n }\n}\n","import type { TipData, TipResult, TipStats, TxResult } from '../types';\nimport { PLATFORM_CONFIG } from '../config/contracts';\n\n/**\n * ZubariTipsProtocol - Micropayment tips for creators\n *\n * Handles ETH and ERC-20 token tips with platform fee distribution.\n * Supports gasless tips via ERC-4337 when enabled.\n */\nexport class ZubariTipsProtocol {\n private readonly contractAddress: string;\n private readonly chainId: number;\n private readonly gaslessEnabled: boolean;\n\n constructor(contractAddress: string, chainId: number, gaslessEnabled: boolean = false) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n this.gaslessEnabled = gaslessEnabled;\n }\n\n /**\n * Send a tip to a creator\n */\n async sendTip(tip: TipData): Promise<TipResult> {\n const { recipient, amount, token, message } = tip;\n\n // Calculate platform fee (3%)\n const platformFee = (amount * BigInt(PLATFORM_CONFIG.tipFeeBps)) / BigInt(10000);\n const creatorAmount = amount - platformFee;\n\n // Validate amount\n if (amount <= 0n) {\n throw new Error('Tip amount must be greater than 0');\n }\n\n // Placeholder - will call contract\n const txResult: TxResult = {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n\n return {\n txHash: txResult.hash,\n tipId: '', // Will be returned from contract event\n recipient,\n amount: creatorAmount,\n platformFee,\n timestamp: Math.floor(Date.now() / 1000),\n };\n }\n\n /**\n * Send tips to multiple creators in a single transaction\n */\n async sendBatchTips(tips: TipData[]): Promise<TipResult[]> {\n if (tips.length === 0) {\n throw new Error('At least one tip is required');\n }\n\n // Calculate total amount needed\n const totalAmount = tips.reduce((sum, tip) => sum + tip.amount, BigInt(0));\n\n // Placeholder - will call batch function\n return tips.map(tip => ({\n txHash: '',\n tipId: '',\n recipient: tip.recipient,\n amount: tip.amount - (tip.amount * BigInt(PLATFORM_CONFIG.tipFeeBps)) / BigInt(10000),\n platformFee: (tip.amount * BigInt(PLATFORM_CONFIG.tipFeeBps)) / BigInt(10000),\n timestamp: Math.floor(Date.now() / 1000),\n }));\n }\n\n /**\n * Get tips received by an address\n */\n async getTipsReceived(address: string): Promise<TipResult[]> {\n // Placeholder - will query indexer\n return [];\n }\n\n /**\n * Get tips sent by an address\n */\n async getTipsSent(address: string): Promise<TipResult[]> {\n // Placeholder - will query indexer\n return [];\n }\n\n /**\n * Get tip statistics for a creator\n */\n async getCreatorTipStats(creator: string): Promise<TipStats> {\n // Placeholder - will query indexer/contract\n return {\n totalReceived: BigInt(0),\n tipCount: 0,\n uniqueTippers: 0,\n };\n }\n\n /**\n * Get platform fee in basis points\n */\n getPlatformFeeBps(): number {\n return PLATFORM_CONFIG.tipFeeBps;\n }\n}\n","import type { SubscriptionPlan, Subscription, TxResult } from '../types';\n\n/**\n * ZubariSubscriptionProtocol - Recurring subscription payments\n *\n * Handles subscription plan creation, subscription management,\n * and verification of active subscriptions.\n */\nexport class ZubariSubscriptionProtocol {\n private readonly contractAddress: string;\n private readonly chainId: number;\n\n constructor(contractAddress: string, chainId: number) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n }\n\n /**\n * Create a new subscription plan\n */\n async createPlan(plan: SubscriptionPlan): Promise<string> {\n // Validate plan\n if (!plan.name || plan.name.length === 0) {\n throw new Error('Plan name is required');\n }\n if (plan.price <= 0n) {\n throw new Error('Plan price must be greater than 0');\n }\n if (plan.duration <= 0) {\n throw new Error('Plan duration must be greater than 0');\n }\n\n // Generate planId based on creator + name hash\n const planId = this.generatePlanId(plan.name);\n\n // Placeholder - will call contract\n return planId;\n }\n\n /**\n * Update an existing subscription plan\n */\n async updatePlan(planId: string, updates: Partial<SubscriptionPlan>): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Subscribe to a creator's plan\n */\n async subscribe(\n creator: string,\n planId: string,\n months: number = 1\n ): Promise<Subscription> {\n if (months <= 0) {\n throw new Error('Subscription duration must be at least 1 month');\n }\n\n const now = Math.floor(Date.now() / 1000);\n const durationSeconds = months * 30 * 24 * 60 * 60; // 30 days per month\n\n // Placeholder - will call contract\n return {\n subscriptionId: '',\n planId,\n creator,\n subscriber: '', // Current user address\n startTime: now,\n endTime: now + durationSeconds,\n autoRenew: false,\n status: 'active',\n };\n }\n\n /**\n * Cancel an active subscription\n */\n async cancel(subscriptionId: string): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Check if an address is subscribed to a creator\n */\n async isSubscribed(creator: string, subscriber?: string): Promise<boolean> {\n // Placeholder - will call contract view function\n return false;\n }\n\n /**\n * Get active subscriptions for a subscriber\n */\n async getActiveSubscriptions(subscriber?: string): Promise<Subscription[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Get all subscribers for a creator\n */\n async getSubscribers(creator: string): Promise<Subscription[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Get a specific plan by ID\n */\n async getPlan(planId: string): Promise<SubscriptionPlan | null> {\n // Placeholder - will query contract\n return null;\n }\n\n /**\n * Get all plans for a creator\n */\n async getCreatorPlans(creator: string): Promise<SubscriptionPlan[]> {\n // Placeholder - will query contract/indexer\n return [];\n }\n\n /**\n * Generate a unique plan ID\n */\n private generatePlanId(name: string): string {\n const bytes = new Uint8Array(16);\n crypto.getRandomValues(bytes);\n return '0x' + Array.from(bytes).map(b => b.toString(16).padStart(2, '0')).join('');\n }\n}\n","import type { EarningsBreakdown, RevenueSplit, TxResult } from '../types';\n\n/**\n * ZubariPayoutsProtocol - Creator earnings management\n *\n * Handles earnings tracking, claiming, revenue splits,\n * and conversion to stablecoins.\n */\nexport class ZubariPayoutsProtocol {\n private readonly contractAddress: string;\n private readonly chainId: number;\n\n constructor(contractAddress: string, chainId: number) {\n this.contractAddress = contractAddress;\n this.chainId = chainId;\n }\n\n /**\n * Get pending earnings breakdown for the current user\n */\n async getPendingEarnings(): Promise<EarningsBreakdown> {\n // Placeholder - will call contract\n return {\n tips: BigInt(0),\n subscriptions: BigInt(0),\n nftSales: BigInt(0),\n royalties: BigInt(0),\n total: BigInt(0),\n };\n }\n\n /**\n * Get historical earnings for a time period\n */\n async getEarningsHistory(\n period: 'day' | 'week' | 'month' | 'all' = 'all'\n ): Promise<EarningsBreakdown[]> {\n // Placeholder - will query indexer\n return [];\n }\n\n /**\n * Claim all pending earnings\n */\n async claimEarnings(): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Claim specific amount of earnings\n */\n async claimPartialEarnings(amount: bigint): Promise<TxResult> {\n if (amount <= 0n) {\n throw new Error('Amount must be greater than 0');\n }\n\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Setup revenue split with collaborators\n * Basis points must sum to 10000 (100%)\n */\n async setupRevenueSplit(splits: RevenueSplit[]): Promise<TxResult> {\n // Validate that basis points sum to 100%\n const totalBps = splits.reduce((sum, split) => sum + split.basisPoints, 0);\n if (totalBps !== 10000) {\n throw new Error('Revenue splits must sum to 100% (10000 basis points)');\n }\n\n // Validate each split\n for (const split of splits) {\n if (split.basisPoints <= 0) {\n throw new Error('Each split must have positive basis points');\n }\n if (!split.recipient || split.recipient.length === 0) {\n throw new Error('Each split must have a valid recipient address');\n }\n }\n\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Get current revenue split configuration\n */\n async getRevenueSplit(): Promise<RevenueSplit[]> {\n // Placeholder - will query contract\n return [];\n }\n\n /**\n * Remove revenue split (creator gets 100%)\n */\n async removeRevenueSplit(): Promise<TxResult> {\n // Placeholder - will call contract\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n\n /**\n * Convert earnings to stablecoin (USDT)\n */\n async convertToStable(token: string, amount: bigint): Promise<TxResult> {\n if (amount <= 0n) {\n throw new Error('Amount must be greater than 0');\n }\n\n // Placeholder - will use swap protocol\n return {\n hash: '',\n network: 'ethereum',\n status: 'pending',\n };\n }\n}\n"]}
|
package/dist/react/index.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { N as NetworkType } from '../index-
|
|
2
|
-
import { b as WalletManagerConfig, a as WalletState, C as ChainBalance, M as MultiChainAddresses, W as WalletManager } from '../WalletManager-
|
|
3
|
-
export { S as SUPPORTED_CHAINS } from '../WalletManager-
|
|
4
|
-
import '
|
|
5
|
-
import 'node_modules/viem/_types/utils/ccip';
|
|
1
|
+
import { N as NetworkType } from '../index-D9vwxETQ.mjs';
|
|
2
|
+
import { b as WalletManagerConfig, a as WalletState, C as ChainBalance, M as MultiChainAddresses, W as WalletManager } from '../WalletManager-B4Ag188W.mjs';
|
|
3
|
+
export { S as SUPPORTED_CHAINS } from '../WalletManager-B4Ag188W.mjs';
|
|
4
|
+
import 'abitype';
|
|
6
5
|
import 'viem';
|
|
7
6
|
import 'ethers';
|
|
8
7
|
import '../SecureStorage-jO783AhC.mjs';
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { N as NetworkType } from '../index-
|
|
2
|
-
import { b as WalletManagerConfig, a as WalletState, C as ChainBalance, M as MultiChainAddresses, W as WalletManager } from '../WalletManager-
|
|
3
|
-
export { S as SUPPORTED_CHAINS } from '../WalletManager-
|
|
4
|
-
import '
|
|
5
|
-
import 'node_modules/viem/_types/utils/ccip';
|
|
1
|
+
import { N as NetworkType } from '../index-D9vwxETQ.js';
|
|
2
|
+
import { b as WalletManagerConfig, a as WalletState, C as ChainBalance, M as MultiChainAddresses, W as WalletManager } from '../WalletManager-9bC646Ax.js';
|
|
3
|
+
export { S as SUPPORTED_CHAINS } from '../WalletManager-9bC646Ax.js';
|
|
4
|
+
import 'abitype';
|
|
6
5
|
import 'viem';
|
|
7
6
|
import 'ethers';
|
|
8
7
|
import '../SecureStorage-jO783AhC.js';
|
package/dist/react/index.js
CHANGED
|
@@ -5,11 +5,11 @@ var ethers = require('ethers');
|
|
|
5
5
|
var viem = require('viem');
|
|
6
6
|
var chains = require('viem/chains');
|
|
7
7
|
var bip39 = require('@scure/bip39');
|
|
8
|
-
var
|
|
8
|
+
var english_js = require('@scure/bip39/wordlists/english.js');
|
|
9
9
|
var bip32 = require('@scure/bip32');
|
|
10
10
|
var base = require('@scure/base');
|
|
11
|
-
var
|
|
12
|
-
var
|
|
11
|
+
var sha2_js = require('@noble/hashes/sha2.js');
|
|
12
|
+
var legacy_js = require('@noble/hashes/legacy.js');
|
|
13
13
|
|
|
14
14
|
// src/react/useWalletManager.ts
|
|
15
15
|
|
|
@@ -547,7 +547,7 @@ function deriveBitcoinAddress(seed, network = "testnet") {
|
|
|
547
547
|
if (!child.publicKey) {
|
|
548
548
|
throw new Error("Failed to derive public key");
|
|
549
549
|
}
|
|
550
|
-
const pubKeyHash =
|
|
550
|
+
const pubKeyHash = legacy_js.ripemd160(sha2_js.sha256(child.publicKey));
|
|
551
551
|
const witnessVersion = 0;
|
|
552
552
|
const words = base.bech32.toWords(pubKeyHash);
|
|
553
553
|
words.unshift(witnessVersion);
|
|
@@ -588,7 +588,7 @@ async function deriveTonAddress(seed) {
|
|
|
588
588
|
const publicKey = keypair.publicKey;
|
|
589
589
|
const workchain = 0;
|
|
590
590
|
const flags = 17;
|
|
591
|
-
const hash =
|
|
591
|
+
const hash = sha2_js.sha256(publicKey);
|
|
592
592
|
const addressData = new Uint8Array(34);
|
|
593
593
|
addressData[0] = flags;
|
|
594
594
|
addressData[1] = workchain;
|
|
@@ -625,7 +625,7 @@ function deriveTronAddress(seed) {
|
|
|
625
625
|
for (let i = 0; i < 20; i++) {
|
|
626
626
|
addressBytes[i + 1] = parseInt(ethAddressHex.slice(i * 2, i * 2 + 2), 16);
|
|
627
627
|
}
|
|
628
|
-
const tronBase58check = base.base58check(
|
|
628
|
+
const tronBase58check = base.base58check(sha2_js.sha256);
|
|
629
629
|
return tronBase58check.encode(addressBytes);
|
|
630
630
|
} catch (error) {
|
|
631
631
|
console.error("TRON address derivation failed:", error);
|
|
@@ -640,7 +640,7 @@ function deriveSparkAddress(seed, network = "testnet") {
|
|
|
640
640
|
if (!child.publicKey) {
|
|
641
641
|
throw new Error("Failed to derive public key");
|
|
642
642
|
}
|
|
643
|
-
const pubKeyHash =
|
|
643
|
+
const pubKeyHash = legacy_js.ripemd160(sha2_js.sha256(child.publicKey));
|
|
644
644
|
const witnessVersion = 0;
|
|
645
645
|
const words = base.bech32.toWords(pubKeyHash);
|
|
646
646
|
words.unshift(witnessVersion);
|
|
@@ -698,10 +698,10 @@ async function deriveAllAddresses(seed, network = "testnet") {
|
|
|
698
698
|
return addresses;
|
|
699
699
|
}
|
|
700
700
|
function isValidSeed(seed) {
|
|
701
|
-
return bip39.validateMnemonic(seed,
|
|
701
|
+
return bip39.validateMnemonic(seed, english_js.wordlist);
|
|
702
702
|
}
|
|
703
703
|
function generateSeedPhrase() {
|
|
704
|
-
return bip39.generateMnemonic(
|
|
704
|
+
return bip39.generateMnemonic(english_js.wordlist);
|
|
705
705
|
}
|
|
706
706
|
|
|
707
707
|
// src/services/ZubariWdkService.ts
|
|
@@ -1464,33 +1464,6 @@ var WalletManager = class _WalletManager {
|
|
|
1464
1464
|
console.warn("Failed to save addresses to storage:", error);
|
|
1465
1465
|
}
|
|
1466
1466
|
}
|
|
1467
|
-
/**
|
|
1468
|
-
* Normalize an address value - extract string from object format if needed
|
|
1469
|
-
* Handles both string addresses and object format {chain, address, path}
|
|
1470
|
-
*/
|
|
1471
|
-
normalizeAddress(value) {
|
|
1472
|
-
if (typeof value === "string") {
|
|
1473
|
-
return value;
|
|
1474
|
-
}
|
|
1475
|
-
if (value && typeof value === "object" && "address" in value) {
|
|
1476
|
-
const addr = value.address;
|
|
1477
|
-
return typeof addr === "string" ? addr : null;
|
|
1478
|
-
}
|
|
1479
|
-
return null;
|
|
1480
|
-
}
|
|
1481
|
-
/**
|
|
1482
|
-
* Normalize all addresses in an object - extract strings from object format
|
|
1483
|
-
*/
|
|
1484
|
-
normalizeAddresses(addresses) {
|
|
1485
|
-
const normalized = {};
|
|
1486
|
-
for (const [chain, value] of Object.entries(addresses)) {
|
|
1487
|
-
const addr = this.normalizeAddress(value);
|
|
1488
|
-
if (addr) {
|
|
1489
|
-
normalized[chain] = addr;
|
|
1490
|
-
}
|
|
1491
|
-
}
|
|
1492
|
-
return normalized;
|
|
1493
|
-
}
|
|
1494
1467
|
/**
|
|
1495
1468
|
* Load derived addresses from storage
|
|
1496
1469
|
*/
|
|
@@ -1498,11 +1471,8 @@ var WalletManager = class _WalletManager {
|
|
|
1498
1471
|
try {
|
|
1499
1472
|
const stored = await this.storage.getItem(STORAGE_KEYS.DERIVED_ADDRESSES);
|
|
1500
1473
|
if (stored) {
|
|
1501
|
-
const
|
|
1502
|
-
console.log("
|
|
1503
|
-
const addresses = this.normalizeAddresses(rawAddresses);
|
|
1504
|
-
console.log("[WalletManager] Normalized addresses:", addresses);
|
|
1505
|
-
await this.saveAddressesToStorage(addresses);
|
|
1474
|
+
const addresses = JSON.parse(stored);
|
|
1475
|
+
console.log("Loaded derived addresses from storage:", Object.keys(addresses));
|
|
1506
1476
|
return addresses;
|
|
1507
1477
|
}
|
|
1508
1478
|
} catch (error) {
|
|
@@ -1540,15 +1510,8 @@ var WalletManager = class _WalletManager {
|
|
|
1540
1510
|
* Returns cached address or null - use deriveAllAddressesAsync to derive addresses
|
|
1541
1511
|
*/
|
|
1542
1512
|
getAddressForChain(chain) {
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
console.log(`[WalletManager] getAddressForChain(${chain}) cached value:`, cachedValue, "type:", typeof cachedValue);
|
|
1546
|
-
const addr = this.normalizeAddress(cachedValue);
|
|
1547
|
-
console.log(`[WalletManager] getAddressForChain(${chain}) normalized:`, addr);
|
|
1548
|
-
if (addr) {
|
|
1549
|
-
this.derivedAddresses[chain] = addr;
|
|
1550
|
-
return addr;
|
|
1551
|
-
}
|
|
1513
|
+
if (this.derivedAddresses[chain]) {
|
|
1514
|
+
return this.derivedAddresses[chain];
|
|
1552
1515
|
}
|
|
1553
1516
|
if (chain === "ethereum" && this.currentSeed) {
|
|
1554
1517
|
this.derivedAddresses[chain] = _WalletManager.deriveAddressForChain(this.currentSeed, chain);
|
|
@@ -1560,7 +1523,7 @@ var WalletManager = class _WalletManager {
|
|
|
1560
1523
|
* Get all derived addresses
|
|
1561
1524
|
*/
|
|
1562
1525
|
getAllAddresses() {
|
|
1563
|
-
return this.
|
|
1526
|
+
return { ...this.derivedAddresses };
|
|
1564
1527
|
}
|
|
1565
1528
|
/**
|
|
1566
1529
|
* Set the selected chain
|
|
@@ -1602,7 +1565,6 @@ var WalletManager = class _WalletManager {
|
|
|
1602
1565
|
let balance = "0";
|
|
1603
1566
|
if (chain === "ethereum") {
|
|
1604
1567
|
const viemChain = this.config.network === "mainnet" ? chains.mainnet : chains.sepolia;
|
|
1605
|
-
console.log(`[WalletManager] Fetching ${chain} balance for ${address} using RPC: ${this.config.rpcUrl}`);
|
|
1606
1568
|
const client = viem.createPublicClient({
|
|
1607
1569
|
chain: viemChain,
|
|
1608
1570
|
transport: viem.http(this.config.rpcUrl, {
|
|
@@ -1617,9 +1579,8 @@ var WalletManager = class _WalletManager {
|
|
|
1617
1579
|
address
|
|
1618
1580
|
});
|
|
1619
1581
|
balance = viem.formatEther(rawBalance);
|
|
1620
|
-
console.log(`[WalletManager] ${chain} balance fetched: ${balance} (raw: ${rawBalance})`);
|
|
1621
1582
|
} catch (error) {
|
|
1622
|
-
console.
|
|
1583
|
+
console.warn(`Failed to fetch ${chain} balance:`, error);
|
|
1623
1584
|
}
|
|
1624
1585
|
} else if (chain === "bitcoin") {
|
|
1625
1586
|
const isMainnet = this.config.network === "mainnet" || address.startsWith("bc1") || address.startsWith("1") || address.startsWith("3");
|