@oma3/omatrust 0.1.0-alpha.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/errors.ts","../../src/reputation/encode.ts","../../src/shared/assert.ts","../../src/identity/caip.ts","../../src/identity/did.ts","../../src/reputation/internal.ts","../../src/reputation/submit.ts","../../src/reputation/delegated.ts","../../src/reputation/query.ts","../../src/reputation/proof/tx-encoded-value.ts","../../src/reputation/proof/did-json.ts","../../src/reputation/proof/eip712.ts","../../src/reputation/proof/dns-txt.ts","../../src/reputation/verify.ts","../../src/reputation/schema.ts","../../src/reputation/witness.ts","../../src/reputation/proof/tx-interaction.ts","../../src/reputation/proof/pop-eip712.ts","../../src/reputation/proof/pop-jws.ts","../../src/reputation/proof/x402.ts","../../src/reputation/proof/evidence-pointer.ts"],"names":["SchemaEncoder","keccak256","toUtf8Bytes","getAddress","isAddress","ZeroAddress","EAS","Signature","Contract","canonicalize","sha256","formatUnits","verifyTypedData","resolveTxt","hexlify","randomBytes"],"mappings":"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","file":"index.cjs","sourcesContent":["export class OmaTrustError extends Error {\n code: string;\n details?: unknown;\n\n constructor(code: string, message: string, details?: unknown) {\n super(message);\n this.name = \"OmaTrustError\";\n this.code = code;\n this.details = details;\n }\n}\n\nexport function toOmaTrustError(\n code: string,\n message: string,\n details?: unknown\n): OmaTrustError {\n return new OmaTrustError(code, message, details);\n}\n","import { SchemaEncoder } from \"@ethereum-attestation-service/eas-sdk\";\nimport { OmaTrustError } from \"../shared/errors\";\nimport type { Hex, SchemaField } from \"./types\";\n\nexport function normalizeSchema(schema: SchemaField[] | string): SchemaField[] {\n if (Array.isArray(schema)) {\n if (schema.length === 0) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"schema array cannot be empty\");\n }\n return schema;\n }\n\n if (typeof schema !== \"string\" || schema.trim().length === 0) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"schema must be a non-empty string or SchemaField[]\");\n }\n\n const fields = schema\n .split(\",\")\n .map((part) => part.trim())\n .filter((part) => part.length > 0)\n .map((part) => {\n const pieces = part.split(/\\s+/);\n if (pieces.length < 2) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"Invalid schema field\", { part });\n }\n const type = pieces[0];\n const name = pieces.slice(1).join(\" \");\n return { type, name };\n });\n\n if (fields.length === 0) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"No schema fields found\");\n }\n\n return fields;\n}\n\nexport function schemaToString(schema: SchemaField[] | string): string {\n if (typeof schema === \"string\") {\n return schema;\n }\n\n return schema.map((field) => `${field.type} ${field.name}`).join(\", \");\n}\n\nexport function encodeAttestationData(\n schema: SchemaField[] | string,\n data: Record<string, unknown>\n): Hex {\n if (!data || typeof data !== \"object\") {\n throw new OmaTrustError(\"INVALID_INPUT\", \"data must be an object\");\n }\n\n const fields = normalizeSchema(schema);\n const schemaString = schemaToString(fields);\n const encoder = new SchemaEncoder(schemaString);\n\n const encoded = encoder.encodeData(\n fields.map((field) => ({\n name: field.name,\n type: field.type,\n value: (data as Record<string, unknown>)[field.name]\n })) as never\n );\n\n return encoded as Hex;\n}\n\nexport function decodeAttestationData(\n schema: SchemaField[] | string,\n encodedData: Hex\n): Record<string, unknown> {\n if (typeof encodedData !== \"string\" || !encodedData.startsWith(\"0x\")) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"encodedData must be a hex string\");\n }\n\n const fields = normalizeSchema(schema);\n const schemaString = schemaToString(fields);\n const encoder = new SchemaEncoder(schemaString);\n const decoded = encoder.decodeData(encodedData);\n\n const result: Record<string, unknown> = {};\n for (const item of decoded as Array<{ name: string; value: unknown }>) {\n const value = item.value as { value?: unknown } | unknown;\n if (value && typeof value === \"object\" && \"value\" in (value as Record<string, unknown>)) {\n result[item.name] = (value as { value: unknown }).value;\n } else {\n result[item.name] = value;\n }\n }\n\n return result;\n}\n\nexport function extractExpirationTime(\n data: Record<string, unknown>\n): bigint | number | undefined {\n const keys = [\"expirationTime\", \"expiration\", \"validUntil\", \"expiresAt\", \"expires\"];\n for (const key of keys) {\n const value = data[key];\n if (value === undefined || value === null) {\n continue;\n }\n\n if (typeof value === \"bigint\") {\n return value;\n }\n if (typeof value === \"number\") {\n return value;\n }\n if (typeof value === \"string\" && /^\\d+$/.test(value)) {\n return BigInt(value);\n }\n }\n return undefined;\n}\n","import { OmaTrustError } from \"./errors\";\n\nexport function assertString(value: unknown, name: string, code = \"INVALID_INPUT\"): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new OmaTrustError(code, `${name} must be a non-empty string`, { value });\n }\n}\n\nexport function assertNumber(value: unknown, name: string, code = \"INVALID_INPUT\"): asserts value is number {\n if (typeof value !== \"number\" || Number.isNaN(value)) {\n throw new OmaTrustError(code, `${name} must be a valid number`, { value });\n }\n}\n\nexport function assertObject(value: unknown, name: string, code = \"INVALID_INPUT\"): asserts value is Record<string, unknown> {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new OmaTrustError(code, `${name} must be an object`, { value });\n }\n}\n\nexport function asError(err: unknown): Error {\n if (err instanceof Error) {\n return err;\n }\n return new Error(String(err));\n}\n","import { OmaTrustError } from \"../shared/errors\";\nimport { assertString } from \"../shared/assert\";\n\nexport type Caip10 = string;\n\nexport type ParsedCaip10 = {\n namespace: string;\n reference: string;\n address: string;\n};\n\nexport type ParsedCaip2 = {\n namespace: string;\n reference: string;\n};\n\nconst CAIP_10_REGEX = /^(?<namespace>[a-z0-9-]+):(?<reference>[a-zA-Z0-9-]+):(?<address>.+)$/;\nconst CAIP_2_REGEX = /^(?<namespace>[a-z0-9-]+):(?<reference>[a-zA-Z0-9-]+)$/;\n\nexport function parseCaip10(input: string): ParsedCaip10 {\n assertString(input, \"input\", \"INVALID_CAIP\");\n const trimmed = input.trim();\n const match = trimmed.match(CAIP_10_REGEX);\n if (!match?.groups) {\n throw new OmaTrustError(\"INVALID_CAIP\", \"Invalid CAIP-10 format\", { input });\n }\n\n const namespace = match.groups.namespace;\n const reference = match.groups.reference;\n const address = match.groups.address;\n\n if (!namespace || !reference || !address) {\n throw new OmaTrustError(\"INVALID_CAIP\", \"Invalid CAIP-10 components\", { input });\n }\n\n return { namespace, reference, address };\n}\n\nexport function buildCaip10(namespace: string, reference: string, address: string): Caip10 {\n assertString(namespace, \"namespace\", \"INVALID_CAIP\");\n assertString(reference, \"reference\", \"INVALID_CAIP\");\n assertString(address, \"address\", \"INVALID_CAIP\");\n return `${namespace}:${reference}:${address}`;\n}\n\nexport function normalizeCaip10(input: string): Caip10 {\n const parsed = parseCaip10(input);\n const namespace = parsed.namespace.toLowerCase();\n const reference = parsed.reference;\n\n let address = parsed.address;\n if (namespace === \"eip155\") {\n address = address.toLowerCase();\n }\n\n return buildCaip10(namespace, reference, address);\n}\n\nexport function buildCaip2(namespace: string, reference: string): string {\n assertString(namespace, \"namespace\", \"INVALID_CAIP\");\n assertString(reference, \"reference\", \"INVALID_CAIP\");\n return `${namespace}:${reference}`;\n}\n\nexport function parseCaip2(caip2: string): ParsedCaip2 {\n assertString(caip2, \"caip2\", \"INVALID_CAIP\");\n const trimmed = caip2.trim();\n const match = trimmed.match(CAIP_2_REGEX);\n if (!match?.groups) {\n throw new OmaTrustError(\"INVALID_CAIP\", \"Invalid CAIP-2 format\", { caip2 });\n }\n\n const namespace = match.groups.namespace;\n const reference = match.groups.reference;\n if (!namespace || !reference) {\n throw new OmaTrustError(\"INVALID_CAIP\", \"Invalid CAIP-2 components\", { caip2 });\n }\n\n return { namespace, reference };\n}\n","import { getAddress, isAddress, keccak256, toUtf8Bytes } from \"ethers\";\nimport { OmaTrustError } from \"../shared/errors\";\nimport { assertString } from \"../shared/assert\";\nimport { parseCaip10 } from \"./caip\";\n\nexport type Hex = `0x${string}`;\nexport type Did = string;\n\nconst DID_REGEX = /^did:[a-z0-9]+:.+$/i;\n\nexport function isValidDid(did: string): boolean {\n return DID_REGEX.test(did);\n}\n\nexport function extractDidMethod(did: Did): string | null {\n const match = did.match(/^did:([a-z0-9]+):/i);\n return match ? match[1] : null;\n}\n\nexport function extractDidIdentifier(did: Did): string | null {\n const match = did.match(/^did:[a-z0-9]+:(.+)$/i);\n return match ? match[1] : null;\n}\n\nexport function normalizeDomain(domain: string): string {\n assertString(domain, \"domain\", \"INVALID_DID\");\n return domain.trim().toLowerCase().replace(/\\.$/, \"\");\n}\n\nexport function normalizeDidWeb(input: string): Did {\n assertString(input, \"input\", \"INVALID_DID\");\n const trimmed = input.trim();\n\n if (trimmed.startsWith(\"did:\") && !trimmed.startsWith(\"did:web:\")) {\n throw new OmaTrustError(\"INVALID_DID\", \"Expected did:web DID\", { input });\n }\n\n const identifier = trimmed.startsWith(\"did:web:\")\n ? trimmed.slice(\"did:web:\".length)\n : trimmed;\n\n const [host, ...pathParts] = identifier.split(\"/\");\n if (!host) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid did:web identifier\", { input });\n }\n\n const normalizedHost = normalizeDomain(host);\n const path = pathParts.length > 0 ? `/${pathParts.join(\"/\")}` : \"\";\n return `did:web:${normalizedHost}${path}`;\n}\n\nexport function normalizeDidPkh(input: string): Did {\n assertString(input, \"input\", \"INVALID_DID\");\n const trimmed = input.trim();\n if (!trimmed.startsWith(\"did:pkh:\")) {\n throw new OmaTrustError(\"INVALID_DID\", \"Expected did:pkh DID\", { input });\n }\n\n const parts = trimmed.split(\":\");\n if (parts.length !== 5) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid did:pkh format\", { input });\n }\n\n const [, , namespace, chainId, address] = parts;\n if (!namespace || !chainId || !address) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid did:pkh components\", { input });\n }\n\n return `did:pkh:${namespace.toLowerCase()}:${chainId}:${address.toLowerCase()}`;\n}\n\nexport function normalizeDidHandle(input: string): Did {\n assertString(input, \"input\", \"INVALID_DID\");\n const trimmed = input.trim();\n if (!trimmed.startsWith(\"did:handle:\")) {\n throw new OmaTrustError(\"INVALID_DID\", \"Expected did:handle DID\", { input });\n }\n\n const parts = trimmed.split(\":\");\n if (parts.length !== 4) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid did:handle format\", { input });\n }\n\n const [, , platform, username] = parts;\n if (!platform || !username) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid did:handle components\", { input });\n }\n\n return `did:handle:${platform.toLowerCase()}:${username}`;\n}\n\nexport function normalizeDidKey(input: string): Did {\n assertString(input, \"input\", \"INVALID_DID\");\n const trimmed = input.trim();\n if (!trimmed.startsWith(\"did:key:\")) {\n throw new OmaTrustError(\"INVALID_DID\", \"Expected did:key DID\", { input });\n }\n\n return trimmed;\n}\n\nexport function normalizeDid(input: string): Did {\n assertString(input, \"input\", \"INVALID_DID\");\n const trimmed = input.trim();\n\n if (!trimmed.startsWith(\"did:\")) {\n return normalizeDidWeb(trimmed);\n }\n\n if (!isValidDid(trimmed)) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid DID format\", { input });\n }\n\n const method = extractDidMethod(trimmed);\n switch (method) {\n case \"web\":\n return normalizeDidWeb(trimmed);\n case \"pkh\":\n return normalizeDidPkh(trimmed);\n case \"handle\":\n return normalizeDidHandle(trimmed);\n case \"key\":\n return normalizeDidKey(trimmed);\n default:\n return trimmed;\n }\n}\n\nexport function computeDidHash(did: Did): Hex {\n const normalized = normalizeDid(did);\n return keccak256(toUtf8Bytes(normalized)) as Hex;\n}\n\nexport function computeDidAddress(didHash: Hex): Hex {\n assertString(didHash, \"didHash\", \"INVALID_DID\");\n if (!/^0x[0-9a-fA-F]{64}$/.test(didHash)) {\n throw new OmaTrustError(\"INVALID_DID\", \"didHash must be 32-byte hex\", { didHash });\n }\n\n const truncated = `0x${didHash.slice(-40)}`;\n return getAddress(truncated) as Hex;\n}\n\nexport function didToAddress(did: Did): Hex {\n return computeDidAddress(computeDidHash(did));\n}\n\nexport function validateDidAddress(did: Did, address: Hex): boolean {\n try {\n return didToAddress(did).toLowerCase() === String(address).toLowerCase();\n } catch {\n return false;\n }\n}\n\nexport function buildDidWeb(domain: string): Did {\n return `did:web:${normalizeDomain(domain)}`;\n}\n\nexport function buildDidPkh(\n namespace: string,\n chainId: string | number,\n address: string\n): Did {\n assertString(namespace, \"namespace\", \"INVALID_DID\");\n assertString(address, \"address\", \"INVALID_DID\");\n if (chainId === \"\" || chainId === null || chainId === undefined) {\n throw new OmaTrustError(\"INVALID_DID\", \"chainId is required\", { chainId });\n }\n return `did:pkh:${namespace.toLowerCase()}:${chainId}:${address.toLowerCase()}`;\n}\n\nexport function buildEvmDidPkh(chainId: string | number, address: string): Did {\n return buildDidPkh(\"eip155\", chainId, address);\n}\n\nexport function buildDidPkhFromCaip10(caip10: string): Did {\n const parsed = parseCaip10(caip10);\n return buildDidPkh(parsed.namespace, parsed.reference, parsed.address);\n}\n\nfunction parseDidPkh(did: Did): { namespace: string; chainId: string; address: string } | null {\n if (!did.startsWith(\"did:pkh:\")) {\n return null;\n }\n\n const parts = did.split(\":\");\n if (parts.length !== 5) {\n return null;\n }\n\n const [, , namespace, chainId, address] = parts;\n if (!namespace || !chainId || !address) {\n return null;\n }\n\n return { namespace, chainId, address };\n}\n\nexport function getChainIdFromDidPkh(did: Did): string | null {\n return parseDidPkh(did)?.chainId ?? null;\n}\n\nexport function getAddressFromDidPkh(did: Did): string | null {\n return parseDidPkh(did)?.address ?? null;\n}\n\nexport function getNamespaceFromDidPkh(did: Did): string | null {\n return parseDidPkh(did)?.namespace ?? null;\n}\n\nexport function isEvmDidPkh(did: Did): boolean {\n return getNamespaceFromDidPkh(did) === \"eip155\";\n}\n\nexport function getDomainFromDidWeb(did: Did): string | null {\n if (!did.startsWith(\"did:web:\")) {\n return null;\n }\n\n const identifier = did.slice(\"did:web:\".length);\n const [domain] = identifier.split(\"/\");\n return domain || null;\n}\n\nexport function extractAddressFromDid(identifier: string): string {\n assertString(identifier, \"identifier\", \"INVALID_DID\");\n\n if (identifier.startsWith(\"did:pkh:\")) {\n const pkh = parseDidPkh(normalizeDidPkh(identifier));\n if (!pkh) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid did:pkh identifier\", { identifier });\n }\n return pkh.address;\n }\n\n if (identifier.startsWith(\"did:ethr:\")) {\n const parts = identifier.replace(\"did:ethr:\", \"\").split(\":\");\n const address = parts.length === 1 ? parts[0] : parts[1];\n if (!address || !isAddress(address)) {\n throw new OmaTrustError(\"INVALID_DID\", \"Invalid did:ethr identifier\", { identifier });\n }\n return getAddress(address);\n }\n\n if (identifier.match(/^[a-z0-9-]+:[a-zA-Z0-9-]+:0x[a-fA-F0-9]{40}$/)) {\n const parsed = parseCaip10(identifier);\n return parsed.address;\n }\n\n if (isAddress(identifier)) {\n return getAddress(identifier);\n }\n\n throw new OmaTrustError(\"INVALID_DID\", \"Unsupported identifier format\", { identifier });\n}\n","import { ZeroAddress, getAddress, isAddress } from \"ethers\";\nimport { computeDidAddress, computeDidHash, didToAddress } from \"../identity/did\";\nimport { OmaTrustError } from \"../shared/errors\";\nimport type { Hex, SchemaField } from \"./types\";\nimport { normalizeSchema } from \"./encode\";\n\nexport const ZERO_UID = \"0x0000000000000000000000000000000000000000000000000000000000000000\" as Hex;\n\nexport function toBigIntOrDefault(value: bigint | number | undefined, fallback: bigint): bigint {\n if (value === undefined || value === null) {\n return fallback;\n }\n return typeof value === \"bigint\" ? value : BigInt(Math.floor(value));\n}\n\nexport function normalizeHex32(value: string, field: string): Hex {\n const normalized = value.startsWith(\"0x\") ? value : `0x${value}`;\n if (!/^0x[0-9a-fA-F]{64}$/.test(normalized)) {\n throw new OmaTrustError(\"INVALID_INPUT\", `${field} must be a 32-byte hex string`, { value });\n }\n return normalized as Hex;\n}\n\nexport function withAutoSubjectDidHash(\n schema: SchemaField[] | string,\n data: Record<string, unknown>\n): Record<string, unknown> {\n const fields = normalizeSchema(schema);\n const hasSubjectDidHash = fields.some((field) => field.name === \"subjectDidHash\");\n if (!hasSubjectDidHash) {\n return { ...data };\n }\n\n const subject = data.subject;\n if (typeof subject === \"string\" && subject.startsWith(\"did:\")) {\n return {\n ...data,\n subjectDidHash: computeDidHash(subject)\n };\n }\n\n return { ...data };\n}\n\nexport function resolveRecipientAddress(data: Record<string, unknown>): string {\n const subject = data.subject;\n if (typeof subject === \"string\" && subject.startsWith(\"did:\")) {\n return didToAddress(subject);\n }\n\n const subjectDidHash = data.subjectDidHash;\n if (typeof subjectDidHash === \"string\" && /^0x[0-9a-fA-F]{64}$/.test(subjectDidHash)) {\n return computeDidAddress(subjectDidHash as Hex);\n }\n\n const recipient = data.recipient;\n if (typeof recipient === \"string\" && isAddress(recipient)) {\n return getAddress(recipient);\n }\n\n return ZeroAddress;\n}\n\nexport function parseProofsField(data: Record<string, unknown>): unknown[] {\n const proofs = data.proofs;\n if (!Array.isArray(proofs)) {\n return [];\n }\n\n return proofs.map((entry) => {\n if (typeof entry === \"string\") {\n try {\n return JSON.parse(entry);\n } catch {\n return entry;\n }\n }\n return entry;\n });\n}\n","import { EAS } from \"@ethereum-attestation-service/eas-sdk\";\nimport { ZeroAddress } from \"ethers\";\nimport { encodeAttestationData, extractExpirationTime } from \"./encode\";\nimport { withAutoSubjectDidHash, resolveRecipientAddress, toBigIntOrDefault, ZERO_UID } from \"./internal\";\nimport { OmaTrustError } from \"../shared/errors\";\nimport type { SubmitAttestationParams, SubmitAttestationResult, Hex } from \"./types\";\n\nexport async function submitAttestation(\n params: SubmitAttestationParams\n): Promise<SubmitAttestationResult> {\n if (!params || typeof params !== \"object\") {\n throw new OmaTrustError(\"INVALID_INPUT\", \"params must be provided\");\n }\n\n if (!params.signer) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"signer is required\");\n }\n\n const dataWithHash = withAutoSubjectDidHash(params.schema, params.data);\n const encodedData = encodeAttestationData(params.schema, dataWithHash);\n const expiration = toBigIntOrDefault(\n params.expirationTime ?? extractExpirationTime(dataWithHash),\n 0n\n );\n const recipient = resolveRecipientAddress(dataWithHash);\n\n const eas = new EAS(params.easContractAddress);\n eas.connect(params.signer as never);\n\n try {\n const tx = await eas.attest({\n schema: params.schemaUid,\n data: {\n recipient: recipient || ZeroAddress,\n expirationTime: expiration,\n revocable: params.revocable ?? true,\n refUID: params.refUid ?? ZERO_UID,\n data: encodedData,\n value: toBigIntOrDefault(params.value, 0n)\n }\n });\n\n const uid = (await tx.wait()) as Hex;\n const txAny = tx as unknown as { tx?: { hash?: string }; hash?: string; transaction?: { hash?: string } };\n const txHash = (txAny.tx?.hash ?? txAny.hash ?? txAny.transaction?.hash ?? ZERO_UID) as Hex;\n\n return {\n uid,\n txHash,\n receipt: txAny.tx\n };\n } catch (err) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Failed to submit attestation\", { err });\n }\n}\n","import { Signature } from \"ethers\";\nimport { encodeAttestationData, extractExpirationTime } from \"./encode\";\nimport { resolveRecipientAddress, toBigIntOrDefault, withAutoSubjectDidHash, ZERO_UID } from \"./internal\";\nimport { OmaTrustError } from \"../shared/errors\";\nimport type {\n Hex,\n PrepareDelegatedAttestationParams,\n PrepareDelegatedAttestationResult,\n SubmitDelegatedAttestationParams,\n SubmitDelegatedAttestationResult\n} from \"./types\";\n\nexport function buildDelegatedAttestationTypedData(\n params: PrepareDelegatedAttestationParams\n): {\n domain: Record<string, unknown>;\n types: Record<string, unknown>;\n message: Record<string, unknown>;\n} {\n const dataWithHash = withAutoSubjectDidHash(params.schema, params.data);\n const encodedData = encodeAttestationData(params.schema, dataWithHash);\n const recipient = resolveRecipientAddress(dataWithHash);\n const expiration = toBigIntOrDefault(\n params.expirationTime ?? extractExpirationTime(dataWithHash),\n 0n\n );\n\n return {\n domain: {\n name: \"EAS\",\n version: \"1.4.0\",\n chainId: params.chainId,\n verifyingContract: params.easContractAddress\n },\n types: {\n Attest: [\n { name: \"attester\", type: \"address\" },\n { name: \"schema\", type: \"bytes32\" },\n { name: \"recipient\", type: \"address\" },\n { name: \"expirationTime\", type: \"uint64\" },\n { name: \"revocable\", type: \"bool\" },\n { name: \"refUID\", type: \"bytes32\" },\n { name: \"data\", type: \"bytes\" },\n { name: \"value\", type: \"uint256\" },\n { name: \"nonce\", type: \"uint256\" },\n { name: \"deadline\", type: \"uint64\" }\n ]\n },\n message: {\n attester: params.attester,\n schema: params.schemaUid,\n recipient,\n expirationTime: expiration,\n revocable: params.revocable ?? true,\n refUID: params.refUid ?? ZERO_UID,\n data: encodedData,\n value: toBigIntOrDefault(params.value, 0n),\n nonce: toBigIntOrDefault(params.nonce, 0n),\n deadline: toBigIntOrDefault(params.deadline, BigInt(Math.floor(Date.now() / 1000) + 600))\n }\n };\n}\n\nexport function splitSignature(signature: Hex | string): { v: number; r: Hex; s: Hex } {\n try {\n const parsed = Signature.from(signature as string);\n return {\n v: parsed.v,\n r: parsed.r as Hex,\n s: parsed.s as Hex\n };\n } catch (err) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"Invalid signature\", { err });\n }\n}\n\nexport async function prepareDelegatedAttestation(\n params: PrepareDelegatedAttestationParams\n): Promise<PrepareDelegatedAttestationResult> {\n if (!params || typeof params !== \"object\") {\n throw new OmaTrustError(\"INVALID_INPUT\", \"params are required\");\n }\n\n const typedData = buildDelegatedAttestationTypedData(params);\n\n return {\n delegatedRequest: {\n schema: params.schemaUid,\n attester: params.attester,\n easContractAddress: params.easContractAddress,\n chainId: params.chainId,\n ...typedData.message\n },\n typedData\n };\n}\n\nexport async function submitDelegatedAttestation(\n params: SubmitDelegatedAttestationParams\n): Promise<SubmitDelegatedAttestationResult> {\n if (!params.relayUrl || typeof params.relayUrl !== \"string\") {\n throw new OmaTrustError(\"INVALID_INPUT\", \"relayUrl is required\");\n }\n\n let response: Response;\n try {\n const body = JSON.stringify(\n {\n prepared: params.prepared,\n signature: params.signature,\n attester: params.attester\n },\n (_key, value) => (typeof value === \"bigint\" ? value.toString() : value)\n );\n\n response = await fetch(params.relayUrl, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body\n });\n } catch (err) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Failed to submit delegated attestation\", { err });\n }\n\n let payload: Record<string, unknown>;\n try {\n payload = (await response.json()) as Record<string, unknown>;\n } catch {\n payload = {};\n }\n\n if (!response.ok) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Relay submission failed\", {\n status: response.status,\n payload\n });\n }\n\n const uid = ((payload.uid as string | undefined) ?? ZERO_UID) as Hex;\n const txHash = payload.txHash as Hex | undefined;\n const status = (payload.status as \"submitted\" | \"confirmed\" | undefined) ?? \"submitted\";\n\n return {\n uid,\n txHash,\n status\n };\n}\n","import { EAS } from \"@ethereum-attestation-service/eas-sdk\";\nimport { Contract } from \"ethers\";\nimport { didToAddress } from \"../identity/did\";\nimport { decodeAttestationData } from \"./encode\";\nimport { OmaTrustError } from \"../shared/errors\";\nimport type {\n AttestationQueryResult,\n GetAttestationParams,\n Hex,\n ListAttestationsParams,\n SchemaField\n} from \"./types\";\n\nconst EAS_EVENT_ABI = [\n \"event Attested(address indexed recipient, address indexed attester, bytes32 uid, bytes32 indexed schemaUID)\"\n];\n\nfunction parseAttestation(\n attestation: Record<string, unknown>,\n schema?: SchemaField[] | string\n): AttestationQueryResult {\n const rawData = (attestation.data as Hex | undefined) ?? (\"0x\" as Hex);\n const decoded = schema ? decodeAttestationData(schema, rawData) : {};\n const toBigIntSafe = (value: unknown): bigint => {\n if (typeof value === \"bigint\") {\n return value;\n }\n if (typeof value === \"number\") {\n return BigInt(value);\n }\n if (typeof value === \"string\" && value.length > 0) {\n return BigInt(value);\n }\n return 0n;\n };\n\n return {\n uid: attestation.uid as Hex,\n schema: attestation.schema as Hex,\n attester: attestation.attester as Hex,\n recipient: attestation.recipient as Hex,\n revocable: Boolean(attestation.revocable),\n revocationTime: toBigIntSafe(attestation.revocationTime),\n expirationTime: toBigIntSafe(attestation.expirationTime),\n time: toBigIntSafe(attestation.time),\n refUID: attestation.refUID as Hex,\n data: decoded,\n raw: schema ? undefined : rawData\n };\n}\n\nexport async function getAttestation(\n params: GetAttestationParams\n): Promise<AttestationQueryResult> {\n try {\n const eas = new EAS(params.easContractAddress);\n eas.connect(params.provider as never);\n const attestation = (await eas.getAttestation(params.uid)) as unknown as Record<string, unknown> | null;\n\n if (!attestation || !attestation.uid || String(attestation.uid) === \"0x\".padEnd(66, \"0\")) {\n throw new OmaTrustError(\"ATTESTATION_NOT_FOUND\", \"Attestation not found\", { uid: params.uid });\n }\n\n return parseAttestation(attestation, params.schema);\n } catch (err) {\n if (err instanceof OmaTrustError) {\n throw err;\n }\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Failed to read attestation\", { err });\n }\n}\n\nexport async function getAttestationsForDid(\n params: ListAttestationsParams\n): Promise<AttestationQueryResult[]> {\n const provider = params.provider as never;\n const contract = new Contract(params.easContractAddress, EAS_EVENT_ABI, provider);\n\n const toBlock = params.toBlock ?? (await (provider as { getBlockNumber: () => Promise<number> }).getBlockNumber());\n const fromBlock = params.fromBlock ?? Math.max(0, toBlock - 50_000);\n const filter = contract.filters.Attested(didToAddress(params.did));\n\n let events;\n try {\n events = await contract.queryFilter(filter, fromBlock, toBlock);\n } catch (err) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Failed to query attestation events\", { err });\n }\n\n const eas = new EAS(params.easContractAddress);\n eas.connect(provider);\n\n const schemaFilter = params.schemas?.map((schema) => schema.toLowerCase());\n const results: AttestationQueryResult[] = [];\n\n for (const event of events) {\n if (!((\"args\" in event) && Array.isArray(event.args))) {\n continue;\n }\n const args = event.args as unknown[];\n const uid = args?.[2] as Hex | undefined;\n const schemaUid = args?.[3] as Hex | undefined;\n\n if (!uid || !schemaUid) {\n continue;\n }\n\n if (schemaFilter && !schemaFilter.includes(schemaUid.toLowerCase())) {\n continue;\n }\n\n const attestation = (await eas.getAttestation(uid)) as unknown as Record<string, unknown> | null;\n if (!attestation || !attestation.uid) {\n continue;\n }\n\n results.push(parseAttestation(attestation));\n }\n\n results.sort((a, b) => Number(b.time - a.time));\n return results;\n}\n\nexport async function listAttestations(\n params: ListAttestationsParams\n): Promise<AttestationQueryResult[]> {\n const limit = params.limit ?? 20;\n if (limit <= 0) {\n return [];\n }\n\n const results = await getAttestationsForDid(params);\n return results.slice(0, limit);\n}\n\nexport type GetLatestAttestationsParams = {\n provider: unknown;\n easContractAddress: Hex;\n schemas?: Hex[];\n limit?: number;\n fromBlock?: number;\n};\n\nexport async function getLatestAttestations(\n params: GetLatestAttestationsParams\n): Promise<AttestationQueryResult[]> {\n const provider = params.provider as never;\n const contract = new Contract(params.easContractAddress, EAS_EVENT_ABI, provider);\n\n const currentBlock = await (provider as { getBlockNumber: () => Promise<number> }).getBlockNumber();\n const fromBlock = params.fromBlock ?? Math.max(0, currentBlock - 50_000);\n const events = await contract.queryFilter(contract.filters.Attested(), fromBlock, currentBlock);\n\n const eas = new EAS(params.easContractAddress);\n eas.connect(provider);\n\n const schemaFilter = params.schemas?.map((schema) => schema.toLowerCase());\n const results: AttestationQueryResult[] = [];\n\n for (const event of events) {\n if (!((\"args\" in event) && Array.isArray(event.args))) {\n continue;\n }\n const args = event.args as unknown[];\n const uid = args?.[2] as Hex | undefined;\n const schemaUid = args?.[3] as Hex | undefined;\n if (!uid || !schemaUid) {\n continue;\n }\n\n if (schemaFilter && !schemaFilter.includes(schemaUid.toLowerCase())) {\n continue;\n }\n\n const attestation = (await eas.getAttestation(uid)) as unknown as Record<string, unknown> | null;\n if (!attestation || !attestation.uid) {\n continue;\n }\n\n results.push(parseAttestation(attestation));\n }\n\n results.sort((a, b) => Number(b.time - a.time));\n return results.slice(0, params.limit ?? 20);\n}\n\nexport function deduplicateReviews(attestations: AttestationQueryResult[]): AttestationQueryResult[] {\n const seen = new Map<string, AttestationQueryResult>();\n\n for (const attestation of attestations) {\n const subject = String(attestation.data.subject ?? \"\");\n const version = String(attestation.data.version ?? \"\");\n const major = getMajorVersion(version);\n const key = `${attestation.attester.toLowerCase()}|${subject}|${major}`;\n\n if (!seen.has(key)) {\n seen.set(key, attestation);\n continue;\n }\n\n const current = seen.get(key)!;\n if (attestation.time > current.time) {\n seen.set(key, attestation);\n }\n }\n\n return [...seen.values()];\n}\n\nexport function calculateAverageUserReviewRating(attestations: AttestationQueryResult[]): number {\n const deduped = deduplicateReviews(attestations);\n const ratings = deduped\n .map((attestation) => attestation.data.ratingValue)\n .filter((value) => typeof value === \"number\" || typeof value === \"bigint\")\n .map((value) => Number(value));\n\n if (ratings.length === 0) {\n return 0;\n }\n\n const total = ratings.reduce((sum, value) => sum + value, 0);\n return total / ratings.length;\n}\n\nexport function getMajorVersion(version: string): number {\n const match = version.match(/^(\\d+)/);\n if (!match) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"Invalid semantic version\", { version });\n }\n return Number(match[1]);\n}\n","import canonicalize from \"canonicalize\";\nimport { formatUnits, keccak256, sha256, toUtf8Bytes } from \"ethers\";\nimport { buildEvmDidPkh, computeDidHash } from \"../../identity/did\";\nimport { OmaTrustError } from \"../../shared/errors\";\nimport type { ChainConstants, Hex, ProofPurpose, TxEncodedValueProof } from \"../types\";\n\ntype ChainConfig = {\n decimals: number;\n nativeSymbol: string;\n explorer: string;\n base: Record<ProofPurpose, bigint>;\n};\n\nconst CHAIN_CONFIGS: Record<number, ChainConfig> = {\n 1: {\n decimals: 18,\n nativeSymbol: \"ETH\",\n explorer: \"https://etherscan.io\",\n base: {\n \"shared-control\": 100000000000000n,\n \"commercial-tx\": 1000000000000n\n }\n },\n 10: {\n decimals: 18,\n nativeSymbol: \"ETH\",\n explorer: \"https://optimistic.etherscan.io\",\n base: {\n \"shared-control\": 100000000000000n,\n \"commercial-tx\": 1000000000000n\n }\n },\n 137: {\n decimals: 18,\n nativeSymbol: \"POL\",\n explorer: \"https://polygonscan.com\",\n base: {\n \"shared-control\": 100000000000000n,\n \"commercial-tx\": 1000000000000n\n }\n },\n 8453: {\n decimals: 18,\n nativeSymbol: \"ETH\",\n explorer: \"https://basescan.org\",\n base: {\n \"shared-control\": 100000000000000n,\n \"commercial-tx\": 1000000000000n\n }\n },\n 42161: {\n decimals: 18,\n nativeSymbol: \"ETH\",\n explorer: \"https://arbiscan.io\",\n base: {\n \"shared-control\": 100000000000000n,\n \"commercial-tx\": 1000000000000n\n }\n },\n 11155111: {\n decimals: 18,\n nativeSymbol: \"ETH\",\n explorer: \"https://sepolia.etherscan.io\",\n base: {\n \"shared-control\": 100000000000000n,\n \"commercial-tx\": 1000000000000n\n }\n },\n 6623: {\n decimals: 18,\n nativeSymbol: \"OMA\",\n explorer: \"https://explorer.chain.oma3.org\",\n base: {\n \"shared-control\": 10000000000000000n,\n \"commercial-tx\": 100000000000000n\n }\n },\n 66238: {\n decimals: 18,\n nativeSymbol: \"OMA\",\n explorer: \"https://explorer.testnet.chain.oma3.org\",\n base: {\n \"shared-control\": 10000000000000000n,\n \"commercial-tx\": 100000000000000n\n }\n }\n};\n\nconst AMOUNT_DOMAIN = \"OMATrust:Amount:v1\";\n\nfunction getConfig(chainId: number): ChainConfig {\n const config = CHAIN_CONFIGS[chainId];\n if (!config) {\n throw new OmaTrustError(\"UNSUPPORTED_CHAIN\", \"Chain is not supported\", {\n chainId,\n supported: getSupportedChainIds()\n });\n }\n return config;\n}\n\nexport function getSupportedChainIds(): number[] {\n return Object.keys(CHAIN_CONFIGS).map((id) => Number(id));\n}\n\nexport function isChainSupported(chainId: number): boolean {\n return chainId in CHAIN_CONFIGS;\n}\n\nexport function getChainConstants(chainId: number, purpose: ProofPurpose): ChainConstants {\n const config = getConfig(chainId);\n const base = config.base[purpose];\n const range = base / 10n;\n return {\n base,\n range,\n decimals: config.decimals,\n nativeSymbol: config.nativeSymbol\n };\n}\n\nexport function constructSeed(\n subjectDidHash: Hex,\n counterpartyDidHash: Hex,\n purpose: ProofPurpose\n): Uint8Array {\n const seed = {\n domain: AMOUNT_DOMAIN,\n subjectDidHash,\n counterpartyIdHash: counterpartyDidHash,\n proofPurpose: purpose\n };\n\n const canonical = canonicalize(seed);\n if (!canonical) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"Failed to canonicalize seed\");\n }\n\n return toUtf8Bytes(canonical);\n}\n\nexport function hashSeed(seedBytes: Uint8Array, chainId: number): Hex {\n if (!isChainSupported(chainId)) {\n throw new OmaTrustError(\"UNSUPPORTED_CHAIN\", \"Chain is not supported\", { chainId });\n }\n\n // OMATrust currently supports EVM chains in this SDK.\n if (chainId === 0) {\n return sha256(seedBytes) as Hex;\n }\n\n return keccak256(seedBytes) as Hex;\n}\n\nexport function calculateTransferAmount(\n subject: string,\n counterparty: string,\n chainId: number,\n purpose: ProofPurpose\n): bigint {\n const { base, range } = getChainConstants(chainId, purpose);\n const subjectDidHash = computeDidHash(subject);\n const counterpartyDidHash = computeDidHash(counterparty);\n const seed = constructSeed(subjectDidHash, counterpartyDidHash, purpose);\n const hashed = hashSeed(seed, chainId);\n const offset = BigInt(hashed) % range;\n return base + offset;\n}\n\nexport function calculateTransferAmountFromAddresses(\n subjectAddress: string,\n counterpartyAddress: string,\n chainId: number,\n purpose: ProofPurpose\n): bigint {\n return calculateTransferAmount(\n buildEvmDidPkh(chainId, subjectAddress),\n buildEvmDidPkh(chainId, counterpartyAddress),\n chainId,\n purpose\n );\n}\n\nexport function createTxEncodedValueProof(\n chainId: number,\n txHash: Hex,\n purpose: ProofPurpose\n): TxEncodedValueProof {\n if (!/^0x[0-9a-fA-F]{64}$/.test(txHash)) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"txHash must be a 32-byte hex string\", { txHash });\n }\n\n return {\n proofType: \"tx-encoded-value\",\n proofPurpose: purpose,\n proofObject: {\n chainId: `eip155:${chainId}`,\n txHash\n },\n version: 1,\n issuedAt: Math.floor(Date.now() / 1000)\n };\n}\n\nexport function formatTransferAmount(amount: bigint | number, chainId: number): string {\n const config = getConfig(chainId);\n const normalized = typeof amount === \"number\" ? BigInt(Math.floor(amount)) : amount;\n return `${formatUnits(normalized, config.decimals)} ${config.nativeSymbol}`;\n}\n\nexport function getExplorerTxUrl(chainId: number, txHash: Hex): string {\n return `${getConfig(chainId).explorer}/tx/${txHash}`;\n}\n\nexport function getExplorerAddressUrl(chainId: number, address: string): string {\n return `${getConfig(chainId).explorer}/address/${address}`;\n}\n","import { getAddress, isAddress } from \"ethers\";\nimport { extractAddressFromDid } from \"../../identity/did\";\nimport type { Did } from \"../types\";\nimport { OmaTrustError } from \"../../shared/errors\";\n\nexport async function fetchDidDocument(\n domain: string\n): Promise<Record<string, unknown>> {\n const normalized = domain.toLowerCase().replace(/\\.$/, \"\");\n const url = `https://${normalized}/.well-known/did.json`;\n\n let response: Response;\n try {\n response = await fetch(url, { headers: { Accept: \"application/json\" } });\n } catch (err) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Failed to fetch DID document\", { domain, err });\n }\n\n if (!response.ok) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"DID document fetch failed\", {\n domain,\n status: response.status\n });\n }\n\n const body = (await response.json()) as Record<string, unknown>;\n return body;\n}\n\nexport function extractAddressesFromDidDocument(didDocument: Record<string, unknown>): string[] {\n const methods = didDocument.verificationMethod;\n if (!Array.isArray(methods)) {\n return [];\n }\n\n const addresses = new Set<string>();\n\n for (const method of methods as Array<Record<string, unknown>>) {\n const blockchainAccountId = method.blockchainAccountId;\n if (typeof blockchainAccountId === \"string\") {\n try {\n addresses.add(getAddress(extractAddressFromDid(blockchainAccountId)));\n } catch {\n // ignore\n }\n }\n\n const publicKeyHex = method.publicKeyHex;\n if (typeof publicKeyHex === \"string\") {\n const prefixed = publicKeyHex.startsWith(\"0x\") ? publicKeyHex : `0x${publicKeyHex}`;\n if (isAddress(prefixed)) {\n addresses.add(getAddress(prefixed));\n }\n }\n }\n\n return [...addresses];\n}\n\nexport function verifyDidDocumentControllerDid(\n didDocument: Record<string, unknown>,\n expectedControllerDid: Did\n): { valid: boolean; reason?: string } {\n let expectedAddress: string;\n try {\n expectedAddress = getAddress(extractAddressFromDid(expectedControllerDid));\n } catch {\n return { valid: false, reason: \"Expected controller DID does not resolve to an EVM address\" };\n }\n\n const addresses = extractAddressesFromDidDocument(didDocument);\n if (addresses.some((address) => address.toLowerCase() === expectedAddress.toLowerCase())) {\n return { valid: true };\n }\n\n return {\n valid: false,\n reason: `No matching address found in DID document (expected ${expectedAddress})`\n };\n}\n","import { verifyTypedData } from \"ethers\";\nimport { OmaTrustError } from \"../../shared/errors\";\nimport type { Hex } from \"../types\";\n\nexport function buildEip712Domain(\n name: string,\n version: string,\n chainId: number,\n verifyingContract: Hex\n): { name: string; version: string; chainId: number; verifyingContract: Hex } {\n return { name, version, chainId, verifyingContract };\n}\n\nexport function getOmaTrustProofEip712Types(): {\n primaryType: string;\n types: Record<string, Array<{ name: string; type: string }>>;\n} {\n return {\n primaryType: \"OmaTrustProof\",\n types: {\n OmaTrustProof: [\n { name: \"signer\", type: \"address\" },\n { name: \"authorizedEntity\", type: \"string\" },\n { name: \"signingPurpose\", type: \"string\" },\n { name: \"creationTimestamp\", type: \"uint256\" },\n { name: \"expirationTimestamp\", type: \"uint256\" },\n { name: \"randomValue\", type: \"bytes32\" },\n { name: \"statement\", type: \"string\" }\n ]\n }\n };\n}\n\nexport function verifyEip712Signature(\n typedData: {\n domain: Record<string, unknown>;\n types: Record<string, unknown>;\n message: Record<string, unknown>;\n },\n signature: Hex | string\n): { valid: boolean; signer?: string } {\n try {\n const signer = verifyTypedData(\n typedData.domain,\n typedData.types as Record<string, Array<{ name: string; type: string }>>,\n typedData.message,\n signature\n );\n\n return { valid: true, signer };\n } catch (err) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"Failed to verify EIP-712 signature\", { err });\n }\n}\n","import { resolveTxt } from \"node:dns/promises\";\nimport { normalizeDid } from \"../../identity/did\";\nimport { OmaTrustError } from \"../../shared/errors\";\nimport type { Did } from \"../types\";\n\nexport function parseDnsTxtRecord(\n record: string\n): { version?: string; controller?: Did; [key: string]: string | undefined } {\n if (!record || typeof record !== \"string\") {\n throw new OmaTrustError(\"INVALID_INPUT\", \"record must be a non-empty string\", { record });\n }\n\n const entries = record\n .split(/[;\\s]+/)\n .map((entry) => entry.trim())\n .filter(Boolean);\n\n const parsed: Record<string, string | undefined> = {};\n for (const entry of entries) {\n const [key, ...valueParts] = entry.split(\"=\");\n if (!key) {\n continue;\n }\n const value = valueParts.join(\"=\");\n if (!value) {\n continue;\n }\n parsed[key.trim()] = value.trim();\n }\n\n return {\n version: parsed.v,\n controller: parsed.controller,\n ...parsed\n };\n}\n\nexport function buildDnsTxtRecord(controllerDid: Did): string {\n const normalized = normalizeDid(controllerDid);\n return `v=1;controller=${normalized}`;\n}\n\nexport async function verifyDnsTxtControllerDid(\n domain: string,\n expectedControllerDid: Did\n): Promise<{ valid: boolean; record?: string; reason?: string }> {\n if (!domain || typeof domain !== \"string\") {\n throw new OmaTrustError(\"INVALID_INPUT\", \"domain must be a non-empty string\", { domain });\n }\n\n const expected = normalizeDid(expectedControllerDid);\n const host = `_omatrust.${domain.toLowerCase().replace(/\\.$/, \"\")}`;\n\n let records: string[][];\n try {\n records = await resolveTxt(host);\n } catch (err) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Failed to resolve DNS TXT records\", { domain, err });\n }\n\n for (const recordParts of records) {\n const record = recordParts.join(\"\");\n const parsed = parseDnsTxtRecord(record);\n if (parsed.version === \"1\" && parsed.controller && normalizeDid(parsed.controller) === expected) {\n return { valid: true, record };\n }\n }\n\n return { valid: false, reason: \"No TXT record matched expected controller DID\" };\n}\n","import { getAddress } from \"ethers\";\nimport { extractAddressFromDid } from \"../identity/did\";\nimport { OmaTrustError } from \"../shared/errors\";\nimport {\n calculateTransferAmount,\n} from \"./proof/tx-encoded-value\";\nimport { verifyDidDocumentControllerDid } from \"./proof/did-json\";\nimport { verifyEip712Signature } from \"./proof/eip712\";\nimport { parseDnsTxtRecord } from \"./proof/dns-txt\";\nimport type {\n AttestationQueryResult,\n ProofPurpose,\n ProofWrapper,\n VerifyAttestationParams,\n VerifyAttestationResult,\n VerifyProofParams,\n VerifyProofResult\n} from \"./types\";\n\nfunction parseChainId(input: unknown): number {\n if (typeof input === \"number\") {\n return input;\n }\n\n if (typeof input === \"string\") {\n if (input.includes(\":\")) {\n const [, chainId] = input.split(\":\");\n return Number(chainId);\n }\n return Number(input);\n }\n\n return NaN;\n}\n\nfunction parseProofs(attestation: AttestationQueryResult): ProofWrapper[] {\n const rawProofs = attestation.data.proofs;\n if (!Array.isArray(rawProofs)) {\n return [];\n }\n\n return rawProofs\n .map((entry) => {\n if (typeof entry === \"string\") {\n try {\n return JSON.parse(entry) as ProofWrapper;\n } catch {\n return null;\n }\n }\n if (entry && typeof entry === \"object\") {\n return entry as ProofWrapper;\n }\n return null;\n })\n .filter((proof): proof is ProofWrapper => Boolean(proof?.proofType));\n}\n\nfunction getProofPurpose(proof: ProofWrapper): ProofPurpose {\n if (proof.proofPurpose === \"commercial-tx\") {\n return \"commercial-tx\";\n }\n return \"shared-control\";\n}\n\nfunction decodeJwtPayload(compactJws: string): Record<string, unknown> {\n const parts = compactJws.split(\".\");\n if (parts.length !== 3) {\n throw new OmaTrustError(\"PROOF_VERIFICATION_FAILED\", \"Invalid compact JWS format\");\n }\n const payloadB64 = parts[1].replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = payloadB64.padEnd(payloadB64.length + ((4 - (payloadB64.length % 4)) % 4), \"=\");\n let json: string;\n if (typeof atob === \"function\") {\n json = decodeURIComponent(\n Array.from(atob(padded))\n .map((char) => `%${char.charCodeAt(0).toString(16).padStart(2, \"0\")}`)\n .join(\"\")\n );\n } else {\n json = Buffer.from(padded, \"base64\").toString(\"utf8\");\n }\n return JSON.parse(json) as Record<string, unknown>;\n}\n\nexport async function verifyProof(params: VerifyProofParams): Promise<VerifyProofResult> {\n const { proof, provider, expectedSubject, expectedController } = params;\n\n try {\n switch (proof.proofType) {\n case \"tx-encoded-value\": {\n if (!provider) {\n return { valid: false, proofType: proof.proofType, reason: \"Provider is required\" };\n }\n if (!expectedSubject || !expectedController) {\n return {\n valid: false,\n proofType: proof.proofType,\n reason: \"expectedSubject and expectedController are required\"\n };\n }\n\n const proofObject = proof.proofObject as { chainId: string; txHash: string };\n const chainId = parseChainId(proofObject.chainId);\n const tx = await (provider as { getTransaction: (hash: string) => Promise<any> }).getTransaction(\n proofObject.txHash\n );\n if (!tx) {\n return { valid: false, proofType: proof.proofType, reason: \"Transaction not found\" };\n }\n\n const expectedAmount = calculateTransferAmount(\n expectedSubject,\n expectedController,\n chainId,\n getProofPurpose(proof)\n );\n\n const subjectAddress = getAddress(extractAddressFromDid(expectedSubject));\n const controllerAddress = getAddress(extractAddressFromDid(expectedController));\n\n if (tx.from && getAddress(tx.from) !== subjectAddress) {\n return { valid: false, proofType: proof.proofType, reason: \"Transaction sender mismatch\" };\n }\n\n if (tx.to && getAddress(tx.to) !== controllerAddress) {\n return { valid: false, proofType: proof.proofType, reason: \"Transaction recipient mismatch\" };\n }\n\n if (BigInt(tx.value) !== expectedAmount) {\n return { valid: false, proofType: proof.proofType, reason: \"Transaction amount mismatch\" };\n }\n\n return { valid: true, proofType: proof.proofType };\n }\n\n case \"tx-interaction\": {\n if (!provider) {\n return { valid: false, proofType: proof.proofType, reason: \"Provider is required\" };\n }\n const proofObject = proof.proofObject as { txHash: string };\n const tx = await (provider as { getTransaction: (hash: string) => Promise<any> }).getTransaction(\n proofObject.txHash\n );\n if (!tx) {\n return { valid: false, proofType: proof.proofType, reason: \"Transaction not found\" };\n }\n\n if (!tx.to) {\n return { valid: false, proofType: proof.proofType, reason: \"Transaction target missing\" };\n }\n\n return { valid: true, proofType: proof.proofType };\n }\n\n case \"pop-eip712\": {\n const object = proof.proofObject as {\n domain: Record<string, unknown>;\n message: Record<string, unknown>;\n signature: string;\n };\n\n const typedData = {\n domain: object.domain,\n types: {\n OmaTrustProof: [\n { name: \"signer\", type: \"address\" },\n { name: \"authorizedEntity\", type: \"string\" },\n { name: \"signingPurpose\", type: \"string\" },\n { name: \"creationTimestamp\", type: \"uint256\" },\n { name: \"expirationTimestamp\", type: \"uint256\" },\n { name: \"randomValue\", type: \"bytes32\" },\n { name: \"statement\", type: \"string\" }\n ]\n },\n message: object.message\n };\n\n const verification = verifyEip712Signature(typedData, object.signature);\n if (!verification.valid || !verification.signer) {\n return { valid: false, proofType: proof.proofType, reason: \"Invalid EIP-712 signature\" };\n }\n\n if (typeof object.message.signer === \"string\") {\n const expected = getAddress(object.message.signer);\n if (getAddress(verification.signer) !== expected) {\n return { valid: false, proofType: proof.proofType, reason: \"Recovered signer mismatch\" };\n }\n }\n\n return { valid: true, proofType: proof.proofType };\n }\n\n case \"pop-jws\": {\n if (typeof proof.proofObject !== \"string\") {\n return { valid: false, proofType: proof.proofType, reason: \"Invalid JWS proof payload\" };\n }\n\n const payload = decodeJwtPayload(proof.proofObject);\n const now = Math.floor(Date.now() / 1000);\n const exp = payload.exp;\n if (typeof exp === \"number\" && exp < now) {\n return { valid: false, proofType: proof.proofType, reason: \"JWS proof expired\" };\n }\n\n return { valid: true, proofType: proof.proofType };\n }\n\n case \"x402-receipt\":\n case \"x402-offer\": {\n if (!proof.proofObject || typeof proof.proofObject !== \"object\") {\n return { valid: false, proofType: proof.proofType, reason: \"Invalid x402 proof object\" };\n }\n return { valid: true, proofType: proof.proofType };\n }\n\n case \"evidence-pointer\": {\n const object = proof.proofObject as { url?: string };\n if (!object.url) {\n return { valid: false, proofType: proof.proofType, reason: \"Missing evidence URL\" };\n }\n\n const response = await fetch(object.url);\n if (!response.ok) {\n return { valid: false, proofType: proof.proofType, reason: `Evidence fetch failed (${response.status})` };\n }\n\n if (object.url.endsWith(\"/.well-known/did.json\") && expectedController) {\n const didDoc = (await response.json()) as Record<string, unknown>;\n const didCheck = verifyDidDocumentControllerDid(didDoc, expectedController);\n return {\n valid: didCheck.valid,\n proofType: proof.proofType,\n reason: didCheck.reason\n };\n }\n\n const body = await response.text();\n if (expectedController && !body.includes(expectedController)) {\n try {\n const parsed = parseDnsTxtRecord(body);\n if (parsed.controller !== expectedController) {\n return {\n valid: false,\n proofType: proof.proofType,\n reason: \"Evidence does not include expected controller DID\"\n };\n }\n } catch {\n return {\n valid: false,\n proofType: proof.proofType,\n reason: \"Evidence does not include expected controller DID\"\n };\n }\n }\n\n return { valid: true, proofType: proof.proofType };\n }\n\n default:\n return { valid: false, proofType: proof.proofType, reason: \"Unsupported proof type\" };\n }\n } catch (err) {\n throw new OmaTrustError(\"PROOF_VERIFICATION_FAILED\", \"Proof verification failed\", {\n proofType: proof.proofType,\n err\n });\n }\n}\n\nexport async function verifyAttestation(\n params: VerifyAttestationParams\n): Promise<VerifyAttestationResult> {\n const proofs = parseProofs(params.attestation);\n const checks: Record<string, boolean> = {};\n const reasons: string[] = [];\n\n const now = BigInt(Math.floor(Date.now() / 1000));\n if (params.attestation.revocationTime > 0n) {\n checks.revocation = false;\n reasons.push(\"attestation revoked\");\n } else {\n checks.revocation = true;\n }\n\n if (params.attestation.expirationTime > 0n && params.attestation.expirationTime < now) {\n checks.expiration = false;\n reasons.push(\"attestation expired\");\n } else {\n checks.expiration = true;\n }\n\n if (proofs.length === 0) {\n checks.proofs = false;\n reasons.push(\"no proofs provided\");\n }\n\n const selectedProofTypes = params.checks ?? (proofs.map((proof) => proof.proofType) as Array<ProofWrapper[\"proofType\"]>);\n\n for (const proof of proofs) {\n if (!selectedProofTypes.includes(proof.proofType)) {\n continue;\n }\n\n const result = await verifyProof({\n proof,\n provider: params.provider,\n expectedSubject: params.context?.subject as string | undefined,\n expectedController: params.context?.controller as string | undefined\n });\n\n checks[proof.proofType] = result.valid;\n if (!result.valid) {\n reasons.push(result.reason ?? `${proof.proofType} verification failed`);\n }\n }\n\n return {\n valid: reasons.length === 0,\n checks,\n reasons\n };\n}\n","import { OmaTrustError } from \"../shared/errors\";\nimport type { Hex } from \"./types\";\n\nexport async function verifySchemaExists(\n schemaRegistry: unknown,\n schemaUid: Hex\n): Promise<boolean> {\n const registry = schemaRegistry as {\n getSchema: (params: { uid: string }) => Promise<{ uid: string } | null>;\n };\n\n try {\n const schema = await registry.getSchema({ uid: schemaUid });\n return Boolean(schema && schema.uid && schema.uid !== \"0x\".padEnd(66, \"0\"));\n } catch {\n return false;\n }\n}\n\nexport async function getSchemaDetails(\n schemaRegistry: unknown,\n schemaUid: Hex\n): Promise<{ uid: Hex; schema: string; resolver: Hex; revocable: boolean }> {\n const registry = schemaRegistry as {\n getSchema: (params: { uid: string }) => Promise<{\n uid: string;\n schema: string;\n resolver: string;\n revocable: boolean;\n } | null>;\n };\n\n try {\n const details = await registry.getSchema({ uid: schemaUid });\n if (!details || !details.uid || details.uid === \"0x\".padEnd(66, \"0\")) {\n throw new OmaTrustError(\"SCHEMA_NOT_FOUND\", \"Schema was not found\", { schemaUid });\n }\n\n return {\n uid: formatSchemaUid(details.uid),\n schema: details.schema,\n resolver: details.resolver as Hex,\n revocable: Boolean(details.revocable)\n };\n } catch (err) {\n if (err instanceof OmaTrustError) {\n throw err;\n }\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Failed to read schema details\", { schemaUid, err });\n }\n}\n\nexport function formatSchemaUid(schemaUid: string): Hex {\n if (!schemaUid) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"schemaUid is required\");\n }\n const value = schemaUid.startsWith(\"0x\") ? schemaUid.toLowerCase() : `0x${schemaUid.toLowerCase()}`;\n if (!/^0x[0-9a-f]{64}$/.test(value)) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"schemaUid must be a 32-byte hex string\", { schemaUid });\n }\n return value as Hex;\n}\n","import { OmaTrustError } from \"../shared/errors\";\nimport type { CallControllerWitnessParams, CallControllerWitnessResult } from \"./types\";\n\nasync function callMethod(\n params: CallControllerWitnessParams,\n method: \"dns-txt\" | \"did-json\"\n): Promise<CallControllerWitnessResult | null> {\n let response: Response;\n try {\n response = await fetch(params.gatewayUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n attestationUid: params.attestationUid,\n chainId: params.chainId,\n easContract: params.easContract,\n schemaUid: params.schemaUid,\n subject: params.subject,\n controller: params.controller,\n method\n }),\n signal: AbortSignal.timeout(params.timeoutMs ?? 15_000)\n });\n } catch (err) {\n throw new OmaTrustError(\"NETWORK_ERROR\", \"Controller witness request failed\", { method, err });\n }\n\n const details = await response.json().catch(() => undefined);\n if (!response.ok) {\n return null;\n }\n\n return {\n ok: true,\n method,\n details\n };\n}\n\nexport async function callControllerWitness(\n params: CallControllerWitnessParams\n): Promise<CallControllerWitnessResult> {\n const dnsResult = await callMethod(params, \"dns-txt\").catch(() => null);\n if (dnsResult) {\n return dnsResult;\n }\n\n const didJsonResult = await callMethod(params, \"did-json\").catch(() => null);\n if (didJsonResult) {\n return didJsonResult;\n }\n\n return {\n ok: false,\n method: \"did-json\"\n };\n}\n","import { OmaTrustError } from \"../../shared/errors\";\nimport type { Hex, TxInteractionProof } from \"../types\";\n\nexport function createTxInteractionProof(chainId: number, txHash: Hex): TxInteractionProof {\n if (!/^0x[0-9a-fA-F]{64}$/.test(txHash)) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"txHash must be a 32-byte hex string\", { txHash });\n }\n\n return {\n proofType: \"tx-interaction\",\n proofPurpose: \"commercial-tx\",\n proofObject: {\n chainId: `eip155:${chainId}`,\n txHash\n },\n version: 1,\n issuedAt: Math.floor(Date.now() / 1000)\n };\n}\n","import { hexlify, randomBytes } from \"ethers\";\nimport type { Hex, PopEip712Proof, ProofPurpose } from \"../types\";\nimport { OmaTrustError } from \"../../shared/errors\";\nimport { getOmaTrustProofEip712Types } from \"./eip712\";\n\nexport type CreatePopEip712ProofParams = {\n signer: string;\n authorizedEntity: string;\n signingPurpose: ProofPurpose;\n chainId: number;\n creationTimestamp?: number;\n expirationTimestamp?: number;\n randomValue?: Hex;\n statement?: string;\n};\n\nexport async function createPopEip712Proof(\n params: CreatePopEip712ProofParams,\n signFn: (typedData: Record<string, unknown>) => Promise<Hex>\n): Promise<PopEip712Proof> {\n if (!params.signer || !params.authorizedEntity) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"signer and authorizedEntity are required\", { params });\n }\n\n const now = Math.floor(Date.now() / 1000);\n const creationTimestamp = params.creationTimestamp ?? now;\n const expirationTimestamp = params.expirationTimestamp ?? now + 600;\n const randomValue = params.randomValue ?? (hexlify(randomBytes(32)) as Hex);\n\n const message = {\n signer: params.signer,\n authorizedEntity: params.authorizedEntity,\n signingPurpose: params.signingPurpose,\n creationTimestamp,\n expirationTimestamp,\n randomValue,\n statement: params.statement ?? \"This is not a transaction or asset approval.\"\n };\n\n const { types, primaryType } = getOmaTrustProofEip712Types();\n const typedData = {\n domain: {\n name: \"OMATrust Proof\",\n version: \"1\",\n chainId: params.chainId\n },\n types,\n primaryType,\n message\n };\n\n const signature = await signFn(typedData);\n\n return {\n proofType: \"pop-eip712\",\n proofObject: {\n domain: typedData.domain,\n message,\n signature\n },\n version: 1,\n issuedAt: creationTimestamp,\n expiresAt: expirationTimestamp\n };\n}\n","import { OmaTrustError } from \"../../shared/errors\";\nimport type { Did, PopJwsProof, ProofPurpose } from \"../types\";\n\nexport type CreatePopJwsProofParams = {\n issuer: Did;\n audience: Did;\n purpose: ProofPurpose;\n issuedAt?: number;\n expiresAt?: number;\n nonce?: string;\n};\n\nexport async function createPopJwsProof(\n params: CreatePopJwsProofParams,\n signFn: (\n payload: Record<string, unknown>,\n header: Record<string, unknown>\n ) => Promise<string>\n): Promise<PopJwsProof> {\n if (!params.issuer || !params.audience) {\n throw new OmaTrustError(\"INVALID_INPUT\", \"issuer and audience are required\", { params });\n }\n\n const now = Math.floor(Date.now() / 1000);\n const payload = {\n iss: params.issuer,\n aud: params.audience,\n purpose: params.purpose,\n iat: params.issuedAt ?? now,\n exp: params.expiresAt ?? now + 600,\n nonce:\n params.nonce ??\n (globalThis.crypto?.randomUUID ? globalThis.crypto.randomUUID() : `${Date.now()}-${Math.random()}`)\n };\n\n const header = {\n typ: \"JWT\",\n alg: \"ES256K\"\n };\n\n const jws = await signFn(payload, header);\n\n return {\n proofType: \"pop-jws\",\n proofObject: jws,\n proofPurpose: params.purpose,\n version: 1,\n issuedAt: payload.iat,\n expiresAt: payload.exp\n };\n}\n","import type { X402OfferProof, X402ReceiptProof } from \"../types\";\n\nexport function createX402ReceiptProof(receipt: Record<string, unknown>): X402ReceiptProof {\n return {\n proofType: \"x402-receipt\",\n proofPurpose: \"commercial-tx\",\n proofObject: receipt,\n version: 1,\n issuedAt: Math.floor(Date.now() / 1000)\n };\n}\n\nexport function createX402OfferProof(offer: Record<string, unknown>): X402OfferProof {\n return {\n proofType: \"x402-offer\",\n proofPurpose: \"commercial-tx\",\n proofObject: offer,\n version: 1,\n issuedAt: Math.floor(Date.now() / 1000)\n };\n}\n","import { OmaTrustError } from \"../../shared/errors\";\nimport type { EvidencePointerProof } from \"../types\";\n\nexport function createEvidencePointerProof(url: string): EvidencePointerProof {\n if (!url || typeof url !== \"string\") {\n throw new OmaTrustError(\"INVALID_INPUT\", \"url must be a non-empty string\", { url });\n }\n\n return {\n proofType: \"evidence-pointer\",\n proofPurpose: \"shared-control\",\n proofObject: { url },\n version: 1,\n issuedAt: Math.floor(Date.now() / 1000)\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ export { A as AttestationQueryResult, C as CallControllerWitnessParams, a as CallControllerWitnessResult, b as ChainConstants, c as CreatePopEip712ProofParams, d as CreatePopJwsProofParams, D as Did, E as EvidencePointerProof, G as GetAttestationParams, e as GetLatestAttestationsParams, H as Hex, L as ListAttestationsParams, P as PopEip712Proof, f as PopJwsProof, g as PrepareDelegatedAttestationParams, h as PrepareDelegatedAttestationResult, j as ProofPurpose, k as ProofType, l as ProofWrapper, S as SchemaField, m as SubmitAttestationParams, n as SubmitAttestationResult, o as SubmitDelegatedAttestationParams, p as SubmitDelegatedAttestationResult, T as TxEncodedValueProof, q as TxInteractionProof, V as VerifyAttestationParams, r as VerifyAttestationResult, s as VerifyProofParams, t as VerifyProofResult, X as X402OfferProof, u as X402ReceiptProof, v as buildDelegatedAttestationTypedData, w as buildDnsTxtRecord, x as buildEip712Domain, y as calculateAverageUserReviewRating, z as calculateTransferAmount, B as calculateTransferAmountFromAddresses, F as callControllerWitness, I as constructSeed, J as createEvidencePointerProof, K as createPopEip712Proof, M as createPopJwsProof, N as createTxEncodedValueProof, O as createTxInteractionProof, Q as createX402OfferProof, R as createX402ReceiptProof, U as decodeAttestationData, W as deduplicateReviews, Y as encodeAttestationData, Z as extractAddressesFromDidDocument, _ as extractExpirationTime, $ as fetchDidDocument, a0 as formatSchemaUid, a1 as formatTransferAmount, a2 as getAttestation, a3 as getAttestationsForDid, a4 as getChainConstants, a5 as getExplorerAddressUrl, a6 as getExplorerTxUrl, a7 as getLatestAttestations, a8 as getMajorVersion, a9 as getOmaTrustProofEip712Types, aa as getSchemaDetails, ab as getSupportedChainIds, ac as hashSeed, ad as isChainSupported, ae as listAttestations, af as normalizeSchema, ag as parseDnsTxtRecord, ah as prepareDelegatedAttestation, ai as schemaToString, aj as splitSignature, ak as submitAttestation, al as submitDelegatedAttestation, am as verifyAttestation, an as verifyDidDocumentControllerDid, ao as verifyDnsTxtControllerDid, ap as verifyEip712Signature, aq as verifyProof, ar as verifySchemaExists } from '../index-ChbJxwOA.cjs';
@@ -0,0 +1 @@
1
+ export { A as AttestationQueryResult, C as CallControllerWitnessParams, a as CallControllerWitnessResult, b as ChainConstants, c as CreatePopEip712ProofParams, d as CreatePopJwsProofParams, D as Did, E as EvidencePointerProof, G as GetAttestationParams, e as GetLatestAttestationsParams, H as Hex, L as ListAttestationsParams, P as PopEip712Proof, f as PopJwsProof, g as PrepareDelegatedAttestationParams, h as PrepareDelegatedAttestationResult, j as ProofPurpose, k as ProofType, l as ProofWrapper, S as SchemaField, m as SubmitAttestationParams, n as SubmitAttestationResult, o as SubmitDelegatedAttestationParams, p as SubmitDelegatedAttestationResult, T as TxEncodedValueProof, q as TxInteractionProof, V as VerifyAttestationParams, r as VerifyAttestationResult, s as VerifyProofParams, t as VerifyProofResult, X as X402OfferProof, u as X402ReceiptProof, v as buildDelegatedAttestationTypedData, w as buildDnsTxtRecord, x as buildEip712Domain, y as calculateAverageUserReviewRating, z as calculateTransferAmount, B as calculateTransferAmountFromAddresses, F as callControllerWitness, I as constructSeed, J as createEvidencePointerProof, K as createPopEip712Proof, M as createPopJwsProof, N as createTxEncodedValueProof, O as createTxInteractionProof, Q as createX402OfferProof, R as createX402ReceiptProof, U as decodeAttestationData, W as deduplicateReviews, Y as encodeAttestationData, Z as extractAddressesFromDidDocument, _ as extractExpirationTime, $ as fetchDidDocument, a0 as formatSchemaUid, a1 as formatTransferAmount, a2 as getAttestation, a3 as getAttestationsForDid, a4 as getChainConstants, a5 as getExplorerAddressUrl, a6 as getExplorerTxUrl, a7 as getLatestAttestations, a8 as getMajorVersion, a9 as getOmaTrustProofEip712Types, aa as getSchemaDetails, ab as getSupportedChainIds, ac as hashSeed, ad as isChainSupported, ae as listAttestations, af as normalizeSchema, ag as parseDnsTxtRecord, ah as prepareDelegatedAttestation, ai as schemaToString, aj as splitSignature, ak as submitAttestation, al as submitDelegatedAttestation, am as verifyAttestation, an as verifyDidDocumentControllerDid, ao as verifyDnsTxtControllerDid, ap as verifyEip712Signature, aq as verifyProof, ar as verifySchemaExists } from '../index-ChbJxwOA.js';