{"_id":"@clayno-club/asset-flow","_rev":"14-b9bf13738ea8cd8dc5ab05dddf6c23d2","name":"@clayno-club/asset-flow","dist-tags":{"latest":"0.5.5"},"versions":{"0.1.1":{"name":"@clayno-club/asset-flow","version":"0.1.1","_id":"@clayno-club/asset-flow@0.1.1","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"136b368aa58246dece41ea75545c0104364deffb","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.1.1.tgz","fileCount":5,"integrity":"sha512-Nu1yS1Quantl5YAVcsAlzjyIibvvEWm35xGQDQWiMv3omND+ZVvstN14dhj1Dqo7wjw4uL26m8MDXfzLdW95iQ==","signatures":[{"sig":"MEQCIBywjTojgiB30iBEOJYU2aTclFi34uYzr4nJz7E0TiaqAiBT7kdivd7aaULAyFLgex4SDoiOvsrXf5kCq5y6hbhS8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302452},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"fceb5ed55fc3fb944fb1059582b37d0b6ae28a74","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"11.6.1","description":"Shared Solana asset-flow classification and normalization","directories":{},"_nodeVersion":"24.10.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.1.1_1774838668318_0.9522870755903186","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@clayno-club/asset-flow","version":"0.1.2","_id":"@clayno-club/asset-flow@0.1.2","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"e6c43b63bc6f6c41e328f8b0568618f07ab168cd","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.1.2.tgz","fileCount":5,"integrity":"sha512-xDPV6cDwRRJiSmJbkvyg6NVdsRDgw3Q6SwjalM8pIqdj/iPmb6oRDsHsYYOWD2r2Rci/46/tVHao5FlN84Mavw==","signatures":[{"sig":"MEYCIQCgGMcWae6u2m0VTyhyddIusT9wLndbDbGxDEikrVfR5gIhAIKhi4CH0O+pOttN5Z7KWpLuOd6wEjQZkkSq0essRDSZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":302452},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"aebe103e42c2087b8bc7e7fa29b36e7a721285ec","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"11.6.1","description":"Shared Solana asset-flow classification and normalization","directories":{},"_nodeVersion":"24.10.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.1.2_1774841896004_0.7971495611066743","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@clayno-club/asset-flow","version":"0.1.3","_id":"@clayno-club/asset-flow@0.1.3","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"110a28206d2e8f36ead8584d526aed47a07f6c96","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.1.3.tgz","fileCount":5,"integrity":"sha512-rY03KSkdrf3PlLxFf1zWZtJbnBef+WYXUeeMpsgwAy6PeFF/EqNcrHPVoRobneIF29jHpK9TEQEkXS7dpEpoQQ==","signatures":[{"sig":"MEYCIQChepSvwOsOS24wcjghVgKv35SmLlgNRQxpTVmbUSAm6QIhALdycdTHfAimp4Wdi8ie2psFBdUWVCr9v4YOdYJ9CF27","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":303553},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"aebe103e42c2087b8bc7e7fa29b36e7a721285ec","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"11.6.1","description":"Shared Solana asset-flow classification and normalization","directories":{},"_nodeVersion":"24.10.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.1.3_1774842822020_0.8213202516244109","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@clayno-club/asset-flow","version":"0.1.4","_id":"@clayno-club/asset-flow@0.1.4","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"5d585a395ec4c3af05c7d96521321193981fe821","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.1.4.tgz","fileCount":5,"integrity":"sha512-Np8IAVPUsVCxAFrjHLb1bDRfjMOejEqTdgQMrde4rHFK2yalqJqK/FsXpllHVeIHVGOUF/DTVDc0CAZBAygtMQ==","signatures":[{"sig":"MEUCIQC/6n7v9SXYoZISmdocVvqgGjwbZxpiN+fMpkT+MTmElwIgPLEI06qa2TJA46ms40vp7cFd7rYNdRDndXfjg+XOCKM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":339027},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"63156081ace73afed118d14c45a59ac65758ad25","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"10.9.3","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.1.4_1775502997180_0.5577780172573457","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@clayno-club/asset-flow","version":"0.2.0","_id":"@clayno-club/asset-flow@0.2.0","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"f5a8f6381e36317aee7ab9c55c74deebadb5a223","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.2.0.tgz","fileCount":5,"integrity":"sha512-d0TlZgow2i8ZxNxCprnTAoEEI01LcOWad+1vfqZxGKGM+b3pCe+c/rIjb2t+UFA9ZcIizAJE/gnNgO71FVMhmQ==","signatures":[{"sig":"MEUCIQCtUtYiZf9iRaEJAknjfTPlf31Xys0TCxO8jz60Ax/x+AIgJoj7xxecTOrPbA4uSbCeoD/GygX0ijwyHVo/3YUvVfM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":398548},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bad933c5e8cad2dee50eb1f546a5aaf58ca26b9c","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"10.9.3","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.2.0_1775565144461_0.17516629163466768","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@clayno-club/asset-flow","version":"0.2.1","_id":"@clayno-club/asset-flow@0.2.1","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"e338d2bab4f7d5c106a6b3b0c6c468a2dcc9b72d","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.2.1.tgz","fileCount":5,"integrity":"sha512-AjX1nYsM+I8VhzaaBJuqFDUh6IoIXkX0TaU9Ts6ytGw3wBEKJSwPpk8KSMrFVz3qbJ9DBmEKXgB4df2x2fe8Tw==","signatures":[{"sig":"MEUCID1HnDXVbcxYlRPjUEDFUEQ/aXZ6CJsSE45WxNT4dGKDAiEAg1ICZcU0QesaqgHbUosdGIuJtW5SB31u/454vy8yYXc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"bad933c5e8cad2dee50eb1f546a5aaf58ca26b9c","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"10.9.3","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.2.1_1775775438371_0.7837723959162588","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@clayno-club/asset-flow","version":"0.2.2","_id":"@clayno-club/asset-flow@0.2.2","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"183da4cfe4e169ea76f4a33a282eb83adf42c3b2","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.2.2.tgz","fileCount":5,"integrity":"sha512-KWVUoIbQztE68RfmZYX1uhB+TM7yPyw+zMKuWMux3Rx9hBuLP0DjFAtWAR/d/nDtp758vkuKKVp+nMoQqVuH8A==","signatures":[{"sig":"MEUCIQDXliTD2Q28IH6JkjOgWsm1Pxq1ca2Kh+wVe9Rp4Sy3zgIgLhHoGgH/1QyrtyIoMLg2kRY/5WBx+qwS9jpVeOEdESQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408284},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"7be1a349b7b996a0cbda43cbf21706f29f7d58fe","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"10.9.3","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.2.2_1775845111276_0.7839569347299269","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@clayno-club/asset-flow","version":"0.3.0","_id":"@clayno-club/asset-flow@0.3.0","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"192c18d0162e3c9a25373add2f1e3777f92e5f56","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.3.0.tgz","fileCount":5,"integrity":"sha512-OBORmv3lGIEdco4OA6Jii2tSXFRexAodoXqJsw7m5Phy2blCkGYSBK7YW6Y64DJToIqcLFUKzOMA1Zi+HZ3jRg==","signatures":[{"sig":"MEQCIFN17IY0kURF/QPyuMCf6l6QRd3Df/1QuuANfbZcmUnHAiA/WC6j1MH06od48N6gBtGlg7DWq0k6lVc+pZR7QZhsdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":447833},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c3fc5165de4869e3c4622b81b25c231e95e6dc1d","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test src/**/*.test.ts","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"11.6.1","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"24.10.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.3.0_1779900997458_0.6475310917777097","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@clayno-club/asset-flow","version":"0.4.0","_id":"@clayno-club/asset-flow@0.4.0","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"4cbc9cd98a4be1c709b3aa3be744cf2f3297c7be","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.4.0.tgz","fileCount":5,"integrity":"sha512-EOhrSQ5nU8Bz9Ya4MhLXvGLXplwgmrtT3L7ihaH/bbzIS9Wg9794fLhqTqBmsh7x712EoZnCb46AY3IHBmsXkQ==","signatures":[{"sig":"MEUCIAIXqXpFLQZBYtW7XZ7bzplgdxV7+D+YPJjol8qoO+UJAiEAzgKlnerv20AC3Gyl7KSqiNN6CNJrgYKaeI2uii/N+bc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":455368},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"0be7581bf8efeba943f4eb22368409c6fa70cf2d","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test $(find src -name '*.test.ts')","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"10.9.3","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.4.0_1783032300246_0.46042859330837427","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@clayno-club/asset-flow","version":"0.5.0","_id":"@clayno-club/asset-flow@0.5.0","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"925b5211f7e0498c66a1028949978dae3da7fc94","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.5.0.tgz","fileCount":5,"integrity":"sha512-l7votE7UZ6bcCfWyJ0VCpTA6zsh/ASH9SijD+XWSnFqYdFWN3p55WjVecx0nXWwK2q5dMRFXTML+HxIfd0UJoQ==","signatures":[{"sig":"MEQCIGux2bKOnZrXikHCDfrIKDa/8cUIwVWPxqpqHO6rPW6XAiAktWoa70ZDKwxcgc0Jku6i0LcYTzoqGG/Arcdlunz4Tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":457033},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"41d18a217610738d8893b1b7cac4918369a800bd","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test $(find src -name '*.test.ts')","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"10.9.3","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"22.20.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.5.0_1783051106177_0.3331082455761303","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@clayno-club/asset-flow","version":"0.5.1","_id":"@clayno-club/asset-flow@0.5.1","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"5b675fa3d633449042fc3cabe394ccac44771a5b","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.5.1.tgz","fileCount":5,"integrity":"sha512-XYeVTUrkkX9vj82MLnDSk4g4CyI/V6G76L31x6OEp32pL+Pw2gsNK4u1/k6uBB+kFOsElPIqbw7qnGXl4ufc8A==","signatures":[{"sig":"MEQCIECv2JxOb9wn9Qykvz865bbPwmnyjUGAqLI/dWsukFvmAiA4R6nAfKdF7mVm1ZwU7oXX9e8bMVyc04mR2LUUYhOxWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459653},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test $(find src -name '*.test.ts')","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"11.12.1","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"26.0.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.5.1_1786071134004_0.19055729140107647","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@clayno-club/asset-flow","version":"0.5.3","_id":"@clayno-club/asset-flow@0.5.3","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"9ef89ad098c854546a6d75b1e3a66179f6e6a3cb","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.5.3.tgz","fileCount":5,"integrity":"sha512-L5PZSaLcEjsgHZsK5r+Ho0uKlyJ2hSB0tTLXDCjRlRnIc2WlmxOAuzxl2Vy8U1i/wwUEORcXj68CVxDRF3EP5w==","signatures":[{"sig":"MEUCIQCoZiSgoLq5uZlKEPmzybJ7hKxP3j2ApvgcaIlqy8Q4WQIgVLEk8aJvLYeLIxaU7q2TZv1FH2klBUyhiD2FVCPIaYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474520},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test $(find src -name '*.test.ts')","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"11.12.1","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"26.0.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.5.3_1786394894279_0.41477339907558264","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@clayno-club/asset-flow","version":"0.5.4","_id":"@clayno-club/asset-flow@0.5.4","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"dist":{"shasum":"a7d0b086620505a6ba75921eba4bc91cf041c3f9","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.5.4.tgz","fileCount":5,"integrity":"sha512-hqKCO92hXBzISlij3vqlT0M0o6j2EjyOvPuo4Sk55Qx7izw4BYY4wa8dlKMWPj5jcBz5dKJJvqrUz9AHiFw+Bw==","signatures":[{"sig":"MEUCIQDnrSw2X6eMeWfs9LycznszBoLwDj2Nz1CRkEWrvs/PeQIgE8eVMYvCT7a0G/E3358YrqzgkB57kVvZnY1oPGAA+K8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":479832},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"b810ed4e422fd918e6b3ee2a5eba95a91675d4db","scripts":{"dev":"tsup --watch","lint":"eslint .","test":"pnpm exec tsx --test $(find src -name '*.test.ts')","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"_npmVersion":"11.12.1","description":"Shared asset-flow classification and normalization for supported chains","directories":{},"_nodeVersion":"26.0.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.1","tsup":"^8.0.1","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/asset-flow_0.5.4_1787250113791_0.13391145400471793","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@clayno-club/asset-flow","version":"0.5.5","type":"module","description":"Shared asset-flow classification and normalization for supported chains","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"dependencies":{},"devDependencies":{"tsup":"^8.0.1","tsx":"^4.7.1","typescript":"^5.3.3"},"scripts":{"build":"tsup","dev":"tsup --watch","clean":"rm -rf dist","test":"pnpm exec tsx --test $(find src -name '*.test.ts')","lint":"eslint .","lint:fix":"eslint . --fix","type-check":"tsc --noEmit"},"_id":"@clayno-club/asset-flow@0.5.5","_integrity":"sha512-cK2MgOLRfQVWhngMay2+67bOzZPBLmeXOE+Vm+pzoQO2iJqmximbjDDas3Ty0CLiIxtaw3sGgGZmQBzWvYSFjA==","_resolved":"/private/var/folders/51/94g6s3312sj78mfq9dtk_h540000gn/T/e278a32c7347022838252403c4477b44/clayno-club-asset-flow-0.5.5.tgz","_from":"file:clayno-club-asset-flow-0.5.5.tgz","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-cK2MgOLRfQVWhngMay2+67bOzZPBLmeXOE+Vm+pzoQO2iJqmximbjDDas3Ty0CLiIxtaw3sGgGZmQBzWvYSFjA==","shasum":"409ac4572312a918b83feab9cd0676edc308c96d","tarball":"https://registry.npmjs.org/@clayno-club/asset-flow/-/asset-flow-0.5.5.tgz","fileCount":5,"unpackedSize":482811,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFgGEr7/4GpIf1lL8tmK50PddNpbBt7Qo2keOzP6HiQ0AiBpRHdwgpTb2tF+YLVI991AKZD9K7Ej5Af77JFADCEBzQ=="}]},"_npmUser":{"name":"ryan_c","email":"racollette@gmail.com"},"directories":{},"maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/asset-flow_0.5.5_1787418680962_0.31578232539683393"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-30T02:44:28.176Z","modified":"2026-08-22T17:11:21.363Z","0.1.1":"2026-03-30T02:44:28.464Z","0.1.2":"2026-03-30T03:38:16.195Z","0.1.3":"2026-03-30T03:53:42.205Z","0.1.4":"2026-04-06T19:16:37.420Z","0.2.0":"2026-04-07T12:32:24.633Z","0.2.1":"2026-04-09T22:57:18.545Z","0.2.2":"2026-04-10T18:18:31.452Z","0.3.0":"2026-05-27T16:56:37.613Z","0.4.0":"2026-07-02T22:45:00.408Z","0.5.0":"2026-07-03T03:58:26.323Z","0.5.1":"2026-08-07T02:52:14.185Z","0.5.3":"2026-08-10T20:48:14.427Z","0.5.4":"2026-08-20T18:21:53.977Z","0.5.5":"2026-08-22T17:11:21.104Z"},"description":"Shared asset-flow classification and normalization for supported chains","maintainers":[{"name":"ryan_c","email":"racollette@gmail.com"}],"readme":"# @clayno-club/asset-flow\n\nDeterministic asset-flow classification and normalization for supported chains.\n\nThis package turns transaction data into a canonical ownership history for a tracked asset. It is designed for consumers that want consistent classification results across services, codebases, or audit pipelines.\n\nCurrent support:\n\n- Solana NFT asset-flow normalization via the root convenience exports such as `classify`, `buildFlows`, and `buildOwnershipPeriods`\n- Sui Popkins classification via explicit Sui exports such as `classifySuiTransactionForAsset`\n\n## What it does\n\n- classify supported chain transactions for a tracked asset\n- merge raw ownership evidence into enhanced Solana transactions when needed\n- normalize an asset's transaction history into canonical flows\n- derive ownership periods from normalized flows\n- explain why a transaction matched a given classification path\n- analyze provided transaction sets for review candidates\n\n## What it does not do\n\n- fetch transaction history from RPC providers or indexers\n- persist results to a database\n- manage queues, jobs, or orchestration\n\nYou provide the transaction data. The package provides deterministic interpretation.\n\n## Supported entrypoints\n\n- Root exports: Solana-oriented convenience API such as `classify`, `buildMintHistory`, `buildFlows`, `buildValueMovements`, and `augmentWithRaw`\n- Sui exports: explicit helpers such as `classifySuiTransactionForAsset` and the Sui transaction/type definitions\n\n## Install\n\n```bash\npnpm add @clayno-club/asset-flow\n```\n\n## Core API\n\n**Classification:**\n\n- `classify(tx, mint)` — classify a single transaction for a tracked mint\n- `explain(tx, mint)` — same as classify, but returns the full decision trace\n\n**Raw augmentation:**\n\n- `shouldFetchRaw(tx, mint)` — check if raw data would improve classification\n- `augmentWithRaw(tx, rawTx)` — merge raw ownership evidence into enhanced tx\n\n**History normalization:**\n\n- `buildMintHistory(transactions, mint)` — full pipeline: flows + value movements + ownership periods\n- `buildFlows(transactions, mint)` — just the canonical flows\n- `buildValueMovements(transactions, mint)` — just the value movements\n- `buildOwnershipPeriods(flows)` — ownership periods from flows\n- `extractMints(tx)` — extract candidate mint addresses from a transaction\n\n## Example: classify one transaction\n\n```ts\nimport { classify } from \"@clayno-club/asset-flow\";\n\nconst classification = classify(tx, mint);\n\nconsole.log(classification.family);\nconsole.log(classification.derivedType);\nconsole.log(classification.materialization);\n```\n\n## Example: augment enhanced data with raw ownership evidence\n\n```ts\nimport {\n  augmentWithRaw,\n  getRawEvidenceRequirementForMintTx,\n} from \"@clayno-club/asset-flow\";\n\nconst requirement = getRawEvidenceRequirementForMintTx(enhancedTx, mint);\nif (requirement.mode !== \"none\") {\n  // Fetch through the consumer's configured Solana RPC client.\n}\n\nconst augmented = augmentWithRaw(enhancedTx, rawTx);\n```\n\nConsumers must fail closed when `requirement.mode === \"required\"` and the raw\ntransaction is unavailable. `best-effort` preserves enhanced-only fallback.\n\n## Example: normalize mint history\n\n```ts\nimport { buildMintHistory } from \"@clayno-club/asset-flow\";\n\nconst normalized = buildMintHistory(transactions, mint);\n\nconsole.log(normalized.flows);\nconsole.log(normalized.valueMovements);\nconsole.log(normalized.periods);\n```\n\n## Example: explain a classification decision\n\n```ts\nimport { explain } from \"@clayno-club/asset-flow\";\n\nconst explanation = explain(tx, mint);\n\nconsole.log(explanation.facts);\nconsole.log(explanation.candidates);\nconsole.log(explanation.selection);\n```\n\n## Concepts\n\nThe package is structured around three steps:\n\n1. Facts\n   Convert transaction evidence into normalized facts about ownership change, settlement, program signals, and participants.\n\n2. Classification\n   Match the transaction to a known family and determine whether it should materialize as a canonical flow, be skipped as non-settlement activity, or remain review-worthy.\n\n3. Normalization\n   Turn classified transaction history into canonical mint flows, value movements, and ownership periods.\n\n## Output model\n\nThe normalized history contains:\n\n- `flows`\n  Canonical mint ownership events such as `MINT`, `SALE`, `TRANSFER`, `SWAP`, `LIST`, `DELIST`, `LOCK`, `UNLOCK`, and `FORECLOSURE`\n\n- `valueMovements`\n  Associated native or fungible settlement movements with roles such as `SALE_GROSS`, `SELLER_PROCEEDS`, `ROYALTY`, `MARKETPLACE_FEE`, `RENT`, and `SWAP_CONSIDERATION`\n\n- `periods`\n  Reconstructed ownership periods derived from normalized beneficial flows\n\n## When to use raw data\n\nSome Solana transactions do not expose enough ownership detail in enhanced/indexed form alone. When raw transaction data is available, use:\n\n- `shouldFetchRaw()`\n- `augmentWithRaw()`\n\nThis lets you keep the classification path deterministic while improving owner resolution for custody-heavy or protocol-heavy transactions.\n\n## Review analysis helpers\n\nIf you already have a set of transactions and want to identify unresolved patterns:\n\n- `collectCoverageReviewCandidates()` returns review-worthy transactions\n- `clusterCoverageReviewCandidates()` groups them into stable fingerprints\n- `scanTransactionsForCoverage()` combines both into a mint-scoped summary\n\nThese helpers are pure over provided transactions and do not fetch data.\n\n## Extending the matcher set\n\nWhen adding support for a new marketplace or protocol family:\n\n1. identify the reusable evidence\n2. add or reuse fact-building signals\n3. add a narrow matcher for the family\n4. register it with the appropriate priority\n5. add fixture coverage and regression tests\n\nPrefer adding a matcher for a real transaction family over expanding generic fallback behavior.\n\n## Testing\n\nTypical verification:\n\n```bash\npnpm --filter @clayno-club/asset-flow test\npnpm --filter @clayno-club/asset-flow build\npnpm --filter @clayno-club/asset-flow type-check\n```\n","readmeFilename":"README.md"}