story-research-zapwall/lib/sponsoringPaymentValidation.ts

30 lines
1.1 KiB
TypeScript

import { calculateSponsoringSplit, PLATFORM_COMMISSIONS } from './platformCommissions'
import { PLATFORM_BITCOIN_ADDRESS } from './platformConfig'
import type { SponsoringPaymentRequest, SponsoringPaymentResult } from './sponsoringPaymentTypes'
export function validateSponsoringAmount(amount: number): { valid: boolean; error?: string } {
if (amount !== PLATFORM_COMMISSIONS.sponsoring.total) {
return {
valid: false,
error: `Invalid sponsoring amount: ${amount} BTC. Expected ${PLATFORM_COMMISSIONS.sponsoring.total} BTC`,
}
}
return { valid: true }
}
export function buildErrorResult(error: string, request: SponsoringPaymentRequest): SponsoringPaymentResult {
return {
success: false,
error,
split: calculateSponsoringSplit(),
platformAddress: PLATFORM_BITCOIN_ADDRESS,
authorAddress: request.authorMainnetAddress,
}
}
export function isValidBitcoinAddress(address: string): boolean {
// Basic validation: starts with 1, 3, or bc1
const bitcoinAddressRegex = /^(1|3|bc1)[a-zA-Z0-9]{25,62}$/
return bitcoinAddressRegex.test(address)
}