{"_id":"@3d-outlet/contracts","_rev":"9-25cd7bcbbc61b3d028adf2e881b3007b","name":"@3d-outlet/contracts","dist-tags":{"latest":"1.3.5"},"versions":{"1.0.0":{"name":"@3d-outlet/contracts","version":"1.0.0","_id":"@3d-outlet/contracts@1.0.0","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"cbec4041722be639bdbed7099cbe878667716b8a","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.0.0.tgz","fileCount":17,"integrity":"sha512-1A6nL7KfOKZ8T+vwt4KR4eEIvYO5riQKHCrCrjm8jRSOVUkEWn+tI+eEnmXWDekBYy02LjEKiq9MhqH7uXYQTg==","signatures":[{"sig":"MEYCIQCqO1bLhv7/6GQwDv9KXSmL/Oh7+msvcBAEMrVmVALphwIhAMHTg1UtZf2TXUia3YBXUKTYQ2N5o3QcFyWDJDDHndJj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12042},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"623c97b910ec0b3068882be989c5278e9a42be2a","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.0.0_1767889120604_0.7653063485181242","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@3d-outlet/contracts","version":"1.1.0","_id":"@3d-outlet/contracts@1.1.0","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"efd5f43c20f1226ea26d92c3d8bc110ea1b0f093","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.1.0.tgz","fileCount":17,"integrity":"sha512-zVAH1zjM7DJLoYMt0aJVoRBT63h8VrWT7HEIKgUjXB1vh2M9cFa0pv9P3xS8PtTnYahFsiYyLsydcw0AcDap6A==","signatures":[{"sig":"MEUCIA76lgAuQ53J51Ob3Mh6jNANn1hhXXNDg3l7C4iNChjEAiEAzneIYI4DeSQ8aG9sA58G1JdKWHf+j6353a20nmOPh7E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12042},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"6680c2cbd8728fb386eede8f2df2a5d173ec94a4","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.1.0_1767956025528_0.17426541459535438","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@3d-outlet/contracts","version":"1.1.1","_id":"@3d-outlet/contracts@1.1.1","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"24c26562face943835777125ec975caad7cd57b9","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.1.1.tgz","fileCount":17,"integrity":"sha512-lb3fS7anzbG4rsHS2akOALe+PHdDHL0SG0gyZ8E6vvf0S1bP/fbZPR0xPYQ8GMBXOI69qvlOa6ewt+rO4Po/CA==","signatures":[{"sig":"MEQCIEu5J3ahyJWS0iyDWkY2KwGkhHfD8Xm1F6mKJcCFMtHZAiBRVCPkNMUJRTtIO2nvCSbYqmVljQJcrNRRVVCBYE8bAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12042},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"38fb014d9d1588734d7b123bacfbdd697808ea79","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.1.1_1767957005977_0.6465077749631392","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@3d-outlet/contracts","version":"1.1.2","_id":"@3d-outlet/contracts@1.1.2","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"4d5e67a80e20f9c2f2ee17741d2b9deed448e69e","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.1.2.tgz","fileCount":17,"integrity":"sha512-gUC9umFBCsyb+IacaaYf2qP7mFRHvV0gCktS/ljOcNbGdQqblDMRPzSCmU0WgT3Nc7OuV1glyC80M71ApmRJjQ==","signatures":[{"sig":"MEUCIH78OL/kWb6Wz2shkdd5aeAVJL6c4CcHtvCcAtOU4uw9AiEAi1d8MNYWKFeg3FgdyUrhDH/FAWo8YMR8s/TktT6mmjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12042},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"844c2db8e0134c7b78706e5272a0586107089d3b","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.1.2_1767957062833_0.32423710198392697","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@3d-outlet/contracts","version":"1.1.3","_id":"@3d-outlet/contracts@1.1.3","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"66a1ef5bd6c2996e2bcdf4f6dedd13e972ee2ea7","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.1.3.tgz","fileCount":22,"integrity":"sha512-Q5WfbyvFYb1IZJ9Y4BuR6wgzZGXyybSQGC+FGc6L7jGZvnCH9qCfaufuiiy1YEnAESs00NvfukqxUUh6CuGP2g==","signatures":[{"sig":"MEUCIE3/EBJaEgOsYTTY2dn87iHpkzQKo2QaQwIFFAXN1Ha9AiEAw0KFGwzfNR4gYFyFcohOE7/eFVnKGtbZDglaaECa2cI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38653},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"209bc7b392cc82bf47b4f8080b3bf4a9c6e08bc7","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.1.3_1767957442050_0.0453559261343881","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@3d-outlet/contracts","version":"1.1.4","_id":"@3d-outlet/contracts@1.1.4","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"0b0d7d601db35710bd7c4b10a056ca7a4dbadb14","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.1.4.tgz","fileCount":24,"integrity":"sha512-bkPbiu6m8iDu5+ZFY8GUKyO6+qsipP6OpBBlHyPGzbDOFSVMYOLceqhS2s9pIX5sBI0SfTvjfXWqPTpDmPkg/Q==","signatures":[{"sig":"MEYCIQCRCTeRJ8UonFudDz/G9JnDqpjAK86mebuHL4ngxjWlvwIhALr8bmDjThQW2rP4KBihckpn24i+usHwE1nwOkMqT9cV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44082},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"c6f383b687ca7e163ea24a0a21847a2b26cd0d6f","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.1.4_1767958004825_0.8407607739963836","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@3d-outlet/contracts","version":"1.2.4","_id":"@3d-outlet/contracts@1.2.4","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"45921c25515a73862999eddd7b85b4a5b2bc7b9f","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.2.4.tgz","fileCount":32,"integrity":"sha512-Inca7LzlM3vHgAbpsR0e6EuP7ZqsarMToPapjpNBV0LkPfJURRaB2P8SNjFvBAUNQ774BFyfDT9WGsn298kFrw==","signatures":[{"sig":"MEYCIQDEO5HVMIS1qGR22JwiCOpdGbwWHhbbd4Xrc+x+Plj+4AIhAMYSmm2UxLz6bGy4SyIlIOY0XTrZVV0oWB8WnL6v1k5T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50316},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"05592111d01fe05bbb897790d8a2f71db7d36781","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.2.4_1767959531214_0.6247045347235005","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"@3d-outlet/contracts","version":"1.3.4","_id":"@3d-outlet/contracts@1.3.4","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"dist":{"shasum":"6b768f4ae31ab94ee23a7b6d17d0b5991e0430e9","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.3.4.tgz","fileCount":34,"integrity":"sha512-OvBQe69XEeg97E+SJ5dj62gOQZrfcDGCfb+4MB7cH5FSZaLll04r0ySfO79ZaV3ylCe/sR8pVjFTu2CH4BxnWA==","signatures":[{"sig":"MEUCIQCzzcSxPGBYAWBphkgyWYi1P8WJNosji+/HhgVNHKN30AIgLlZDcT/6czfP8oPLB4mRkC1Zcl3dD/Sg5hjEnrpDqj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53563},"main":"./dist/index.js","types":"./dist/index.d.ts","gitHead":"4886f437ca6271dcaf2fb6910f4bd1272344da9b","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"_npmVersion":"10.8.2","description":"Protobuf definitions and generated TypeScript types","directories":{},"_nodeVersion":"20.19.6","dependencies":{"rxjs":"^7.8.2","ts-proto":"^2.8.3","@nestjs/microservices":"^11.1.9"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/contracts_1.3.4_1767965734297_0.846785637092653","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"@3d-outlet/contracts","version":"1.3.5","description":"Protobuf definitions and generated TypeScript types","main":"./dist/index.js","types":"./dist/index.d.ts","scripts":{"build":"tsc -p tsconfig.build.json","generate":"protoc -I ./proto ./proto/*.proto --ts_proto_out=./gen/ts --ts_proto_opt=nestJs=true,package=omit"},"publishConfig":{"access":"public"},"dependencies":{"@nestjs/microservices":"^11.1.9","rxjs":"^7.8.2","ts-proto":"^2.8.3"},"devDependencies":{"@types/node":"^24.10.1","typescript":"^5.9.3"},"_id":"@3d-outlet/contracts@1.3.5","gitHead":"8ec7722553fa12908da38ec04f21fb6c4ff597e7","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-U3NaQGTSi/LWkJFOqlLIGqaE8dHDust7zEf9hXziKiZCcL/GdR2aFVP3ZsagxPaT8yLi6UtfRtAjArucsnBhqg==","shasum":"99b3ee025027723f7c7a9fb45e597e6257f32573","tarball":"https://registry.npmjs.org/@3d-outlet/contracts/-/contracts-1.3.5.tgz","fileCount":34,"unpackedSize":56253,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC6sMZWxvQYjluHwocRRKltnxdIGk+ZNHhOzCT/XTZKDAIhAO8ouNoHrjPVbiyAHt9ZXOeFrDttzZgE10kOTdcWwj5r"}]},"_npmUser":{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"},"directories":{},"maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/contracts_1.3.5_1768010347933_0.571559983081362"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-08T16:18:40.502Z","modified":"2026-01-10T01:59:08.316Z","1.0.0":"2026-01-08T16:18:40.753Z","1.1.0":"2026-01-09T10:53:45.683Z","1.1.1":"2026-01-09T11:10:06.135Z","1.1.2":"2026-01-09T11:11:03.013Z","1.1.3":"2026-01-09T11:17:22.186Z","1.1.4":"2026-01-09T11:26:44.965Z","1.2.4":"2026-01-09T11:52:11.346Z","1.3.4":"2026-01-09T13:35:34.446Z","1.3.5":"2026-01-10T01:59:08.073Z"},"description":"Protobuf definitions and generated TypeScript types","maintainers":[{"name":"kitty_ilnazik","email":"ilnazm1ngaleev@yandex.com"}],"readme":"<div align=\"center\">\n\n# 📡 @3d-outlet/contracts\n\n**Protobuf definitions and generated TypeScript types for 3D OUTLET microservices**\n\n[![npm version](https://img.shields.io/npm/v/@3d-outlet/contracts?style=for-the-badge)](https://www.npmjs.com/package/@3d-outlet/contracts)\n[![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg?style=for-the-badge)](https://opensource.org/licenses/ISC)\n\n</div>\n\n---\n\n## ✨ Features\n\n- 🔌 **Protobuf Definitions** - Type-safe gRPC service definitions\n- 📦 **TypeScript Types** - Auto-generated TypeScript interfaces from `.proto` files\n- 🚀 **NestJS Integration** - Ready-to-use with NestJS microservices\n- 🔄 **Event Types** - Shared event interfaces for inter-service communication\n- 💎 **Type Safety** - Full type checking across microservices\n\n---\n\n## 📦 Installation\n\n```bash\nnpm install @3d-outlet/contracts\n# or\npnpm add @3d-outlet/contracts\n# or\nyarn add @3d-outlet/contracts\n# or\nbun add @3d-outlet/contracts\n```\n\n---\n\n## 🚀 Quick Start\n\n### Using Protobuf Services\n\n```typescript\nimport { PROTO_PATHS } from '@3d-outlet/contracts'\n\n// In your NestJS microservice\nconst app = await NestFactory.createMicroservice(AppModule, {\n\ttransport: Transport.GRPC,\n\toptions: {\n\t\tprotoPath: PROTO_PATHS.AUTH,\n\t\tpackage: 'auth.v1'\n\t}\n})\n```\n\n### Using Generated Types\n\n```typescript\nimport { SendOtpRequest, SendOtpResponse } from '@3d-outlet/contracts'\n\nasync function sendOtp(data: SendOtpRequest): Promise<SendOtpResponse> {\n\t// Type-safe implementation\n\treturn { ok: true }\n}\n```\n\n### Using Event Interfaces\n\n```typescript\nimport { OtpRequestedEvent } from '@3d-outlet/contracts'\n\nfunction handleOtpRequested(event: OtpRequestedEvent) {\n\tconsole.log(`OTP requested for ${event.identifier}`)\n}\n```\n\n---\n\n## 📁 Project Structure\n\n```\ncontracts/\n├── proto/              # Protobuf definition files\n│   └── auth.proto     # Authentication service definitions\n├── gen/               # Generated TypeScript files (auto-generated)\n│   └── ts/\n├── src/               # Source TypeScript files\n│   ├── events/        # Event interfaces\n│   │   └── auth/      # Auth-related events\n│   └── proto/         # Proto path utilities\n└── dist/              # Compiled JavaScript (after build)\n```\n\n---\n\n## 🛠️ Development\n\n### Prerequisites\n\n- **Node.js**: >= 16.0.0\n- **protoc**: Protocol Buffer compiler\n- **TypeScript**: ^5.9.3\n\n### Installing protoc\n\n**macOS:**\n\n```bash\nbrew install protobuf\n```\n\n**Ubuntu/Debian:**\n\n```bash\nsudo apt-get update && sudo apt-get install -y protobuf-compiler\n```\n\n**Windows:** Download from\n\n### Building the Package\n\n```bash\n# Install dependencies\nnpm install\n# or\npnpm install\n# or\nbun install\n\n# Generate TypeScript from Protobuf\nnpm run generate\n\n# Build TypeScript\nnpm run build\n```\n\n---\n\n## 📋 Available Services\n\n### Auth Service (`auth.v1`)\n\nAuthentication and authorization service with OTP-based authentication.\n\n**RPC Methods:**\n\n- `SendOtp` - Send OTP code to user\n- `VerifyOtp` - Verify OTP code and get tokens\n- `Refresh` - Refresh access token\n\n**Example:**\n\n```typescript\nimport { AuthServiceController } from '@3d-outlet/contracts'\n\n@Controller()\nexport class AuthController implements AuthServiceController {\n\tasync sendOtp(request: SendOtpRequest): Promise<SendOtpResponse> {\n\t\t// Implementation\n\t\treturn { ok: true }\n\t}\n}\n```\n\n---\n\n## 🎯 Usage in NestJS\n\n### Client Side\n\n```typescript\nimport { ClientGrpc } from '@nestjs/microservices'\nimport { AuthServiceClient } from '@3d-outlet/contracts'\n\n@Injectable()\nexport class AuthClient {\n\tprivate authService: AuthServiceClient\n\n\tconstructor(@Inject('AUTH_PACKAGE') private client: ClientGrpc) {}\n\n\tonModuleInit() {\n\t\tthis.authService = this.client.getService<AuthServiceClient>('AuthService')\n\t}\n\n\tasync sendOtp(identifier: string, type: string) {\n\t\treturn this.authService.sendOtp({ identifier, type })\n\t}\n}\n```\n\n### Server Side\n\n```typescript\nimport { PROTO_PATHS } from '@3d-outlet/contracts'\n\n// In main.ts or app.module.ts\nconst microserviceOptions: MicroserviceOptions = {\n\ttransport: Transport.GRPC,\n\toptions: {\n\t\tprotoPath: PROTO_PATHS.AUTH,\n\t\tpackage: 'auth.v1',\n\t\turl: '0.0.0.0:5000'\n\t}\n}\n```\n\n---\n\n## 📝 License\n\nISC © [TeaCoder](mailto:admin@teacoder.ru) & [Ilnaz Mingaleev](mailto:development@teamkaif.com)\n\n---\n\n## 👨‍💻 Authors\n\n**TeaCoder (Vadim)**\n\n- Email: [admin@teacoder.ru](mailto:admin@teacoder.ru)\n\n**Ilnaz Mingaleev**\n\n- Email: [development@teamkaif.com](mailto:development@teamkaif.com)\n\n---\n\n<div align=\"center\">\n\n**Made with ❤️ for the 3D OUTLET project (private repo)**  \nInternal use only.\n\n</div>\n","readmeFilename":"README.md"}