{"_id":"@calimero-network/registry-client","_rev":"7-21e6357257d0f33faec8bf20eaf2c3a1","name":"@calimero-network/registry-client","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.0":{"name":"@calimero-network/registry-client","version":"1.0.0","keywords":["calimero","registry","api","client","typescript","javascript"],"author":{"name":"Calimero Network"},"license":"MIT","_id":"@calimero-network/registry-client@1.0.0","maintainers":[{"name":"xilos","email":"xabilosada@gmail.com"}],"dist":{"shasum":"d4eb9b0ba8c8042af7e02c953d086a31a7d1b551","tarball":"https://registry.npmjs.org/@calimero-network/registry-client/-/registry-client-1.0.0.tgz","fileCount":8,"integrity":"sha512-2k2usT+lx14YobMp2mrgMasDqKmYViefugI634Df1GYIQdQWeeHvCXwZ44kNWVbl+eDmJ5q8kON6QwbQfoN0yA==","signatures":[{"sig":"MEUCIEXEAGkdTuC9NRxcTpeuD31rDPCrDaiWq+nC2ujhSECPAiEAmzDRaow7hWdztdU+TVn+CbKN5Qde5hp501wuEc+ySTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107908},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"60cee77497afeaf40521aa8665dc03120f0ef628","scripts":{"dev":"tsup --watch","lint":"eslint src/ --ext ts --report-unused-disable-directives --max-warnings 0","test":"vitest --run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src/ --ext ts --fix","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"xilos","email":"xabilosada@gmail.com"},"_npmVersion":"10.8.2","description":"Calimero Network App Registry Client Library - JavaScript/TypeScript client for interacting with the App Registry API","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.33.0","vitest":"^0.29.3","@eslint/js":"^9.33.0","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.0","@semantic-release/npm":"^10.0.0","eslint-config-prettier":"^9.0.0","@semantic-release/github":"^9.0.0","@typescript-eslint/parser":"^8.39.1","conventional-changelog-writer":"^6.0.0","@typescript-eslint/eslint-plugin":"^8.39.1","@semantic-release/commit-analyzer":"^10.0.0","@semantic-release/release-notes-generator":"^10.0.0","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry-client_1.0.0_1760096669607_0.1918974290970077","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@calimero-network/registry-client","version":"1.0.1","keywords":["calimero","registry","api","client","typescript","javascript"],"author":{"name":"Calimero Network"},"license":"MIT","_id":"@calimero-network/registry-client@1.0.1","maintainers":[{"name":"xilos","email":"xabilosada@gmail.com"}],"dist":{"shasum":"0253cb673fb890958825f38f167ac8eafd839b83","tarball":"https://registry.npmjs.org/@calimero-network/registry-client/-/registry-client-1.0.1.tgz","fileCount":8,"integrity":"sha512-xo8uZD7MDXGLsYZlfyQrW/+NdaNHiIMdqYi9+t3QuV1OwbT0r80RTDgkGKoPZc0JXwmITx+5rE0gqORIjiouBw==","signatures":[{"sig":"MEUCIQDLhAum/SySjroe0GOw9nyEdHP2zH7QoyIPsAUsbC3mpwIgR/O+ifrJ/8GnuHG1XtWrzp9nAwT+75KoQSKj6u817tM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108532},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"c1cf4b284c441e78950f2310ed8dee87643442ca","scripts":{"dev":"tsup --watch","lint":"eslint src/ --ext ts --report-unused-disable-directives --max-warnings 0","test":"vitest --run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src/ --ext ts --fix","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"xilos","email":"xabilosada@gmail.com"},"_npmVersion":"10.8.2","description":"Calimero Network App Registry Client Library - JavaScript/TypeScript client for interacting with the App Registry API","directories":{},"_nodeVersion":"18.20.8","dependencies":{"axios":"^1.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^9.33.0","vitest":"^0.29.3","@eslint/js":"^9.33.0","typescript":"^5.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.0","@semantic-release/npm":"^10.0.0","eslint-config-prettier":"^9.0.0","@semantic-release/github":"^9.0.0","@typescript-eslint/parser":"^8.39.1","conventional-changelog-writer":"^6.0.0","@typescript-eslint/eslint-plugin":"^8.39.1","@semantic-release/commit-analyzer":"^10.0.0","@semantic-release/release-notes-generator":"^10.0.0","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry-client_1.0.1_1760274968477_0.5722309630284088","host":"s3://npm-registry-packages-npm-production"}},"1.5.2":{"name":"@calimero-network/registry-client","version":"1.5.2","keywords":["calimero","registry","api","client","typescript","javascript"],"author":{"name":"Calimero Network"},"license":"MIT","_id":"@calimero-network/registry-client@1.5.2","maintainers":[{"name":"xilos","email":"xabilosada@gmail.com"}],"homepage":"https://github.com/calimero-network/app-registry#readme","bugs":{"url":"https://github.com/calimero-network/app-registry/issues"},"dist":{"shasum":"2e347329adb81bb2507f7c9732f27d373c0a0a21","tarball":"https://registry.npmjs.org/@calimero-network/registry-client/-/registry-client-1.5.2.tgz","fileCount":8,"integrity":"sha512-e/Sy1vN/Ya9x1xAW2JpEuxG92EAz9P0fM10k7dUhhn93dq89bVimX8r2xoYWDghfPin5QWYRtXNqdXvL+L1uwg==","signatures":[{"sig":"MEYCIQCNb8UJ5GV2CurqYGpogtch4lmctKh40t9sp45h8xOC9gIhAJz/LAeYWZXP4eXyQC/0qobWU/HnpG86x9QtZUCk5c8y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@calimero-network%2fregistry-client@1.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108957},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"12d7ac94682c428e6634ee66015bac16ec96cd79","scripts":{"dev":"tsup --watch","lint":"eslint src/ --ext ts --report-unused-disable-directives --max-warnings 0","test":"vitest --run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src/ --ext ts --fix","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e146b2c6-c70c-4536-91fa-f3f04627b758"}},"repository":{"url":"git+https://github.com/calimero-network/app-registry.git","type":"git","directory":"packages/client-library"},"_npmVersion":"11.16.0","description":"Calimero Network App Registry Client Library - JavaScript/TypeScript client for interacting with the App Registry API","directories":{},"_nodeVersion":"24.18.0","dependencies":{"axios":"^1.15.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^10.0.1","vitest":"^3.2.7","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^20.0.0","semantic-release":"^25.0.1","@semantic-release/exec":"^7.0.0","eslint-config-prettier":"^9.0.0","@semantic-release/github":"^12.0.0","@typescript-eslint/parser":"^8.63.0","conventional-changelog-writer":"^8.4.0","@typescript-eslint/eslint-plugin":"^8.63.0","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"14.1.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry-client_1.5.2_1783936430720_0.030327088275261316","host":"s3://npm-registry-packages-npm-production"}},"1.5.3":{"name":"@calimero-network/registry-client","version":"1.5.3","keywords":["calimero","registry","api","client","typescript","javascript"],"author":{"name":"Calimero Network"},"license":"MIT","_id":"@calimero-network/registry-client@1.5.3","maintainers":[{"name":"xilos","email":"xabilosada@gmail.com"}],"homepage":"https://github.com/calimero-network/app-registry#readme","bugs":{"url":"https://github.com/calimero-network/app-registry/issues"},"dist":{"shasum":"46d5e5808f4d2de70d39c78a4bc5e9c325eaae4d","tarball":"https://registry.npmjs.org/@calimero-network/registry-client/-/registry-client-1.5.3.tgz","fileCount":8,"integrity":"sha512-CIKDG5y8rPzP2DOM0KOJx9Jt/KEv6CuRQlrqYIrbgWkQ3eTCGE3GtVXgKGPFsl+kkHyuk9/gCX6yfNHFdMC6SA==","signatures":[{"sig":"MEUCIQDM1KabGcP0fwhU4p8nrfxe472y0OyZ2QibtvLySY2ijgIgBNNWdIDv/JAwbqGVrppUzVmLGZpgNsEohASER/EXeTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@calimero-network%2fregistry-client@1.5.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108957},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"847972c41f6b40667dcf0068932509c839b90420","scripts":{"dev":"tsup --watch","lint":"eslint src/ --ext ts --report-unused-disable-directives --max-warnings 0","test":"vitest --run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src/ --ext ts --fix","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e146b2c6-c70c-4536-91fa-f3f04627b758"}},"repository":{"url":"git+https://github.com/calimero-network/app-registry.git","type":"git","directory":"packages/client-library"},"_npmVersion":"11.16.0","description":"Calimero Network App Registry Client Library - JavaScript/TypeScript client for interacting with the App Registry API","directories":{},"_nodeVersion":"24.18.0","dependencies":{"axios":"^1.15.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^10.0.1","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^20.0.0","semantic-release":"^25.0.1","@semantic-release/exec":"^7.0.0","eslint-config-prettier":"^9.0.0","@semantic-release/github":"^12.0.9","@typescript-eslint/parser":"^8.63.0","conventional-changelog-writer":"^8.4.0","@typescript-eslint/eslint-plugin":"^7.0.0","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"14.1.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry-client_1.5.3_1784540190411_0.2978794248922685","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"@calimero-network/registry-client","version":"1.5.4","keywords":["calimero","registry","api","client","typescript","javascript"],"author":{"name":"Calimero Network"},"license":"MIT","_id":"@calimero-network/registry-client@1.5.4","maintainers":[{"name":"xilos","email":"xabilosada@gmail.com"}],"homepage":"https://github.com/calimero-network/app-registry#readme","bugs":{"url":"https://github.com/calimero-network/app-registry/issues"},"dist":{"shasum":"abdfd81a04cf213f8de12a3be4a682d18f5567a7","tarball":"https://registry.npmjs.org/@calimero-network/registry-client/-/registry-client-1.5.4.tgz","fileCount":8,"integrity":"sha512-2hASKx3sc7o1SBqnsO56vOzvzkOK8t7XuxwA9VEiQpH5XhavwtLkWZ7gmBEF7DFgD0dpQgRn3ncUVuE7hjB8zw==","signatures":[{"sig":"MEUCIQD0WoxNkfgGoDV45SymGDe2+Vuo3GoxqdOtq0prRJInkgIgWbDgAaZfq3mugfPsHvf35l+KKkbzhqnC91R0gcWqnXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@calimero-network%2fregistry-client@1.5.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":108957},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","engines":{"node":">=24.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"}},"gitHead":"883489159e680faf60c467ef9c00ef53aae99829","scripts":{"dev":"tsup --watch","lint":"eslint src/ --ext ts --report-unused-disable-directives --max-warnings 0","test":"vitest --run","build":"tsup","clean":"rm -rf dist","lint:fix":"eslint src/ --ext ts --fix","test:watch":"vitest","type-check":"tsc --noEmit","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e146b2c6-c70c-4536-91fa-f3f04627b758"}},"repository":{"url":"git+https://github.com/calimero-network/app-registry.git","type":"git","directory":"packages/client-library"},"_npmVersion":"11.16.0","description":"Calimero Network App Registry Client Library - JavaScript/TypeScript client for interacting with the App Registry API","directories":{},"_nodeVersion":"24.18.0","dependencies":{"axios":"^1.18.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","eslint":"^10.0.1","vitest":"^4.1.10","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^20.0.0","semantic-release":"^25.0.1","@semantic-release/exec":"^7.0.0","eslint-config-prettier":"^9.0.0","@semantic-release/github":"^12.0.9","@typescript-eslint/parser":"^8.63.0","conventional-changelog-writer":"^8.4.0","@typescript-eslint/eslint-plugin":"^7.0.0","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"14.1.1","conventional-changelog-conventionalcommits":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/registry-client_1.5.4_1784618451407_0.396310140142327","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@calimero-network/registry-client","version":"1.6.0","description":"Calimero Network App Registry Client Library - JavaScript/TypeScript client for interacting with the App Registry API","type":"module","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"scripts":{"build":"tsup","dev":"tsup --watch","clean":"rm -rf dist","lint":"eslint src/ --ext ts --report-unused-disable-directives --max-warnings 0","lint:fix":"eslint src/ --ext ts --fix","type-check":"tsc --noEmit","test":"vitest --run","test:watch":"vitest","test:coverage":"vitest --coverage","prepublishOnly":"npm run build"},"dependencies":{"axios":"^1.18.0"},"devDependencies":{"@eslint/js":"^10.0.1","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/exec":"^7.0.0","@semantic-release/github":"^12.0.9","@semantic-release/release-notes-generator":"14.1.1","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^7.0.0","@typescript-eslint/parser":"^8.63.0","conventional-changelog-conventionalcommits":"^8.0.0","conventional-changelog-writer":"^8.4.0","eslint":"^10.0.1","eslint-config-prettier":"^10.1.8","semantic-release":"^25.0.1","tsup":"^8.0.0","typescript":"^5.9.3","vitest":"^4.1.10"},"engines":{"node":">=24.0.0"},"keywords":["calimero","registry","api","client","typescript","javascript"],"author":{"name":"Calimero Network"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/calimero-network/app-registry.git","directory":"packages/client-library"},"gitHead":"1e61d9e79558c941d3cf63b55180652c87d47190","_id":"@calimero-network/registry-client@1.6.0","bugs":{"url":"https://github.com/calimero-network/app-registry/issues"},"homepage":"https://github.com/calimero-network/app-registry#readme","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-yXe+35ofaHrIu04ZhZsQ60tHdfrotz7zPHNQFPYWwe+7ZmrdXcGDQyk2SeeJ7LqVW2UKbatPKlqid0aDP2qLpg==","shasum":"db103d945ef6088e369f9aa5990097acdc4678ea","tarball":"https://registry.npmjs.org/@calimero-network/registry-client/-/registry-client-1.6.0.tgz","fileCount":8,"unpackedSize":108958,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@calimero-network%2fregistry-client@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC5LrjqeUG+lhLXZ5X6YE5wQ2KmiStndBJ+QVSZKGaCFAiEAwXGW8qcBFvJSdiYED5ayWVzLgHNHYm4P5ri+kUJCC7c="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e146b2c6-c70c-4536-91fa-f3f04627b758"}},"directories":{},"maintainers":[{"name":"rtb-calimero","email":"ronit@calimero.network"},{"name":"xilos","email":"xabilosada@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/registry-client_1.6.0_1786095072894_0.1779396698646758"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-10T11:44:29.517Z","modified":"2026-08-07T09:31:13.412Z","1.0.0":"2025-10-10T11:44:29.811Z","1.0.1":"2025-10-12T13:16:08.646Z","1.5.2":"2026-07-13T09:53:50.851Z","1.5.3":"2026-07-20T09:36:30.546Z","1.5.4":"2026-07-21T07:20:51.537Z","1.6.0":"2026-08-07T09:31:13.048Z"},"bugs":{"url":"https://github.com/calimero-network/app-registry/issues"},"author":{"name":"Calimero Network"},"license":"MIT","homepage":"https://github.com/calimero-network/app-registry#readme","keywords":["calimero","registry","api","client","typescript","javascript"],"repository":{"type":"git","url":"git+https://github.com/calimero-network/app-registry.git","directory":"packages/client-library"},"description":"Calimero Network App Registry Client Library - JavaScript/TypeScript client for interacting with the App Registry API","maintainers":[{"name":"rtb-calimero","email":"ronit@calimero.network"},{"name":"xilos","email":"xabilosada@gmail.com"}],"readme":"# Calimero Registry Client Library\n\nA TypeScript client library for the Calimero Registry (Self-Sovereign Application Registry) API. Provides type-safe methods for interacting with the registry, including application management, developer operations, and attestation handling.\n\n## 🚀 Features\n\n- **TypeScript**: Full type safety with comprehensive type definitions\n- **Axios**: Reliable HTTP client with request/response interceptors\n- **Error Handling**: Comprehensive error handling with custom error types\n- **Request/Response Validation**: Automatic validation of API requests and responses\n- **Retry Logic**: Configurable retry mechanisms for failed requests\n- **Rate Limiting**: Built-in rate limiting support\n- **Logging**: Configurable logging for debugging and monitoring\n\n## 📦 Installation\n\n```bash\n# Install from npm\nnpm install @calimero-network/registry-client\n\n# Or using pnpm\npnpm add @calimero-network/registry-client\n\n# Or using yarn\nyarn add @calimero-network/registry-client\n```\n\n## 🔧 Configuration\n\n### Basic Setup\n\n```typescript\nimport { CalimeroRegistryClient } from '@calimero-network/registry-client';\n\nconst client = new CalimeroRegistryClient({\n  baseURL: 'https://api.calimero.network',\n  apiKey: 'your-api-key', // Optional\n  timeout: 10000, // 10 seconds\n});\n```\n\n### Configuration Options\n\n```typescript\ninterface ClientConfig {\n  baseURL: string; // API base URL\n  apiKey?: string; // API key for authentication\n  timeout?: number; // Request timeout in milliseconds\n  retries?: number; // Number of retry attempts\n  retryDelay?: number; // Delay between retries in milliseconds\n  rateLimit?: number; // Requests per minute\n  logger?: Logger; // Custom logger instance\n}\n```\n\n## 📚 API Reference\n\n### Applications\n\n#### List Applications\n\n```typescript\n// Get all applications\nconst apps = await client.apps.list();\n\n// Get applications with filters\nconst apps = await client.apps.list({\n  search: 'wallet',\n  developer: 'developer-id',\n  verified: true,\n  limit: 20,\n  offset: 0,\n});\n\n// Type-safe response\ninterface AppsResponse {\n  apps: Application[];\n  total: number;\n  limit: number;\n  offset: number;\n}\n```\n\n#### Get Application by ID\n\n```typescript\nconst app = await client.apps.getById('app-id');\n\n// Type-safe application object\ninterface Application {\n  id: string;\n  name: string;\n  description: string;\n  version: string;\n  developer: Developer;\n  manifest: Manifest;\n  artifacts: Artifact[];\n  createdAt: string;\n  updatedAt: string;\n}\n```\n\n#### Create Application\n\n```typescript\nconst newApp = await client.apps.create({\n  name: 'My self-sovereign application',\n  description: 'A smart contract application',\n  version: '1.0.0',\n  developerId: 'developer-id',\n  manifest: {\n    // Manifest data\n  },\n  artifacts: [\n    // Artifact data\n  ],\n});\n```\n\n#### Update Application\n\n```typescript\nconst updatedApp = await client.apps.update('app-id', {\n  description: 'Updated description',\n  version: '1.1.0',\n});\n```\n\n#### Delete Application\n\n```typescript\nawait client.apps.delete('app-id');\n```\n\n### Developers\n\n#### List Developers\n\n```typescript\nconst developers = await client.developers.list({\n  search: 'john',\n  verified: true,\n  limit: 10,\n});\n```\n\n#### Get Developer by ID\n\n```typescript\nconst developer = await client.developers.getById('developer-id');\n\ninterface Developer {\n  id: string;\n  name: string;\n  email: string;\n  publicKey: string;\n  verified: boolean;\n  apps: Application[];\n  createdAt: string;\n}\n```\n\n#### Create Developer\n\n```typescript\nconst developer = await client.developers.create({\n  name: 'John Doe',\n  email: 'john@example.com',\n  publicKey: 'ed25519:...',\n});\n```\n\n### Attestations\n\n#### List Attestations\n\n```typescript\nconst attestations = await client.attestations.list({\n  appId: 'app-id',\n  developerId: 'developer-id',\n  type: 'verification',\n});\n```\n\n#### Create Attestation\n\n```typescript\nconst attestation = await client.attestations.create({\n  appId: 'app-id',\n  type: 'verification',\n  data: {\n    verified: true,\n    reason: 'Passed security audit',\n  },\n  signature: 'ed25519:...',\n});\n```\n\n## 🎯 Usage Examples\n\n### Complete Application Management\n\n```typescript\nimport { CalimeroRegistryClient } from '@calimero-network/registry-client';\n\nconst client = new CalimeroRegistryClient({\n  baseURL: 'https://api.calimero.network',\n});\n\nasync function manageApplication() {\n  try {\n    // Create a new application\n    const app = await client.apps.create({\n      name: 'DeFi Wallet',\n      description: 'A decentralized finance wallet',\n      version: '1.0.0',\n      developerId: 'my-developer-id',\n      manifest: {\n        permissions: ['wallet', 'network'],\n        entrypoint: 'index.html',\n      },\n      artifacts: [\n        {\n          type: 'wasm',\n          cid: 'QmHash...',\n          size: 1024000,\n        },\n      ],\n    });\n\n    console.log('Created app:', app.id);\n\n    // Update the application\n    const updatedApp = await client.apps.update(app.id, {\n      description: 'Updated DeFi wallet with new features',\n      version: '1.1.0',\n    });\n\n    console.log('Updated app:', updatedApp.version);\n\n    // List all applications\n    const allApps = await client.apps.list({\n      search: 'wallet',\n      limit: 10,\n    });\n\n    console.log('Found apps:', allApps.apps.length);\n  } catch (error) {\n    if (error instanceof CalimeroRegistryError) {\n      console.error('API Error:', error.message);\n      console.error('Status:', error.status);\n      console.error('Code:', error.code);\n    } else {\n      console.error('Unexpected error:', error);\n    }\n  }\n}\n```\n\n### Error Handling\n\n```typescript\nimport {\n  CalimeroRegistryClient,\n  CalimeroRegistryError,\n} from '@calimero-network/registry-client';\n\nconst client = new CalimeroRegistryClient({\n  baseURL: 'https://api.calimero.network',\n});\n\nasync function handleErrors() {\n  try {\n    const app = await client.apps.getById('non-existent-id');\n  } catch (error) {\n    if (error instanceof CalimeroRegistryError) {\n      switch (error.status) {\n        case 404:\n          console.log('Application not found');\n          break;\n        case 401:\n          console.log('Authentication required');\n          break;\n        case 403:\n          console.log('Access forbidden');\n          break;\n        case 429:\n          console.log('Rate limit exceeded');\n          break;\n        default:\n          console.log('API error:', error.message);\n      }\n    }\n  }\n}\n```\n\n### Batch Operations\n\n```typescript\nasync function batchOperations() {\n  // Create multiple applications\n  const appPromises = [\n    client.apps.create({ name: 'App 1', version: '1.0.0' }),\n    client.apps.create({ name: 'App 2', version: '1.0.0' }),\n    client.apps.create({ name: 'App 3', version: '1.0.0' }),\n  ];\n\n  const apps = await Promise.all(appPromises);\n  console.log(\n    'Created apps:',\n    apps.map(app => app.id)\n  );\n\n  // Update all apps\n  const updatePromises = apps.map(app =>\n    client.apps.update(app.id, { version: '1.1.0' })\n  );\n\n  const updatedApps = await Promise.all(updatePromises);\n  console.log('Updated apps:', updatedApps.length);\n}\n```\n\n## 🧪 Testing\n\n### Unit Testing\n\n```typescript\nimport { CalimeroRegistryClient } from '@calimero-network/registry-client';\nimport { mockApiResponse } from './test-utils';\n\ndescribe('CalimeroRegistryClient', () => {\n  let client: CalimeroRegistryClient;\n\n  beforeEach(() => {\n    client = new CalimeroRegistryClient({\n      baseURL: 'https://api.test.com',\n    });\n  });\n\n  it('should list applications', async () => {\n    const mockApps = [{ id: '1', name: 'Test App', version: '1.0.0' }];\n\n    mockApiResponse('/apps', mockApps);\n\n    const result = await client.apps.list();\n    expect(result.apps).toEqual(mockApps);\n  });\n\n  it('should handle errors correctly', async () => {\n    mockApiResponse('/apps/non-existent', null, 404);\n\n    await expect(client.apps.getById('non-existent')).rejects.toThrow(\n      CalimeroRegistryError\n    );\n  });\n});\n```\n\n### Integration Testing\n\n```typescript\ndescribe('Integration Tests', () => {\n  let client: CalimeroRegistryClient;\n\n  beforeAll(() => {\n    client = new CalimeroRegistryClient({\n      baseURL: process.env.TEST_API_URL,\n      apiKey: process.env.TEST_API_KEY,\n    });\n  });\n\n  it('should create and retrieve an application', async () => {\n    // Create app\n    const newApp = await client.apps.create({\n      name: 'Integration Test App',\n      version: '1.0.0',\n      developerId: 'test-developer',\n    });\n\n    expect(newApp.id).toBeDefined();\n    expect(newApp.name).toBe('Integration Test App');\n\n    // Retrieve app\n    const retrievedApp = await client.apps.getById(newApp.id);\n    expect(retrievedApp).toEqual(newApp);\n\n    // Cleanup\n    await client.apps.delete(newApp.id);\n  });\n});\n```\n\n## 🔧 Advanced Configuration\n\n### Custom Interceptors\n\n```typescript\nimport axios from 'axios';\n\nconst client = new CalimeroRegistryClient({\n  baseURL: 'https://api.calimero.network',\n});\n\n// Add request interceptor\nclient.axios.interceptors.request.use(config => {\n  console.log('Making request to:', config.url);\n  return config;\n});\n\n// Add response interceptor\nclient.axios.interceptors.response.use(\n  response => {\n    console.log('Received response:', response.status);\n    return response;\n  },\n  error => {\n    console.error('Request failed:', error.message);\n    return Promise.reject(error);\n  }\n);\n```\n\n### Custom Logger\n\n```typescript\nimport { Logger } from '@calimero-network/registry-client';\n\nclass CustomLogger implements Logger {\n  info(message: string, data?: any) {\n    console.log(`[INFO] ${message}`, data);\n  }\n\n  error(message: string, error?: any) {\n    console.error(`[ERROR] ${message}`, error);\n  }\n\n  debug(message: string, data?: any) {\n    console.debug(`[DEBUG] ${message}`, data);\n  }\n}\n\nconst client = new CalimeroRegistryClient({\n  baseURL: 'https://api.calimero.network',\n  logger: new CustomLogger(),\n});\n```\n\n### Retry Configuration\n\n```typescript\nconst client = new CalimeroRegistryClient({\n  baseURL: 'https://api.calimero.network',\n  retries: 3,\n  retryDelay: 1000, // 1 second\n  timeout: 30000, // 30 seconds\n});\n```\n\n## 📊 Type Definitions\n\n### Core Types\n\n```typescript\n// Application types\ninterface Application {\n  id: string;\n  name: string;\n  description: string;\n  version: string;\n  developer: Developer;\n  manifest: Manifest;\n  artifacts: Artifact[];\n  createdAt: string;\n  updatedAt: string;\n}\n\n// Developer types\ninterface Developer {\n  id: string;\n  name: string;\n  email: string;\n  publicKey: string;\n  verified: boolean;\n  apps: Application[];\n  createdAt: string;\n}\n\n// Manifest types\ninterface Manifest {\n  permissions: string[];\n  entrypoint: string;\n  metadata?: Record<string, any>;\n}\n\n// Artifact types\ninterface Artifact {\n  type: 'wasm' | 'html' | 'js' | 'css';\n  cid: string;\n  size: number;\n  hash?: string;\n}\n```\n\n### Error Types\n\n```typescript\nclass CalimeroRegistryError extends Error {\n  status: number;\n  code: string;\n  details?: any;\n\n  constructor(message: string, status: number, code: string, details?: any) {\n    super(message);\n    this.status = status;\n    this.code = code;\n    this.details = details;\n  }\n}\n```\n\n## 🚀 Build & Distribution\n\n### Building the Library\n\n```bash\n# Build the library\npnpm build\n\n# Build with type declarations\npnpm build:types\n\n# Build for different targets\npnpm build:esm    # ES modules\npnpm build:cjs    # CommonJS\npnpm build:umd    # UMD bundle\n```\n\n### Publishing\n\n```bash\n# Publish to npm\npnpm publish\n\n# Publish with specific tag\npnpm publish --tag beta\n```\n\n## 🔧 Development\n\n### Development Commands\n\n```bash\n# Install dependencies\npnpm install\n\n# Build the library\npnpm build\n\n# Run tests\npnpm test\n\n# Run tests in watch mode\npnpm test:watch\n\n# Run tests with coverage\npnpm test:coverage\n\n# Lint code\npnpm lint\n\n# Fix linting issues\npnpm lint:fix\n\n# Format code\npnpm format\n\n# Type checking\npnpm type-check\n```\n\n### Code Quality\n\n- **ESLint**: Code linting with TypeScript rules\n- **Prettier**: Code formatting\n- **TypeScript**: Static type checking\n- **Vitest**: Unit testing framework\n- **Coverage**: Test coverage reporting\n\n## 📄 License\n\nThis package is licensed under the MIT License - see the [LICENSE](../../LICENSE) file for details.\n\n## 🤝 Contributing\n\nSee the main [CONTRIBUTING](../../CONTRIBUTING.md) guide for details on how to contribute to this package.\n\n## 🆘 Support\n\n- **Issues**: Create an issue on GitHub\n- **Documentation**: Check the API documentation\n- **Examples**: Review the test suite for usage examples\n","readmeFilename":"README.md"}