@hive-ng/web-sdk 0.1.0 → 0.1.2
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.
- package/dist/{chunk-NWQONJK2.js → chunk-A2MK5ERC.js} +135 -3
- package/dist/chunk-A2MK5ERC.js.map +1 -0
- package/dist/hive-ng.global.js +2 -2
- package/dist/hive-ng.global.js.map +1 -1
- package/dist/index.cjs +133 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +45 -3
- package/dist/index.d.ts +45 -3
- package/dist/index.js +1 -1
- package/dist/react/index.cjs +133 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-NWQONJK2.js.map +0 -1
package/dist/react/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/gen/hiveng/v1/common_pb.ts","../src/gen/hiveng/v1/auth_pb.ts","../src/errors.ts","../src/auth.ts","../src/config.ts","../src/gen/hiveng/v1/discovery_pb.ts","../src/discovery.ts","../src/gen/hiveng/v1/mailbox_pb.ts","../src/gen/hiveng/v1/notice_pb.ts","../src/gen/hiveng/v1/payment_pb.ts","../src/mailbox.ts","../src/notice.ts","../src/payment.ts","../src/storage.ts","../src/session.ts","../src/transport.ts","../src/hive-ng.ts"],"names":["ErrorCode","fileDesc","IdentityProvider","file_google_protobuf_timestamp","serviceDesc","MailType","timestampDate","resolveLocalized","createClient"],"mappings":"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","file":"chunk-NWQONJK2.js","sourcesContent":["// @generated by protoc-gen-es v2.12.1 with parameter \"target=ts\"\n// @generated from file hiveng/v1/common.proto (package hiveng.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file hiveng/v1/common.proto.\n */\nexport const file_hiveng_v1_common: GenFile = /*@__PURE__*/\n fileDesc(\"ChZoaXZlbmcvdjEvY29tbW9uLnByb3RvEgloaXZlbmcudjEimgEKC0Vycm9yRGV0YWlsEiIKBGNvZGUYASABKA4yFC5oaXZlbmcudjEuRXJyb3JDb2RlEjYKCG1ldGFkYXRhGAIgAygLMiQuaGl2ZW5nLnYxLkVycm9yRGV0YWlsLk1ldGFkYXRhRW50cnkaLwoNTWV0YWRhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjQKC1BhZ2VSZXF1ZXN0EhEKCXBhZ2Vfc2l6ZRgBIAEoBRISCgpwYWdlX3Rva2VuGAIgASgJIjYKDFBhZ2VSZXNwb25zZRIXCg9uZXh0X3BhZ2VfdG9rZW4YASABKAkSDQoFdG90YWwYAiABKAMqhAgKCUVycm9yQ29kZRIaChZFUlJPUl9DT0RFX1VOU1BFQ0lGSUVEEAASFwoTRVJST1JfQ09ERV9JTlRFUk5BTBABEh8KG0VSUk9SX0NPREVfSU5WQUxJRF9BUkdVTUVOVBACEhgKFEVSUk9SX0NPREVfTk9UX0ZPVU5EEAMSHQoZRVJST1JfQ09ERV9BTFJFQURZX0VYSVNUUxAEEiAKHEVSUk9SX0NPREVfUEVSTUlTU0lPTl9ERU5JRUQQBRIeChpFUlJPUl9DT0RFX1VOQVVUSEVOVElDQVRFRBAGEiYKIkVSUk9SX0NPREVfTUFJTlRFTkFOQ0VfSU5fUFJPR1JFU1MQZBIaChZFUlJPUl9DT0RFX0dFT19CTE9DS0VEEGUSKQolRVJST1JfQ09ERV9DTElFTlRfVkVSU0lPTl9VTlNVUFBPUlRFRBBmEh0KGEVSUk9SX0NPREVfUExBWUVSX0JBTk5FRBDIARImCiFFUlJPUl9DT0RFX0lOVkFMSURfUFJPVklERVJfVE9LRU4QyQESJAofRVJST1JfQ09ERV9QUk9WSURFUl9OT1RfRU5BQkxFRBDKARIpCiRFUlJPUl9DT0RFX0NSRURFTlRJQUxfTk9UX0NPTkZJR1VSRUQQywESHwoaRVJST1JfQ09ERV9TRVNTSU9OX0VYUElSRUQQzAESIAobRVJST1JfQ09ERV9QTEFZRVJfTk9UX0ZPVU5EEM0BEiEKHEVSUk9SX0NPREVfRFVQTElDQVRFX1JFQ0VJUFQQrAISKwomRVJST1JfQ09ERV9SRUNFSVBUX1ZFUklGSUNBVElPTl9GQUlMRUQQrQISJAofRVJST1JfQ09ERV9NQVJLRVRfTk9UX1NVUFBPUlRFRBCuAhIfChpFUlJPUl9DT0RFX0FQSV9LRVlfSU5WQUxJRBCQAxIfChpFUlJPUl9DT0RFX0FQSV9LRVlfUkVWT0tFRBCRAxIiCh1FUlJPUl9DT0RFX1NFUlZFUl9LRVlfSU5WQUxJRBCSAxIiCh1FUlJPUl9DT0RFX1NFUlZFUl9LRVlfUkVWT0tFRBCTAxIiCh1FUlJPUl9DT0RFX0FETUlOX0VNQUlMX0VYSVNUUxD0AxIpCiRFUlJPUl9DT0RFX0FETUlOX0lOVkFMSURfQ1JFREVOVElBTFMQ9QMSIwoeRVJST1JfQ09ERV9QQUNLQUdFX05BTUVfRVhJU1RTEPYDEh4KGUVSUk9SX0NPREVfTUFJTF9OT1RfRk9VTkQQ2AQSJAofRVJST1JfQ09ERV9NQUlMX0FMUkVBRFlfQ0xBSU1FRBDZBBIiCh1FUlJPUl9DT0RFX01BSUxfTk9UX0NMQUlNQUJMRRDaBEJhCg1jb20uaGl2ZW5nLnYxQgtDb21tb25Qcm90b1ABogIDSFhYqgIJSGl2ZW5nLlYxygIJSGl2ZW5nXFYx4gIVSGl2ZW5nXFYxXEdQQk1ldGFkYXRh6gIKSGl2ZW5nOjpWMWIGcHJvdG8z\");\n\n/**\n * connect 에러 detail에 담기는 구조화 에러 정보.\n *\n * @generated from message hiveng.v1.ErrorDetail\n */\nexport type ErrorDetail = Message<\"hiveng.v1.ErrorDetail\"> & {\n /**\n * @generated from field: hiveng.v1.ErrorCode code = 1;\n */\n code: ErrorCode;\n\n /**\n * 부가 정보 (예: banned_until, maintenance_ends_at 등 — 코드별로 문서화)\n *\n * @generated from field: map<string, string> metadata = 2;\n */\n metadata: { [key: string]: string };\n};\n\n/**\n * Describes the message hiveng.v1.ErrorDetail.\n * Use `create(ErrorDetailSchema)` to create a new message.\n */\nexport const ErrorDetailSchema: GenMessage<ErrorDetail> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_common, 0);\n\n/**\n * 페이지네이션 요청. page_token은 첫 페이지에서 빈 문자열.\n *\n * @generated from message hiveng.v1.PageRequest\n */\nexport type PageRequest = Message<\"hiveng.v1.PageRequest\"> & {\n /**\n * @generated from field: int32 page_size = 1;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 2;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message hiveng.v1.PageRequest.\n * Use `create(PageRequestSchema)` to create a new message.\n */\nexport const PageRequestSchema: GenMessage<PageRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_common, 1);\n\n/**\n * 페이지네이션 응답. next_page_token이 빈 문자열이면 마지막 페이지.\n *\n * @generated from message hiveng.v1.PageResponse\n */\nexport type PageResponse = Message<\"hiveng.v1.PageResponse\"> & {\n /**\n * @generated from field: string next_page_token = 1;\n */\n nextPageToken: string;\n\n /**\n * @generated from field: int64 total = 2;\n */\n total: bigint;\n};\n\n/**\n * Describes the message hiveng.v1.PageResponse.\n * Use `create(PageResponseSchema)` to create a new message.\n */\nexport const PageResponseSchema: GenMessage<PageResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_common, 2);\n\n/**\n * 모든 도메인 에러의 단일 코드 체계.\n * 백엔드는 connect 에러의 detail에 ErrorDetail을 담아 반환하고,\n * 클라이언트/SDK는 문자열 파싱 없이 이 코드로 분기한다.\n *\n * @generated from enum hiveng.v1.ErrorCode\n */\nexport enum ErrorCode {\n /**\n * @generated from enum value: ERROR_CODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * 공통 (1-99)\n *\n * @generated from enum value: ERROR_CODE_INTERNAL = 1;\n */\n INTERNAL = 1,\n\n /**\n * @generated from enum value: ERROR_CODE_INVALID_ARGUMENT = 2;\n */\n INVALID_ARGUMENT = 2,\n\n /**\n * @generated from enum value: ERROR_CODE_NOT_FOUND = 3;\n */\n NOT_FOUND = 3,\n\n /**\n * @generated from enum value: ERROR_CODE_ALREADY_EXISTS = 4;\n */\n ALREADY_EXISTS = 4,\n\n /**\n * @generated from enum value: ERROR_CODE_PERMISSION_DENIED = 5;\n */\n PERMISSION_DENIED = 5,\n\n /**\n * @generated from enum value: ERROR_CODE_UNAUTHENTICATED = 6;\n */\n UNAUTHENTICATED = 6,\n\n /**\n * 게이트 / 접속 (100-199)\n *\n * @generated from enum value: ERROR_CODE_MAINTENANCE_IN_PROGRESS = 100;\n */\n MAINTENANCE_IN_PROGRESS = 100,\n\n /**\n * @generated from enum value: ERROR_CODE_GEO_BLOCKED = 101;\n */\n GEO_BLOCKED = 101,\n\n /**\n * @generated from enum value: ERROR_CODE_CLIENT_VERSION_UNSUPPORTED = 102;\n */\n CLIENT_VERSION_UNSUPPORTED = 102,\n\n /**\n * 인증 / 플레이어 (200-299)\n *\n * @generated from enum value: ERROR_CODE_PLAYER_BANNED = 200;\n */\n PLAYER_BANNED = 200,\n\n /**\n * @generated from enum value: ERROR_CODE_INVALID_PROVIDER_TOKEN = 201;\n */\n INVALID_PROVIDER_TOKEN = 201,\n\n /**\n * @generated from enum value: ERROR_CODE_PROVIDER_NOT_ENABLED = 202;\n */\n PROVIDER_NOT_ENABLED = 202,\n\n /**\n * @generated from enum value: ERROR_CODE_CREDENTIAL_NOT_CONFIGURED = 203;\n */\n CREDENTIAL_NOT_CONFIGURED = 203,\n\n /**\n * @generated from enum value: ERROR_CODE_SESSION_EXPIRED = 204;\n */\n SESSION_EXPIRED = 204,\n\n /**\n * @generated from enum value: ERROR_CODE_PLAYER_NOT_FOUND = 205;\n */\n PLAYER_NOT_FOUND = 205,\n\n /**\n * 결제 (300-399)\n *\n * @generated from enum value: ERROR_CODE_DUPLICATE_RECEIPT = 300;\n */\n DUPLICATE_RECEIPT = 300,\n\n /**\n * @generated from enum value: ERROR_CODE_RECEIPT_VERIFICATION_FAILED = 301;\n */\n RECEIPT_VERIFICATION_FAILED = 301,\n\n /**\n * @generated from enum value: ERROR_CODE_MARKET_NOT_SUPPORTED = 302;\n */\n MARKET_NOT_SUPPORTED = 302,\n\n /**\n * API Key (400-499)\n *\n * @generated from enum value: ERROR_CODE_API_KEY_INVALID = 400;\n */\n API_KEY_INVALID = 400,\n\n /**\n * @generated from enum value: ERROR_CODE_API_KEY_REVOKED = 401;\n */\n API_KEY_REVOKED = 401,\n\n /**\n * @generated from enum value: ERROR_CODE_SERVER_KEY_INVALID = 402;\n */\n SERVER_KEY_INVALID = 402,\n\n /**\n * @generated from enum value: ERROR_CODE_SERVER_KEY_REVOKED = 403;\n */\n SERVER_KEY_REVOKED = 403,\n\n /**\n * 관리자 / 프로젝트 (500-599)\n *\n * @generated from enum value: ERROR_CODE_ADMIN_EMAIL_EXISTS = 500;\n */\n ADMIN_EMAIL_EXISTS = 500,\n\n /**\n * @generated from enum value: ERROR_CODE_ADMIN_INVALID_CREDENTIALS = 501;\n */\n ADMIN_INVALID_CREDENTIALS = 501,\n\n /**\n * @generated from enum value: ERROR_CODE_PACKAGE_NAME_EXISTS = 502;\n */\n PACKAGE_NAME_EXISTS = 502,\n\n /**\n * 우편함 (600-699)\n *\n * @generated from enum value: ERROR_CODE_MAIL_NOT_FOUND = 600;\n */\n MAIL_NOT_FOUND = 600,\n\n /**\n * @generated from enum value: ERROR_CODE_MAIL_ALREADY_CLAIMED = 601;\n */\n MAIL_ALREADY_CLAIMED = 601,\n\n /**\n * @generated from enum value: ERROR_CODE_MAIL_NOT_CLAIMABLE = 602;\n */\n MAIL_NOT_CLAIMABLE = 602,\n}\n\n/**\n * Describes the enum hiveng.v1.ErrorCode.\n */\nexport const ErrorCodeSchema: GenEnum<ErrorCode> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_common, 0);\n\n","// @generated by protoc-gen-es v2.12.1 with parameter \"target=ts\"\n// @generated from file hiveng/v1/auth.proto (package hiveng.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { PageRequest, PageResponse } from \"./common_pb\";\nimport { file_hiveng_v1_common } from \"./common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file hiveng/v1/auth.proto.\n */\nexport const file_hiveng_v1_auth: GenFile = /*@__PURE__*/\n fileDesc(\"ChRoaXZlbmcvdjEvYXV0aC5wcm90bxIJaGl2ZW5nLnYxIqwCCgZQbGF5ZXISEQoJcGxheWVyX2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDwoHY291bnRyeRgDIAEoCRIuCglwcm92aWRlcnMYBCADKA4yGy5oaXZlbmcudjEuSWRlbnRpdHlQcm92aWRlchIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIxCg1sYXN0X2xvZ2luX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIQCghuaWNrbmFtZRgHIAEoCRINCgVlbWFpbBgIIAEoCRI2ChNsYXN0X2xvZ2luX3BsYXRmb3JtGAkgASgOMhkuaGl2ZW5nLnYxLkNsaWVudFBsYXRmb3JtInUKCVRva2VuUGFpchIUCgxhY2Nlc3NfdG9rZW4YASABKAkSFQoNcmVmcmVzaF90b2tlbhgCIAEoCRI7ChdhY2Nlc3NfdG9rZW5fZXhwaXJlc19hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiWQoWQ291bnRyeVByb3ZpZGVyTWFwcGluZxIPCgdjb3VudHJ5GAEgASgJEi4KCXByb3ZpZGVycxgCIAMoDjIbLmhpdmVuZy52MS5JZGVudGl0eVByb3ZpZGVyImEKGEdldExvZ2luUHJvdmlkZXJzUmVxdWVzdBIYChBjb3VudHJ5X292ZXJyaWRlGAEgASgJEisKCHBsYXRmb3JtGAIgASgOMhkuaGl2ZW5nLnYxLkNsaWVudFBsYXRmb3JtIlwKGUdldExvZ2luUHJvdmlkZXJzUmVzcG9uc2USLgoJcHJvdmlkZXJzGAEgAygOMhsuaGl2ZW5nLnYxLklkZW50aXR5UHJvdmlkZXISDwoHY291bnRyeRgCIAEoCSKOAQoYTG9naW5XaXRoUHJvdmlkZXJSZXF1ZXN0Ei0KCHByb3ZpZGVyGAEgASgOMhsuaGl2ZW5nLnYxLklkZW50aXR5UHJvdmlkZXISFgoOcHJvdmlkZXJfdG9rZW4YAiABKAkSKwoIcGxhdGZvcm0YAyABKA4yGS5oaXZlbmcudjEuQ2xpZW50UGxhdGZvcm0iaAoZTG9naW5XaXRoUHJvdmlkZXJSZXNwb25zZRIhCgZwbGF5ZXIYASABKAsyES5oaXZlbmcudjEuUGxheWVyEigKCnRva2VuX3BhaXIYAiABKAsyFC5oaXZlbmcudjEuVG9rZW5QYWlyIiwKE1JlZnJlc2hUb2tlblJlcXVlc3QSFQoNcmVmcmVzaF90b2tlbhgBIAEoCSJAChRSZWZyZXNoVG9rZW5SZXNwb25zZRIoCgp0b2tlbl9wYWlyGAEgASgLMhQuaGl2ZW5nLnYxLlRva2VuUGFpciIPCg1Mb2dvdXRSZXF1ZXN0IhAKDkxvZ291dFJlc3BvbnNlIhIKEEdldFBsYXllclJlcXVlc3QiNgoRR2V0UGxheWVyUmVzcG9uc2USIQoGcGxheWVyGAEgASgLMhEuaGl2ZW5nLnYxLlBsYXllciIpChVVcGRhdGVOaWNrbmFtZVJlcXVlc3QSEAoIbmlja25hbWUYASABKAkiOwoWVXBkYXRlTmlja25hbWVSZXNwb25zZRIhCgZwbGF5ZXIYASABKAsyES5oaXZlbmcudjEuUGxheWVyIm8KGFNldExvZ2luUHJvdmlkZXJzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEg8KB2NvdW50cnkYAiABKAkSLgoJcHJvdmlkZXJzGAMgAygOMhsuaGl2ZW5nLnYxLklkZW50aXR5UHJvdmlkZXIiGwoZU2V0TG9naW5Qcm92aWRlcnNSZXNwb25zZSI1Ch9HZXRMb2dpblByb3ZpZGVyTWFwcGluZ3NSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkiVwogR2V0TG9naW5Qcm92aWRlck1hcHBpbmdzUmVzcG9uc2USMwoIbWFwcGluZ3MYASADKAsyIS5oaXZlbmcudjEuQ291bnRyeVByb3ZpZGVyTWFwcGluZyJICiFEZWxldGVMb2dpblByb3ZpZGVyTWFwcGluZ1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIPCgdjb3VudHJ5GAIgASgJIiQKIkRlbGV0ZUxvZ2luUHJvdmlkZXJNYXBwaW5nUmVzcG9uc2UijAEKFFNlYXJjaFBsYXllcnNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDQoFcXVlcnkYAiABKAkSJAoEcGFnZRgDIAEoCzIWLmhpdmVuZy52MS5QYWdlUmVxdWVzdBIrCgVmaWVsZBgEIAEoDjIcLmhpdmVuZy52MS5QbGF5ZXJTZWFyY2hGaWVsZCJiChVTZWFyY2hQbGF5ZXJzUmVzcG9uc2USIgoHcGxheWVycxgBIAMoCzIRLmhpdmVuZy52MS5QbGF5ZXISJQoEcGFnZRgCIAEoCzIXLmhpdmVuZy52MS5QYWdlUmVzcG9uc2UiPwoWR2V0UGxheWVyRGV0YWlsUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhEKCXBsYXllcl9pZBgCIAEoCSI8ChdHZXRQbGF5ZXJEZXRhaWxSZXNwb25zZRIhCgZwbGF5ZXIYASABKAsyES5oaXZlbmcudjEuUGxheWVyKsYCChBJZGVudGl0eVByb3ZpZGVyEiEKHUlERU5USVRZX1BST1ZJREVSX1VOU1BFQ0lGSUVEEAASGwoXSURFTlRJVFlfUFJPVklERVJfS0FLQU8QARIbChdJREVOVElUWV9QUk9WSURFUl9OQVZFUhACEhwKGElERU5USVRZX1BST1ZJREVSX0dPT0dMRRADEh4KGklERU5USVRZX1BST1ZJREVSX0ZBQ0VCT09LEAQSGwoXSURFTlRJVFlfUFJPVklERVJfQVBQTEUQBRIaChZJREVOVElUWV9QUk9WSURFUl9MSU5FEAYSIAocSURFTlRJVFlfUFJPVklERVJfVFJVRUNBTExFUhAHEh8KG0lERU5USVRZX1BST1ZJREVSX1BIT05FX09UUBAIEhsKF0lERU5USVRZX1BST1ZJREVSX0dVRVNUEAkqnQEKDkNsaWVudFBsYXRmb3JtEh8KG0NMSUVOVF9QTEFURk9STV9VTlNQRUNJRklFRBAAEhcKE0NMSUVOVF9QTEFURk9STV9XRUIQARIbChdDTElFTlRfUExBVEZPUk1fQU5EUk9JRBACEhcKE0NMSUVOVF9QTEFURk9STV9JT1MQAxIbChdDTElFTlRfUExBVEZPUk1fREVTS1RPUBAEKpwBChFQbGF5ZXJTZWFyY2hGaWVsZBIjCh9QTEFZRVJfU0VBUkNIX0ZJRUxEX1VOU1BFQ0lGSUVEEAASIQodUExBWUVSX1NFQVJDSF9GSUVMRF9QTEFZRVJfSUQQARIgChxQTEFZRVJfU0VBUkNIX0ZJRUxEX05JQ0tOQU1FEAISHQoZUExBWUVSX1NFQVJDSF9GSUVMRF9FTUFJTBADMvwDCgtBdXRoU2VydmljZRJeChFHZXRMb2dpblByb3ZpZGVycxIjLmhpdmVuZy52MS5HZXRMb2dpblByb3ZpZGVyc1JlcXVlc3QaJC5oaXZlbmcudjEuR2V0TG9naW5Qcm92aWRlcnNSZXNwb25zZRJeChFMb2dpbldpdGhQcm92aWRlchIjLmhpdmVuZy52MS5Mb2dpbldpdGhQcm92aWRlclJlcXVlc3QaJC5oaXZlbmcudjEuTG9naW5XaXRoUHJvdmlkZXJSZXNwb25zZRJPCgxSZWZyZXNoVG9rZW4SHi5oaXZlbmcudjEuUmVmcmVzaFRva2VuUmVxdWVzdBofLmhpdmVuZy52MS5SZWZyZXNoVG9rZW5SZXNwb25zZRI9CgZMb2dvdXQSGC5oaXZlbmcudjEuTG9nb3V0UmVxdWVzdBoZLmhpdmVuZy52MS5Mb2dvdXRSZXNwb25zZRJGCglHZXRQbGF5ZXISGy5oaXZlbmcudjEuR2V0UGxheWVyUmVxdWVzdBocLmhpdmVuZy52MS5HZXRQbGF5ZXJSZXNwb25zZRJVCg5VcGRhdGVOaWNrbmFtZRIgLmhpdmVuZy52MS5VcGRhdGVOaWNrbmFtZVJlcXVlc3QaIS5oaXZlbmcudjEuVXBkYXRlTmlja25hbWVSZXNwb25zZTLtAgobQ29uc29sZUxvZ2luUHJvdmlkZXJTZXJ2aWNlEl4KEVNldExvZ2luUHJvdmlkZXJzEiMuaGl2ZW5nLnYxLlNldExvZ2luUHJvdmlkZXJzUmVxdWVzdBokLmhpdmVuZy52MS5TZXRMb2dpblByb3ZpZGVyc1Jlc3BvbnNlEnMKGEdldExvZ2luUHJvdmlkZXJNYXBwaW5ncxIqLmhpdmVuZy52MS5HZXRMb2dpblByb3ZpZGVyTWFwcGluZ3NSZXF1ZXN0GisuaGl2ZW5nLnYxLkdldExvZ2luUHJvdmlkZXJNYXBwaW5nc1Jlc3BvbnNlEnkKGkRlbGV0ZUxvZ2luUHJvdmlkZXJNYXBwaW5nEiwuaGl2ZW5nLnYxLkRlbGV0ZUxvZ2luUHJvdmlkZXJNYXBwaW5nUmVxdWVzdBotLmhpdmVuZy52MS5EZWxldGVMb2dpblByb3ZpZGVyTWFwcGluZ1Jlc3BvbnNlMsQBChRDb25zb2xlUGxheWVyU2VydmljZRJSCg1TZWFyY2hQbGF5ZXJzEh8uaGl2ZW5nLnYxLlNlYXJjaFBsYXllcnNSZXF1ZXN0GiAuaGl2ZW5nLnYxLlNlYXJjaFBsYXllcnNSZXNwb25zZRJYCg9HZXRQbGF5ZXJEZXRhaWwSIS5oaXZlbmcudjEuR2V0UGxheWVyRGV0YWlsUmVxdWVzdBoiLmhpdmVuZy52MS5HZXRQbGF5ZXJEZXRhaWxSZXNwb25zZUJfCg1jb20uaGl2ZW5nLnYxQglBdXRoUHJvdG9QAaICA0hYWKoCCUhpdmVuZy5WMcoCCUhpdmVuZ1xWMeICFUhpdmVuZ1xWMVxHUEJNZXRhZGF0YeoCCkhpdmVuZzo6VjFiBnByb3RvMw\", [file_google_protobuf_timestamp, file_hiveng_v1_common]);\n\n/**\n * 프로젝트 스코프의 플레이어.\n *\n * @generated from message hiveng.v1.Player\n */\nexport type Player = Message<\"hiveng.v1.Player\"> & {\n /**\n * @generated from field: string player_id = 1;\n */\n playerId: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n\n /**\n * ISO 3166-1 alpha-2 대문자 (예: \"KR\")\n *\n * @generated from field: string country = 3;\n */\n country: string;\n\n /**\n * 이 플레이어에 연결된 로그인 수단들\n *\n * @generated from field: repeated hiveng.v1.IdentityProvider providers = 4;\n */\n providers: IdentityProvider[];\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_login_at = 6;\n */\n lastLoginAt?: Timestamp | undefined;\n\n /**\n * 표시용 닉네임. 신규 플레이어 생성 시 서버가 짧은 기본값을 자동 부여한다.\n *\n * @generated from field: string nickname = 7;\n */\n nickname: string;\n\n /**\n * @generated from field: string email = 8;\n */\n email: string;\n\n /**\n * @generated from field: hiveng.v1.ClientPlatform last_login_platform = 9;\n */\n lastLoginPlatform: ClientPlatform;\n};\n\n/**\n * Describes the message hiveng.v1.Player.\n * Use `create(PlayerSchema)` to create a new message.\n */\nexport const PlayerSchema: GenMessage<Player> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 0);\n\n/**\n * 액세스/리프레시 토큰 쌍.\n *\n * @generated from message hiveng.v1.TokenPair\n */\nexport type TokenPair = Message<\"hiveng.v1.TokenPair\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string refresh_token = 2;\n */\n refreshToken: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp access_token_expires_at = 3;\n */\n accessTokenExpiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.TokenPair.\n * Use `create(TokenPairSchema)` to create a new message.\n */\nexport const TokenPairSchema: GenMessage<TokenPair> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 1);\n\n/**\n * 국가별 로그인 수단 매핑. country는 \"DEFAULT\" 허용(기본 매핑).\n *\n * @generated from message hiveng.v1.CountryProviderMapping\n */\nexport type CountryProviderMapping = Message<\"hiveng.v1.CountryProviderMapping\"> & {\n /**\n * @generated from field: string country = 1;\n */\n country: string;\n\n /**\n * 순서 = 클라이언트 노출 순서\n *\n * @generated from field: repeated hiveng.v1.IdentityProvider providers = 2;\n */\n providers: IdentityProvider[];\n};\n\n/**\n * Describes the message hiveng.v1.CountryProviderMapping.\n * Use `create(CountryProviderMappingSchema)` to create a new message.\n */\nexport const CountryProviderMappingSchema: GenMessage<CountryProviderMapping> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 2);\n\n/**\n * @generated from message hiveng.v1.GetLoginProvidersRequest\n */\nexport type GetLoginProvidersRequest = Message<\"hiveng.v1.GetLoginProvidersRequest\"> & {\n /**\n * 테스트용 국가 강제 지정 (선택). 비어 있으면 서버가 IP로 판별.\n *\n * @generated from field: string country_override = 1;\n */\n countryOverride: string;\n\n /**\n * @generated from field: hiveng.v1.ClientPlatform platform = 2;\n */\n platform: ClientPlatform;\n};\n\n/**\n * Describes the message hiveng.v1.GetLoginProvidersRequest.\n * Use `create(GetLoginProvidersRequestSchema)` to create a new message.\n */\nexport const GetLoginProvidersRequestSchema: GenMessage<GetLoginProvidersRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 3);\n\n/**\n * @generated from message hiveng.v1.GetLoginProvidersResponse\n */\nexport type GetLoginProvidersResponse = Message<\"hiveng.v1.GetLoginProvidersResponse\"> & {\n /**\n * 순서 = 클라이언트 노출 순서\n *\n * @generated from field: repeated hiveng.v1.IdentityProvider providers = 1;\n */\n providers: IdentityProvider[];\n\n /**\n * 판별된 국가 (ISO 3166-1 alpha-2)\n *\n * @generated from field: string country = 2;\n */\n country: string;\n};\n\n/**\n * Describes the message hiveng.v1.GetLoginProvidersResponse.\n * Use `create(GetLoginProvidersResponseSchema)` to create a new message.\n */\nexport const GetLoginProvidersResponseSchema: GenMessage<GetLoginProvidersResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 4);\n\n/**\n * @generated from message hiveng.v1.LoginWithProviderRequest\n */\nexport type LoginWithProviderRequest = Message<\"hiveng.v1.LoginWithProviderRequest\"> & {\n /**\n * @generated from field: hiveng.v1.IdentityProvider provider = 1;\n */\n provider: IdentityProvider;\n\n /**\n * IdP 발급 토큰. GUEST는 디바이스 식별자.\n *\n * @generated from field: string provider_token = 2;\n */\n providerToken: string;\n\n /**\n * @generated from field: hiveng.v1.ClientPlatform platform = 3;\n */\n platform: ClientPlatform;\n};\n\n/**\n * Describes the message hiveng.v1.LoginWithProviderRequest.\n * Use `create(LoginWithProviderRequestSchema)` to create a new message.\n */\nexport const LoginWithProviderRequestSchema: GenMessage<LoginWithProviderRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 5);\n\n/**\n * @generated from message hiveng.v1.LoginWithProviderResponse\n */\nexport type LoginWithProviderResponse = Message<\"hiveng.v1.LoginWithProviderResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Player player = 1;\n */\n player?: Player | undefined;\n\n /**\n * @generated from field: hiveng.v1.TokenPair token_pair = 2;\n */\n tokenPair?: TokenPair | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.LoginWithProviderResponse.\n * Use `create(LoginWithProviderResponseSchema)` to create a new message.\n */\nexport const LoginWithProviderResponseSchema: GenMessage<LoginWithProviderResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 6);\n\n/**\n * @generated from message hiveng.v1.RefreshTokenRequest\n */\nexport type RefreshTokenRequest = Message<\"hiveng.v1.RefreshTokenRequest\"> & {\n /**\n * @generated from field: string refresh_token = 1;\n */\n refreshToken: string;\n};\n\n/**\n * Describes the message hiveng.v1.RefreshTokenRequest.\n * Use `create(RefreshTokenRequestSchema)` to create a new message.\n */\nexport const RefreshTokenRequestSchema: GenMessage<RefreshTokenRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 7);\n\n/**\n * @generated from message hiveng.v1.RefreshTokenResponse\n */\nexport type RefreshTokenResponse = Message<\"hiveng.v1.RefreshTokenResponse\"> & {\n /**\n * @generated from field: hiveng.v1.TokenPair token_pair = 1;\n */\n tokenPair?: TokenPair | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.RefreshTokenResponse.\n * Use `create(RefreshTokenResponseSchema)` to create a new message.\n */\nexport const RefreshTokenResponseSchema: GenMessage<RefreshTokenResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 8);\n\n/**\n * @generated from message hiveng.v1.LogoutRequest\n */\nexport type LogoutRequest = Message<\"hiveng.v1.LogoutRequest\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.LogoutRequest.\n * Use `create(LogoutRequestSchema)` to create a new message.\n */\nexport const LogoutRequestSchema: GenMessage<LogoutRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 9);\n\n/**\n * @generated from message hiveng.v1.LogoutResponse\n */\nexport type LogoutResponse = Message<\"hiveng.v1.LogoutResponse\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.LogoutResponse.\n * Use `create(LogoutResponseSchema)` to create a new message.\n */\nexport const LogoutResponseSchema: GenMessage<LogoutResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 10);\n\n/**\n * @generated from message hiveng.v1.GetPlayerRequest\n */\nexport type GetPlayerRequest = Message<\"hiveng.v1.GetPlayerRequest\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.GetPlayerRequest.\n * Use `create(GetPlayerRequestSchema)` to create a new message.\n */\nexport const GetPlayerRequestSchema: GenMessage<GetPlayerRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 11);\n\n/**\n * @generated from message hiveng.v1.GetPlayerResponse\n */\nexport type GetPlayerResponse = Message<\"hiveng.v1.GetPlayerResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Player player = 1;\n */\n player?: Player | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.GetPlayerResponse.\n * Use `create(GetPlayerResponseSchema)` to create a new message.\n */\nexport const GetPlayerResponseSchema: GenMessage<GetPlayerResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 12);\n\n/**\n * @generated from message hiveng.v1.UpdateNicknameRequest\n */\nexport type UpdateNicknameRequest = Message<\"hiveng.v1.UpdateNicknameRequest\"> & {\n /**\n * @generated from field: string nickname = 1;\n */\n nickname: string;\n};\n\n/**\n * Describes the message hiveng.v1.UpdateNicknameRequest.\n * Use `create(UpdateNicknameRequestSchema)` to create a new message.\n */\nexport const UpdateNicknameRequestSchema: GenMessage<UpdateNicknameRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 13);\n\n/**\n * @generated from message hiveng.v1.UpdateNicknameResponse\n */\nexport type UpdateNicknameResponse = Message<\"hiveng.v1.UpdateNicknameResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Player player = 1;\n */\n player?: Player | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpdateNicknameResponse.\n * Use `create(UpdateNicknameResponseSchema)` to create a new message.\n */\nexport const UpdateNicknameResponseSchema: GenMessage<UpdateNicknameResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 14);\n\n/**\n * @generated from message hiveng.v1.SetLoginProvidersRequest\n */\nexport type SetLoginProvidersRequest = Message<\"hiveng.v1.SetLoginProvidersRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * ISO 3166-1 alpha-2 또는 \"DEFAULT\"\n *\n * @generated from field: string country = 2;\n */\n country: string;\n\n /**\n * 순서 = 클라이언트 노출 순서\n *\n * @generated from field: repeated hiveng.v1.IdentityProvider providers = 3;\n */\n providers: IdentityProvider[];\n};\n\n/**\n * Describes the message hiveng.v1.SetLoginProvidersRequest.\n * Use `create(SetLoginProvidersRequestSchema)` to create a new message.\n */\nexport const SetLoginProvidersRequestSchema: GenMessage<SetLoginProvidersRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 15);\n\n/**\n * @generated from message hiveng.v1.SetLoginProvidersResponse\n */\nexport type SetLoginProvidersResponse = Message<\"hiveng.v1.SetLoginProvidersResponse\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.SetLoginProvidersResponse.\n * Use `create(SetLoginProvidersResponseSchema)` to create a new message.\n */\nexport const SetLoginProvidersResponseSchema: GenMessage<SetLoginProvidersResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 16);\n\n/**\n * @generated from message hiveng.v1.GetLoginProviderMappingsRequest\n */\nexport type GetLoginProviderMappingsRequest = Message<\"hiveng.v1.GetLoginProviderMappingsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n};\n\n/**\n * Describes the message hiveng.v1.GetLoginProviderMappingsRequest.\n * Use `create(GetLoginProviderMappingsRequestSchema)` to create a new message.\n */\nexport const GetLoginProviderMappingsRequestSchema: GenMessage<GetLoginProviderMappingsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 17);\n\n/**\n * @generated from message hiveng.v1.GetLoginProviderMappingsResponse\n */\nexport type GetLoginProviderMappingsResponse = Message<\"hiveng.v1.GetLoginProviderMappingsResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.CountryProviderMapping mappings = 1;\n */\n mappings: CountryProviderMapping[];\n};\n\n/**\n * Describes the message hiveng.v1.GetLoginProviderMappingsResponse.\n * Use `create(GetLoginProviderMappingsResponseSchema)` to create a new message.\n */\nexport const GetLoginProviderMappingsResponseSchema: GenMessage<GetLoginProviderMappingsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 18);\n\n/**\n * @generated from message hiveng.v1.DeleteLoginProviderMappingRequest\n */\nexport type DeleteLoginProviderMappingRequest = Message<\"hiveng.v1.DeleteLoginProviderMappingRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * ISO 3166-1 alpha-2 또는 \"DEFAULT\"\n *\n * @generated from field: string country = 2;\n */\n country: string;\n};\n\n/**\n * Describes the message hiveng.v1.DeleteLoginProviderMappingRequest.\n * Use `create(DeleteLoginProviderMappingRequestSchema)` to create a new message.\n */\nexport const DeleteLoginProviderMappingRequestSchema: GenMessage<DeleteLoginProviderMappingRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 19);\n\n/**\n * @generated from message hiveng.v1.DeleteLoginProviderMappingResponse\n */\nexport type DeleteLoginProviderMappingResponse = Message<\"hiveng.v1.DeleteLoginProviderMappingResponse\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.DeleteLoginProviderMappingResponse.\n * Use `create(DeleteLoginProviderMappingResponseSchema)` to create a new message.\n */\nexport const DeleteLoginProviderMappingResponseSchema: GenMessage<DeleteLoginProviderMappingResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 20);\n\n/**\n * @generated from message hiveng.v1.SearchPlayersRequest\n */\nexport type SearchPlayersRequest = Message<\"hiveng.v1.SearchPlayersRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string query = 2;\n */\n query: string;\n\n /**\n * @generated from field: hiveng.v1.PageRequest page = 3;\n */\n page?: PageRequest | undefined;\n\n /**\n * @generated from field: hiveng.v1.PlayerSearchField field = 4;\n */\n field: PlayerSearchField;\n};\n\n/**\n * Describes the message hiveng.v1.SearchPlayersRequest.\n * Use `create(SearchPlayersRequestSchema)` to create a new message.\n */\nexport const SearchPlayersRequestSchema: GenMessage<SearchPlayersRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 21);\n\n/**\n * @generated from message hiveng.v1.SearchPlayersResponse\n */\nexport type SearchPlayersResponse = Message<\"hiveng.v1.SearchPlayersResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.Player players = 1;\n */\n players: Player[];\n\n /**\n * @generated from field: hiveng.v1.PageResponse page = 2;\n */\n page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.SearchPlayersResponse.\n * Use `create(SearchPlayersResponseSchema)` to create a new message.\n */\nexport const SearchPlayersResponseSchema: GenMessage<SearchPlayersResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 22);\n\n/**\n * @generated from message hiveng.v1.GetPlayerDetailRequest\n */\nexport type GetPlayerDetailRequest = Message<\"hiveng.v1.GetPlayerDetailRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string player_id = 2;\n */\n playerId: string;\n};\n\n/**\n * Describes the message hiveng.v1.GetPlayerDetailRequest.\n * Use `create(GetPlayerDetailRequestSchema)` to create a new message.\n */\nexport const GetPlayerDetailRequestSchema: GenMessage<GetPlayerDetailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 23);\n\n/**\n * @generated from message hiveng.v1.GetPlayerDetailResponse\n */\nexport type GetPlayerDetailResponse = Message<\"hiveng.v1.GetPlayerDetailResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Player player = 1;\n */\n player?: Player | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.GetPlayerDetailResponse.\n * Use `create(GetPlayerDetailResponseSchema)` to create a new message.\n */\nexport const GetPlayerDetailResponseSchema: GenMessage<GetPlayerDetailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_auth, 24);\n\n/**\n * 로그인 수단 (IdP).\n *\n * @generated from enum hiveng.v1.IdentityProvider\n */\nexport enum IdentityProvider {\n /**\n * @generated from enum value: IDENTITY_PROVIDER_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_KAKAO = 1;\n */\n KAKAO = 1,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_NAVER = 2;\n */\n NAVER = 2,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_GOOGLE = 3;\n */\n GOOGLE = 3,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_FACEBOOK = 4;\n */\n FACEBOOK = 4,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_APPLE = 5;\n */\n APPLE = 5,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_LINE = 6;\n */\n LINE = 6,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_TRUECALLER = 7;\n */\n TRUECALLER = 7,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_PHONE_OTP = 8;\n */\n PHONE_OTP = 8,\n\n /**\n * @generated from enum value: IDENTITY_PROVIDER_GUEST = 9;\n */\n GUEST = 9,\n}\n\n/**\n * Describes the enum hiveng.v1.IdentityProvider.\n */\nexport const IdentityProviderSchema: GenEnum<IdentityProvider> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_auth, 0);\n\n/**\n * @generated from enum hiveng.v1.ClientPlatform\n */\nexport enum ClientPlatform {\n /**\n * @generated from enum value: CLIENT_PLATFORM_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: CLIENT_PLATFORM_WEB = 1;\n */\n WEB = 1,\n\n /**\n * @generated from enum value: CLIENT_PLATFORM_ANDROID = 2;\n */\n ANDROID = 2,\n\n /**\n * @generated from enum value: CLIENT_PLATFORM_IOS = 3;\n */\n IOS = 3,\n\n /**\n * @generated from enum value: CLIENT_PLATFORM_DESKTOP = 4;\n */\n DESKTOP = 4,\n}\n\n/**\n * Describes the enum hiveng.v1.ClientPlatform.\n */\nexport const ClientPlatformSchema: GenEnum<ClientPlatform> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_auth, 1);\n\n/**\n * @generated from enum hiveng.v1.PlayerSearchField\n */\nexport enum PlayerSearchField {\n /**\n * @generated from enum value: PLAYER_SEARCH_FIELD_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PLAYER_SEARCH_FIELD_PLAYER_ID = 1;\n */\n PLAYER_ID = 1,\n\n /**\n * @generated from enum value: PLAYER_SEARCH_FIELD_NICKNAME = 2;\n */\n NICKNAME = 2,\n\n /**\n * @generated from enum value: PLAYER_SEARCH_FIELD_EMAIL = 3;\n */\n EMAIL = 3,\n}\n\n/**\n * Describes the enum hiveng.v1.PlayerSearchField.\n */\nexport const PlayerSearchFieldSchema: GenEnum<PlayerSearchField> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_auth, 2);\n\n/**\n * 클라이언트 SDK용 인증 서비스.\n *\n * @generated from service hiveng.v1.AuthService\n */\nexport const AuthService: GenService<{\n /**\n * auth: api_key\n * 서버가 요청 IP로 국가를 판별해 해당 국가의 로그인 수단 목록을 반환.\n *\n * @generated from rpc hiveng.v1.AuthService.GetLoginProviders\n */\n getLoginProviders: {\n methodKind: \"unary\";\n input: typeof GetLoginProvidersRequestSchema;\n output: typeof GetLoginProvidersResponseSchema;\n },\n /**\n * auth: api_key\n * IdP 토큰으로 로그인. 게스트는 provider=GUEST, provider_token=디바이스 식별자.\n * 제재 중이면 ERROR_CODE_PLAYER_BANNED + ErrorDetail(metadata: banned_until 등) 반환.\n *\n * @generated from rpc hiveng.v1.AuthService.LoginWithProvider\n */\n loginWithProvider: {\n methodKind: \"unary\";\n input: typeof LoginWithProviderRequestSchema;\n output: typeof LoginWithProviderResponseSchema;\n },\n /**\n * auth: api_key\n *\n * @generated from rpc hiveng.v1.AuthService.RefreshToken\n */\n refreshToken: {\n methodKind: \"unary\";\n input: typeof RefreshTokenRequestSchema;\n output: typeof RefreshTokenResponseSchema;\n },\n /**\n * auth: api_key + player_token\n *\n * @generated from rpc hiveng.v1.AuthService.Logout\n */\n logout: {\n methodKind: \"unary\";\n input: typeof LogoutRequestSchema;\n output: typeof LogoutResponseSchema;\n },\n /**\n * auth: api_key + player_token\n *\n * @generated from rpc hiveng.v1.AuthService.GetPlayer\n */\n getPlayer: {\n methodKind: \"unary\";\n input: typeof GetPlayerRequestSchema;\n output: typeof GetPlayerResponseSchema;\n },\n /**\n * auth: api_key + player_token\n * 플레이어 본인 닉네임 변경. 빈/형식 위반 시 ERROR_CODE_INVALID_ARGUMENT.\n *\n * @generated from rpc hiveng.v1.AuthService.UpdateNickname\n */\n updateNickname: {\n methodKind: \"unary\";\n input: typeof UpdateNicknameRequestSchema;\n output: typeof UpdateNicknameResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_auth, 0);\n\n/**\n * 콘솔·MCP용 국가별 로그인 수단 설정 서비스 (F3).\n *\n * @generated from service hiveng.v1.ConsoleLoginProviderService\n */\nexport const ConsoleLoginProviderService: GenService<{\n /**\n * auth: admin_jwt\n * 국가별 로그인 수단 설정. country=\"DEFAULT\"는 기본 매핑.\n *\n * @generated from rpc hiveng.v1.ConsoleLoginProviderService.SetLoginProviders\n */\n setLoginProviders: {\n methodKind: \"unary\";\n input: typeof SetLoginProvidersRequestSchema;\n output: typeof SetLoginProvidersResponseSchema;\n },\n /**\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsoleLoginProviderService.GetLoginProviderMappings\n */\n getLoginProviderMappings: {\n methodKind: \"unary\";\n input: typeof GetLoginProviderMappingsRequestSchema;\n output: typeof GetLoginProviderMappingsResponseSchema;\n },\n /**\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsoleLoginProviderService.DeleteLoginProviderMapping\n */\n deleteLoginProviderMapping: {\n methodKind: \"unary\";\n input: typeof DeleteLoginProviderMappingRequestSchema;\n output: typeof DeleteLoginProviderMappingResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_auth, 1);\n\n/**\n * 콘솔·MCP용 플레이어 조회 서비스 (F4).\n *\n * @generated from service hiveng.v1.ConsolePlayerService\n */\nexport const ConsolePlayerService: GenService<{\n /**\n * auth: admin_jwt\n * player_id 부분일치 등으로 플레이어 검색.\n *\n * @generated from rpc hiveng.v1.ConsolePlayerService.SearchPlayers\n */\n searchPlayers: {\n methodKind: \"unary\";\n input: typeof SearchPlayersRequestSchema;\n output: typeof SearchPlayersResponseSchema;\n },\n /**\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePlayerService.GetPlayerDetail\n */\n getPlayerDetail: {\n methodKind: \"unary\";\n input: typeof GetPlayerDetailRequestSchema;\n output: typeof GetPlayerDetailResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_auth, 2);\n\n","import { ConnectError } from \"@connectrpc/connect\";\nimport { ErrorCode, ErrorDetailSchema } from \"./gen/hiveng/v1/common_pb\";\nimport type { ErrorDetail } from \"./gen/hiveng/v1/common_pb\";\n\nexport class HiveNgError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string) {\n super(message);\n this.name = \"HiveNgError\";\n this.code = code;\n }\n}\n\nexport class BannedError extends HiveNgError {\n readonly reason: string;\n readonly until?: Date;\n readonly permanent: boolean;\n\n constructor(reason: string, permanent: boolean, until: Date | undefined, message: string) {\n super(\"PLAYER_BANNED\", message);\n this.name = \"BannedError\";\n this.reason = reason;\n this.permanent = permanent;\n this.until = until;\n }\n}\n\nexport class MaintenanceError extends HiveNgError {\n readonly startsAt?: Date;\n readonly endsAt?: Date;\n readonly maintenanceMessage: string;\n\n constructor(message: string, startsAt: Date | undefined, endsAt: Date | undefined) {\n super(\"MAINTENANCE_IN_PROGRESS\", message);\n this.name = \"MaintenanceError\";\n this.maintenanceMessage = message;\n this.startsAt = startsAt;\n this.endsAt = endsAt;\n }\n}\n\nexport function errorDetailOf(err: unknown): ErrorDetail | undefined {\n if (!(err instanceof ConnectError)) {\n return undefined;\n }\n return err.findDetails(ErrorDetailSchema)[0];\n}\n\nexport function errorCodeOf(err: unknown): ErrorCode {\n const detail = errorDetailOf(err);\n if (!detail) {\n return ErrorCode.UNSPECIFIED;\n }\n return detail.code;\n}\n\nexport function errorCodeName(code: ErrorCode): string {\n return ErrorCode[code] ?? `CODE_${code}`;\n}\n\nfunction bannedErrorFrom(detail: ErrorDetail, message: string): BannedError {\n const meta = detail.metadata;\n const permanent = meta[\"permanent\"] === \"true\";\n const untilRaw = meta[\"until\"] ?? meta[\"banned_until\"];\n const until = untilRaw === undefined ? undefined : new Date(untilRaw);\n return new BannedError(meta[\"reason\"] ?? message, permanent, until, message);\n}\n\nfunction maintenanceErrorFrom(detail: ErrorDetail, message: string): MaintenanceError {\n const meta = detail.metadata;\n const startsAtRaw = meta[\"starts_at\"];\n const endsAtRaw = meta[\"ends_at\"];\n const startsAt = startsAtRaw === undefined ? undefined : new Date(startsAtRaw);\n const endsAt = endsAtRaw === undefined ? undefined : new Date(endsAtRaw);\n return new MaintenanceError(meta[\"message\"] ?? message, startsAt, endsAt);\n}\n\nexport function toHiveNgError(err: unknown): unknown {\n const detail = errorDetailOf(err);\n if (!detail) {\n return err;\n }\n const message = (err as ConnectError).rawMessage;\n if (detail.code === ErrorCode.PLAYER_BANNED) {\n return bannedErrorFrom(detail, message);\n }\n if (detail.code === ErrorCode.MAINTENANCE_IN_PROGRESS) {\n return maintenanceErrorFrom(detail, message);\n }\n return new HiveNgError(errorCodeName(detail.code), message);\n}\n","import { timestampDate } from \"@bufbuild/protobuf/wkt\";\nimport type { Client } from \"@connectrpc/connect\";\nimport {\n AuthService,\n ClientPlatform,\n IdentityProvider,\n type Player as PlayerMessage,\n} from \"./gen/hiveng/v1/auth_pb\";\nimport { HiveNgError, toHiveNgError } from \"./errors\";\nimport type { Session } from \"./session\";\nimport type { LoginProviders, Player } from \"./types\";\n\nconst PROVIDER_NAMES: { [value: number]: string } = {\n [IdentityProvider.KAKAO]: \"kakao\",\n [IdentityProvider.NAVER]: \"naver\",\n [IdentityProvider.GOOGLE]: \"google\",\n [IdentityProvider.FACEBOOK]: \"facebook\",\n [IdentityProvider.APPLE]: \"apple\",\n [IdentityProvider.LINE]: \"line\",\n [IdentityProvider.TRUECALLER]: \"truecaller\",\n [IdentityProvider.PHONE_OTP]: \"phone_otp\",\n [IdentityProvider.GUEST]: \"guest\",\n};\n\nconst PLATFORM_NAMES: { [value: number]: string } = {\n [ClientPlatform.WEB]: \"web\",\n [ClientPlatform.ANDROID]: \"android\",\n [ClientPlatform.IOS]: \"ios\",\n};\n\nexport function providerName(provider: IdentityProvider): string {\n return PROVIDER_NAMES[provider] ?? \"unspecified\";\n}\n\nfunction platformName(platform: ClientPlatform): string {\n return PLATFORM_NAMES[platform] ?? \"unspecified\";\n}\n\nfunction mapPlayer(message: PlayerMessage): Player {\n return {\n playerId: message.playerId,\n projectId: message.projectId,\n country: message.country,\n email: message.email,\n nickname: message.nickname,\n lastLoginPlatform: platformName(message.lastLoginPlatform),\n providers: message.providers.map(providerName),\n createdAt: message.createdAt ? timestampDate(message.createdAt) : undefined,\n lastLoginAt: message.lastLoginAt ? timestampDate(message.lastLoginAt) : undefined,\n };\n}\n\nexport type AuthClient = Client<typeof AuthService>;\n\nexport class AuthApi {\n private player: Player | null = null;\n private client: AuthClient | null = null;\n\n constructor(private readonly session: Session) {}\n\n bind(client: AuthClient): void {\n this.client = client;\n }\n\n async getLoginProviders(countryOverride = \"\"): Promise<LoginProviders> {\n const client = this.requireClient();\n try {\n const res = await client.getLoginProviders({\n countryOverride,\n platform: ClientPlatform.WEB,\n });\n return {\n providers: res.providers.map(providerName),\n country: res.country,\n };\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n // 클라이언트가 Google Sign-In으로 획득한 idToken으로 로그인한다.\n async loginWithGoogle(idToken: string): Promise<Player> {\n if (!idToken) {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"idToken is required\");\n }\n return this.login(IdentityProvider.GOOGLE, idToken);\n }\n\n // 외부 IdP 없이 디바이스 식별자로 게스트 계정에 로그인한다.\n async loginAsGuest(deviceId: string): Promise<Player> {\n if (!deviceId) {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"deviceId is required\");\n }\n return this.login(IdentityProvider.GUEST, deviceId);\n }\n\n // 저장된 토큰으로 세션을 복원한다. 토큰이 없거나 만료·무효면 null.\n async restoreSession(): Promise<Player | null> {\n if (this.session.accessToken === null) {\n return null;\n }\n const client = this.requireClient();\n try {\n return await this.fetchPlayer(client);\n } catch {\n return null;\n }\n }\n\n async getPlayer(): Promise<Player | null> {\n if (this.session.accessToken === null) {\n return null;\n }\n const client = this.requireClient();\n try {\n return await this.fetchPlayer(client);\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n async logout(): Promise<void> {\n const client = this.requireClient();\n if (this.session.accessToken !== null) {\n try {\n await client.logout({});\n } catch {\n // 서버 로그아웃 실패와 무관하게 로컬 세션 정리는 보장한다\n }\n }\n this.session.clear();\n this.player = null;\n }\n\n currentPlayer(): Player | null {\n return this.player;\n }\n\n clearPlayer(): void {\n this.player = null;\n }\n\n private async login(provider: IdentityProvider, providerToken: string): Promise<Player> {\n const client = this.requireClient();\n try {\n const res = await client.loginWithProvider({\n provider,\n providerToken,\n platform: ClientPlatform.WEB,\n });\n if (!res.player || !res.tokenPair) {\n throw new HiveNgError(\"INTERNAL\", \"login response missing player or token pair\");\n }\n this.session.save(res.tokenPair);\n this.player = mapPlayer(res.player);\n return this.player;\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n private async fetchPlayer(client: AuthClient): Promise<Player | null> {\n const res = await client.getPlayer({});\n if (!res.player) {\n return null;\n }\n this.player = mapPlayer(res.player);\n return this.player;\n }\n\n private requireClient(): AuthClient {\n if (this.client === null) {\n throw new HiveNgError(\"FAILED_PRECONDITION\", \"HiveNg not initialized — call init() first\");\n }\n return this.client;\n }\n}\n","import type { Interceptor, Transport } from \"@connectrpc/connect\";\nimport { HiveNgError } from \"./errors\";\n\nexport interface TransportFactoryOptions {\n baseUrl: string;\n interceptors: Interceptor[];\n}\n\nexport type TransportFactory = (options: TransportFactoryOptions) => Transport;\n\nexport interface HiveNgConfig {\n // 디스커버리 게이트웨이 베이스 URL (예: \"https://gateway.hive-ng.io\")\n gatewayUrl: string;\n projectId: string;\n apiKey: string;\n clientVersion?: string;\n language?: string;\n debug?: boolean;\n // true면 localStorage에 세션 저장. 기본은 인메모리.\n persistSession?: boolean;\n // 테스트 주입용 훅 — 운영 코드는 기본값 사용\n transportFactory?: TransportFactory;\n}\n\nexport interface ResolvedConfig {\n gatewayUrl: string;\n projectId: string;\n apiKey: string;\n clientVersion: string;\n language: string;\n debug: boolean;\n persistSession: boolean;\n}\n\nfunction trimTrailingSlash(url: string): string {\n return url.replace(/\\/+$/, \"\");\n}\n\nfunction defaultLanguage(): string {\n if (typeof navigator !== \"undefined\" && navigator.language) {\n return navigator.language;\n }\n return \"en\";\n}\n\nexport function resolveConfig(config: HiveNgConfig): ResolvedConfig {\n const gatewayUrl = trimTrailingSlash(config.gatewayUrl ?? \"\");\n const projectId = config.projectId?.trim() ?? \"\";\n if (gatewayUrl === \"\") {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"gatewayUrl is required\");\n }\n if (!config.apiKey) {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"apiKey is required\");\n }\n if (projectId === \"\") {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"projectId is required\");\n }\n return {\n gatewayUrl,\n projectId,\n apiKey: config.apiKey,\n clientVersion: config.clientVersion ?? \"\",\n language: config.language ?? defaultLanguage(),\n debug: config.debug ?? false,\n persistSession: config.persistSession ?? false,\n };\n}\n","// @generated by protoc-gen-es v2.12.1 with parameter \"target=ts\"\n// @generated from file hiveng/v1/discovery.proto (package hiveng.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file hiveng/v1/discovery.proto.\n */\nexport const file_hiveng_v1_discovery: GenFile = /*@__PURE__*/\n fileDesc(\"ChloaXZlbmcvdjEvZGlzY292ZXJ5LnByb3RvEgloaXZlbmcudjEiMQoNRW5kcG9pbnRFbnRyeRIOCgZkb21haW4YASABKAkSEAoIYmFzZV91cmwYAiABKAkiXAoXUmVzb2x2ZUVuZHBvaW50c1JlcXVlc3QSFgoOY2xpZW50X3ZlcnNpb24YASABKAkSEgoKcHJvamVjdF9pZBgFIAEoCUoECAIQA1IPcmVnaW9uX292ZXJyaWRlIpsBChhSZXNvbHZlRW5kcG9pbnRzUmVzcG9uc2USKwoJZW5kcG9pbnRzGAEgAygLMhguaGl2ZW5nLnYxLkVuZHBvaW50RW50cnkSLwoLc2VydmVyX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC3R0bF9zZWNvbmRzGAQgASgFSgQIAhADUgZyZWdpb24ybwoQRGlzY292ZXJ5U2VydmljZRJbChBSZXNvbHZlRW5kcG9pbnRzEiIuaGl2ZW5nLnYxLlJlc29sdmVFbmRwb2ludHNSZXF1ZXN0GiMuaGl2ZW5nLnYxLlJlc29sdmVFbmRwb2ludHNSZXNwb25zZUJkCg1jb20uaGl2ZW5nLnYxQg5EaXNjb3ZlcnlQcm90b1ABogIDSFhYqgIJSGl2ZW5nLlYxygIJSGl2ZW5nXFYx4gIVSGl2ZW5nXFYxXEdQQk1ldGFkYXRh6gIKSGl2ZW5nOjpWMWIGcHJvdG8z\", [file_google_protobuf_timestamp]);\n\n/**\n * 단일 도메인의 접속 주소.\n *\n * @generated from message hiveng.v1.EndpointEntry\n */\nexport type EndpointEntry = Message<\"hiveng.v1.EndpointEntry\"> & {\n /**\n * 도메인 키 (예: \"auth\", \"payment\", \"gate\", \"notice\").\n *\n * @generated from field: string domain = 1;\n */\n domain: string;\n\n /**\n * SDK가 해당 도메인 RPC에 사용할 베이스 URL (예: \"https://auth.hive-ng.io\").\n *\n * @generated from field: string base_url = 2;\n */\n baseUrl: string;\n};\n\n/**\n * Describes the message hiveng.v1.EndpointEntry.\n * Use `create(EndpointEntrySchema)` to create a new message.\n */\nexport const EndpointEntrySchema: GenMessage<EndpointEntry> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_discovery, 0);\n\n/**\n * @generated from message hiveng.v1.ResolveEndpointsRequest\n */\nexport type ResolveEndpointsRequest = Message<\"hiveng.v1.ResolveEndpointsRequest\"> & {\n /**\n * 클라이언트 버전 (예: \"1.2.3\").\n *\n * @generated from field: string client_version = 1;\n */\n clientVersion: string;\n\n /**\n * @generated from field: string project_id = 5;\n */\n projectId: string;\n};\n\n/**\n * Describes the message hiveng.v1.ResolveEndpointsRequest.\n * Use `create(ResolveEndpointsRequestSchema)` to create a new message.\n */\nexport const ResolveEndpointsRequestSchema: GenMessage<ResolveEndpointsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_discovery, 1);\n\n/**\n * @generated from message hiveng.v1.ResolveEndpointsResponse\n */\nexport type ResolveEndpointsResponse = Message<\"hiveng.v1.ResolveEndpointsResponse\"> & {\n /**\n * 호출 프로젝트에 대해 해석된 도메인별 엔드포인트 목록.\n *\n * @generated from field: repeated hiveng.v1.EndpointEntry endpoints = 1;\n */\n endpoints: EndpointEntry[];\n\n /**\n * 서버 현재 시각 (UTC).\n *\n * @generated from field: google.protobuf.Timestamp server_time = 3;\n */\n serverTime?: Timestamp | undefined;\n\n /**\n * SDK 캐시 권장 TTL (초).\n *\n * @generated from field: int32 ttl_seconds = 4;\n */\n ttlSeconds: number;\n};\n\n/**\n * Describes the message hiveng.v1.ResolveEndpointsResponse.\n * Use `create(ResolveEndpointsResponseSchema)` to create a new message.\n */\nexport const ResolveEndpointsResponseSchema: GenMessage<ResolveEndpointsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_discovery, 2);\n\n/**\n * SDK 디스커버리 서비스 (클라이언트 전용).\n *\n * @generated from service hiveng.v1.DiscoveryService\n */\nexport const DiscoveryService: GenService<{\n /**\n * 도메인별 실제 접속 주소를 단일 호출로 반환한다.\n *\n * @generated from rpc hiveng.v1.DiscoveryService.ResolveEndpoints\n */\n resolveEndpoints: {\n methodKind: \"unary\";\n input: typeof ResolveEndpointsRequestSchema;\n output: typeof ResolveEndpointsResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_discovery, 0);\n\n","import { createClient, type Transport } from \"@connectrpc/connect\";\nimport { DiscoveryService } from \"./gen/hiveng/v1/discovery_pb\";\nimport { HiveNgError } from \"./errors\";\n\nexport interface ResolvedEndpoints {\n // 도메인 키(\"auth\" 등) → 베이스 URL\n endpoints: Map<string, string>;\n ttlSeconds: number;\n}\n\nexport async function resolveEndpoints(\n transport: Transport,\n clientVersion: string,\n projectId: string,\n): Promise<ResolvedEndpoints> {\n const client = createClient(DiscoveryService, transport);\n const res = await client.resolveEndpoints({ clientVersion, projectId });\n const endpoints = new Map<string, string>();\n for (const entry of res.endpoints) {\n endpoints.set(entry.domain, entry.baseUrl);\n }\n return { endpoints, ttlSeconds: res.ttlSeconds };\n}\n\nexport function requireEndpoint(endpoints: Map<string, string>, domain: string): string {\n const base = endpoints.get(domain);\n if (base === undefined || base === \"\") {\n throw new HiveNgError(\"NOT_FOUND\", `discovery returned no endpoint for domain: ${domain}`);\n }\n return base;\n}\n","// @generated by protoc-gen-es v2.12.1 with parameter \"target=ts\"\n// @generated from file hiveng/v1/mailbox.proto (package hiveng.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { PageRequest, PageResponse } from \"./common_pb\";\nimport { file_hiveng_v1_common } from \"./common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file hiveng/v1/mailbox.proto.\n */\nexport const file_hiveng_v1_mailbox: GenFile = /*@__PURE__*/\n fileDesc(\"ChdoaXZlbmcvdjEvbWFpbGJveC5wcm90bxIJaGl2ZW5nLnYxIpoFCgRNYWlsEgoKAmlkGAEgASgJEg8KB21haWxfaWQYAiABKAkSEgoKcHJvamVjdF9pZBgDIAEoCRIhCgR0eXBlGAQgASgOMhMuaGl2ZW5nLnYxLk1haWxUeXBlEikKBXRpdGxlGAUgAygLMhouaGl2ZW5nLnYxLk1haWwuVGl0bGVFbnRyeRInCgRib2R5GAYgAygLMhkuaGl2ZW5nLnYxLk1haWwuQm9keUVudHJ5Eg4KBnNlbmRlchgHIAEoCRI6Cg5yZXdhcmRfcHJldmlldxgIIAMoCzIiLmhpdmVuZy52MS5NYWlsLlJld2FyZFByZXZpZXdFbnRyeRIPCgdjbGFpbWVkGAkgASgIEjIKDmNsYWltYWJsZV9mcm9tGAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpleHBpcmVzX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjbGFpbWVkX2F0GAwgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg5yZXdhcmRfZGlzcGxheRgOIAMoCzIgLmhpdmVuZy52MS5NYWlsUmV3YXJkRGlzcGxheUl0ZW0aLAoKVGl0bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGisKCUJvZHlFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjQKElJld2FyZFByZXZpZXdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIkYKFU1haWxSZXdhcmREaXNwbGF5SXRlbRIMCgRpY29uGAEgASgJEg0KBWxhYmVsGAIgASgJEhAKCHF1YW50aXR5GAMgASgJIskFCgtDb25zb2xlTWFpbBIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEiEKBHR5cGUYAyABKA4yEy5oaXZlbmcudjEuTWFpbFR5cGUSKQoIYXVkaWVuY2UYBCABKA4yFy5oaXZlbmcudjEuTWFpbEF1ZGllbmNlEjAKBXRpdGxlGAUgAygLMiEuaGl2ZW5nLnYxLkNvbnNvbGVNYWlsLlRpdGxlRW50cnkSLgoEYm9keRgGIAMoCzIgLmhpdmVuZy52MS5Db25zb2xlTWFpbC5Cb2R5RW50cnkSDgoGc2VuZGVyGAcgASgJEhYKDnJld2FyZF9wYXlsb2FkGAggASgJEkEKDnJld2FyZF9wcmV2aWV3GAkgAygLMikuaGl2ZW5nLnYxLkNvbnNvbGVNYWlsLlJld2FyZFByZXZpZXdFbnRyeRIZChF0YXJnZXRfcGxheWVyX2lkcxgKIAMoCRIyCg5jbGFpbWFibGVfZnJvbRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKY3JlYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgOIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDwoHZGVsZXRlZBgPIAEoCBosCgpUaXRsZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKwoJQm9keUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNAoSUmV3YXJkUHJldmlld0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEiUAoPTGlzdE1haWxSZXF1ZXN0EiQKBHBhZ2UYASABKAsyFi5oaXZlbmcudjEuUGFnZVJlcXVlc3QSFwoPaW5jbHVkZV9jbGFpbWVkGAIgASgIIlgKEExpc3RNYWlsUmVzcG9uc2USHQoEbWFpbBgBIAMoCzIPLmhpdmVuZy52MS5NYWlsEiUKBHBhZ2UYAiABKAsyFy5oaXZlbmcudjEuUGFnZVJlc3BvbnNlIhUKE0NoZWNrTmV3TWFpbFJlcXVlc3QiQgoUQ2hlY2tOZXdNYWlsUmVzcG9uc2USFAoMaGFzX25ld19tYWlsGAEgASgIEhQKDHVucmVhZF9jb3VudBgCIAEoAyItChBDbGFpbU1haWxSZXF1ZXN0EhkKEW1haWxfcmVjaXBpZW50X2lkGAEgASgJIjIKEUNsYWltTWFpbFJlc3BvbnNlEh0KBG1haWwYASABKAsyDy5oaXZlbmcudjEuTWFpbCLkBAoRQ3JlYXRlTWFpbFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIhCgR0eXBlGAIgASgOMhMuaGl2ZW5nLnYxLk1haWxUeXBlEikKCGF1ZGllbmNlGAMgASgOMhcuaGl2ZW5nLnYxLk1haWxBdWRpZW5jZRI2CgV0aXRsZRgEIAMoCzInLmhpdmVuZy52MS5DcmVhdGVNYWlsUmVxdWVzdC5UaXRsZUVudHJ5EjQKBGJvZHkYBSADKAsyJi5oaXZlbmcudjEuQ3JlYXRlTWFpbFJlcXVlc3QuQm9keUVudHJ5Eg4KBnNlbmRlchgGIAEoCRIWCg5yZXdhcmRfcGF5bG9hZBgHIAEoCRJHCg5yZXdhcmRfcHJldmlldxgIIAMoCzIvLmhpdmVuZy52MS5DcmVhdGVNYWlsUmVxdWVzdC5SZXdhcmRQcmV2aWV3RW50cnkSGQoRdGFyZ2V0X3BsYXllcl9pZHMYCSADKAkSMgoOY2xhaW1hYmxlX2Zyb20YCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGiwKClRpdGxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARorCglCb2R5RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARo0ChJSZXdhcmRQcmV2aWV3RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI6ChJDcmVhdGVNYWlsUmVzcG9uc2USJAoEbWFpbBgBIAEoCzIWLmhpdmVuZy52MS5Db25zb2xlTWFpbCL1BAoRVXBkYXRlTWFpbFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIPCgdtYWlsX2lkGAIgASgJEiEKBHR5cGUYAyABKA4yEy5oaXZlbmcudjEuTWFpbFR5cGUSKQoIYXVkaWVuY2UYBCABKA4yFy5oaXZlbmcudjEuTWFpbEF1ZGllbmNlEjYKBXRpdGxlGAUgAygLMicuaGl2ZW5nLnYxLlVwZGF0ZU1haWxSZXF1ZXN0LlRpdGxlRW50cnkSNAoEYm9keRgGIAMoCzImLmhpdmVuZy52MS5VcGRhdGVNYWlsUmVxdWVzdC5Cb2R5RW50cnkSDgoGc2VuZGVyGAcgASgJEhYKDnJld2FyZF9wYXlsb2FkGAggASgJEkcKDnJld2FyZF9wcmV2aWV3GAkgAygLMi8uaGl2ZW5nLnYxLlVwZGF0ZU1haWxSZXF1ZXN0LlJld2FyZFByZXZpZXdFbnRyeRIZChF0YXJnZXRfcGxheWVyX2lkcxgKIAMoCRIyCg5jbGFpbWFibGVfZnJvbRgLIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKZXhwaXJlc19hdBgMIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAaLAoKVGl0bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGisKCUJvZHlFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjQKElJld2FyZFByZXZpZXdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIjoKElVwZGF0ZU1haWxSZXNwb25zZRIkCgRtYWlsGAEgASgLMhYuaGl2ZW5nLnYxLkNvbnNvbGVNYWlsIjgKEURlbGV0ZU1haWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSDwoHbWFpbF9pZBgCIAEoCSIUChJEZWxldGVNYWlsUmVzcG9uc2UiNQoOR2V0TWFpbFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIPCgdtYWlsX2lkGAIgASgJIjcKD0dldE1haWxSZXNwb25zZRIkCgRtYWlsGAEgASgLMhYuaGl2ZW5nLnYxLkNvbnNvbGVNYWlsIrMBChBMaXN0TWFpbHNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSJAoEcGFnZRgCIAEoCzIWLmhpdmVuZy52MS5QYWdlUmVxdWVzdBIhCgR0eXBlGAMgASgOMhMuaGl2ZW5nLnYxLk1haWxUeXBlEikKCGF1ZGllbmNlGAQgASgOMhcuaGl2ZW5nLnYxLk1haWxBdWRpZW5jZRIXCg9pbmNsdWRlX2RlbGV0ZWQYBSABKAgiYAoRTGlzdE1haWxzUmVzcG9uc2USJAoEbWFpbBgBIAMoCzIWLmhpdmVuZy52MS5Db25zb2xlTWFpbBIlCgRwYWdlGAIgASgLMhcuaGl2ZW5nLnYxLlBhZ2VSZXNwb25zZSpNCghNYWlsVHlwZRIZChVNQUlMX1RZUEVfVU5TUEVDSUZJRUQQABISCg5NQUlMX1RZUEVfVEVYVBABEhIKDk1BSUxfVFlQRV9JVEVNEAIqYgoMTWFpbEF1ZGllbmNlEh0KGU1BSUxfQVVESUVOQ0VfVU5TUEVDSUZJRUQQABIVChFNQUlMX0FVRElFTkNFX0FMTBABEhwKGE1BSUxfQVVESUVOQ0VfSU5ESVZJRFVBTBACMu4BCg5NYWlsYm94U2VydmljZRJDCghMaXN0TWFpbBIaLmhpdmVuZy52MS5MaXN0TWFpbFJlcXVlc3QaGy5oaXZlbmcudjEuTGlzdE1haWxSZXNwb25zZRJPCgxDaGVja05ld01haWwSHi5oaXZlbmcudjEuQ2hlY2tOZXdNYWlsUmVxdWVzdBofLmhpdmVuZy52MS5DaGVja05ld01haWxSZXNwb25zZRJGCglDbGFpbU1haWwSGy5oaXZlbmcudjEuQ2xhaW1NYWlsUmVxdWVzdBocLmhpdmVuZy52MS5DbGFpbU1haWxSZXNwb25zZTKCAwoVQ29uc29sZU1haWxib3hTZXJ2aWNlEkkKCkNyZWF0ZU1haWwSHC5oaXZlbmcudjEuQ3JlYXRlTWFpbFJlcXVlc3QaHS5oaXZlbmcudjEuQ3JlYXRlTWFpbFJlc3BvbnNlEkkKClVwZGF0ZU1haWwSHC5oaXZlbmcudjEuVXBkYXRlTWFpbFJlcXVlc3QaHS5oaXZlbmcudjEuVXBkYXRlTWFpbFJlc3BvbnNlEkkKCkRlbGV0ZU1haWwSHC5oaXZlbmcudjEuRGVsZXRlTWFpbFJlcXVlc3QaHS5oaXZlbmcudjEuRGVsZXRlTWFpbFJlc3BvbnNlEkAKB0dldE1haWwSGS5oaXZlbmcudjEuR2V0TWFpbFJlcXVlc3QaGi5oaXZlbmcudjEuR2V0TWFpbFJlc3BvbnNlEkYKCUxpc3RNYWlscxIbLmhpdmVuZy52MS5MaXN0TWFpbHNSZXF1ZXN0GhwuaGl2ZW5nLnYxLkxpc3RNYWlsc1Jlc3BvbnNlQmIKDWNvbS5oaXZlbmcudjFCDE1haWxib3hQcm90b1ABogIDSFhYqgIJSGl2ZW5nLlYxygIJSGl2ZW5nXFYx4gIVSGl2ZW5nXFYxXEdQQk1ldGFkYXRh6gIKSGl2ZW5nOjpWMWIGcHJvdG8z\", [file_google_protobuf_timestamp, file_hiveng_v1_common]);\n\n/**\n * @generated from message hiveng.v1.Mail\n */\nexport type Mail = Message<\"hiveng.v1.Mail\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string mail_id = 2;\n */\n mailId: string;\n\n /**\n * @generated from field: string project_id = 3;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.MailType type = 4;\n */\n type: MailType;\n\n /**\n * @generated from field: map<string, string> title = 5;\n */\n title: { [key: string]: string };\n\n /**\n * @generated from field: map<string, string> body = 6;\n */\n body: { [key: string]: string };\n\n /**\n * @generated from field: string sender = 7;\n */\n sender: string;\n\n /**\n * @generated from field: map<string, string> reward_preview = 8;\n */\n rewardPreview: { [key: string]: string };\n\n /**\n * @generated from field: bool claimed = 9;\n */\n claimed: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp claimable_from = 10;\n */\n claimableFrom?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 11;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp claimed_at = 12;\n */\n claimedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 13;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: repeated hiveng.v1.MailRewardDisplayItem reward_display = 14;\n */\n rewardDisplay: MailRewardDisplayItem[];\n};\n\n/**\n * Describes the message hiveng.v1.Mail.\n * Use `create(MailSchema)` to create a new message.\n */\nexport const MailSchema: GenMessage<Mail> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 0);\n\n/**\n * @generated from message hiveng.v1.MailRewardDisplayItem\n */\nexport type MailRewardDisplayItem = Message<\"hiveng.v1.MailRewardDisplayItem\"> & {\n /**\n * @generated from field: string icon = 1;\n */\n icon: string;\n\n /**\n * @generated from field: string label = 2;\n */\n label: string;\n\n /**\n * @generated from field: string quantity = 3;\n */\n quantity: string;\n};\n\n/**\n * Describes the message hiveng.v1.MailRewardDisplayItem.\n * Use `create(MailRewardDisplayItemSchema)` to create a new message.\n */\nexport const MailRewardDisplayItemSchema: GenMessage<MailRewardDisplayItem> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 1);\n\n/**\n * @generated from message hiveng.v1.ConsoleMail\n */\nexport type ConsoleMail = Message<\"hiveng.v1.ConsoleMail\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.MailType type = 3;\n */\n type: MailType;\n\n /**\n * @generated from field: hiveng.v1.MailAudience audience = 4;\n */\n audience: MailAudience;\n\n /**\n * @generated from field: map<string, string> title = 5;\n */\n title: { [key: string]: string };\n\n /**\n * @generated from field: map<string, string> body = 6;\n */\n body: { [key: string]: string };\n\n /**\n * @generated from field: string sender = 7;\n */\n sender: string;\n\n /**\n * @generated from field: string reward_payload = 8;\n */\n rewardPayload: string;\n\n /**\n * @generated from field: map<string, string> reward_preview = 9;\n */\n rewardPreview: { [key: string]: string };\n\n /**\n * @generated from field: repeated string target_player_ids = 10;\n */\n targetPlayerIds: string[];\n\n /**\n * @generated from field: google.protobuf.Timestamp claimable_from = 11;\n */\n claimableFrom?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 12;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 13;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 14;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: bool deleted = 15;\n */\n deleted: boolean;\n};\n\n/**\n * Describes the message hiveng.v1.ConsoleMail.\n * Use `create(ConsoleMailSchema)` to create a new message.\n */\nexport const ConsoleMailSchema: GenMessage<ConsoleMail> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 2);\n\n/**\n * @generated from message hiveng.v1.ListMailRequest\n */\nexport type ListMailRequest = Message<\"hiveng.v1.ListMailRequest\"> & {\n /**\n * @generated from field: hiveng.v1.PageRequest page = 1;\n */\n page?: PageRequest | undefined;\n\n /**\n * @generated from field: bool include_claimed = 2;\n */\n includeClaimed: boolean;\n};\n\n/**\n * Describes the message hiveng.v1.ListMailRequest.\n * Use `create(ListMailRequestSchema)` to create a new message.\n */\nexport const ListMailRequestSchema: GenMessage<ListMailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 3);\n\n/**\n * @generated from message hiveng.v1.ListMailResponse\n */\nexport type ListMailResponse = Message<\"hiveng.v1.ListMailResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.Mail mail = 1;\n */\n mail: Mail[];\n\n /**\n * @generated from field: hiveng.v1.PageResponse page = 2;\n */\n page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ListMailResponse.\n * Use `create(ListMailResponseSchema)` to create a new message.\n */\nexport const ListMailResponseSchema: GenMessage<ListMailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 4);\n\n/**\n * @generated from message hiveng.v1.CheckNewMailRequest\n */\nexport type CheckNewMailRequest = Message<\"hiveng.v1.CheckNewMailRequest\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.CheckNewMailRequest.\n * Use `create(CheckNewMailRequestSchema)` to create a new message.\n */\nexport const CheckNewMailRequestSchema: GenMessage<CheckNewMailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 5);\n\n/**\n * @generated from message hiveng.v1.CheckNewMailResponse\n */\nexport type CheckNewMailResponse = Message<\"hiveng.v1.CheckNewMailResponse\"> & {\n /**\n * @generated from field: bool has_new_mail = 1;\n */\n hasNewMail: boolean;\n\n /**\n * @generated from field: int64 unread_count = 2;\n */\n unreadCount: bigint;\n};\n\n/**\n * Describes the message hiveng.v1.CheckNewMailResponse.\n * Use `create(CheckNewMailResponseSchema)` to create a new message.\n */\nexport const CheckNewMailResponseSchema: GenMessage<CheckNewMailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 6);\n\n/**\n * @generated from message hiveng.v1.ClaimMailRequest\n */\nexport type ClaimMailRequest = Message<\"hiveng.v1.ClaimMailRequest\"> & {\n /**\n * @generated from field: string mail_recipient_id = 1;\n */\n mailRecipientId: string;\n};\n\n/**\n * Describes the message hiveng.v1.ClaimMailRequest.\n * Use `create(ClaimMailRequestSchema)` to create a new message.\n */\nexport const ClaimMailRequestSchema: GenMessage<ClaimMailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 7);\n\n/**\n * @generated from message hiveng.v1.ClaimMailResponse\n */\nexport type ClaimMailResponse = Message<\"hiveng.v1.ClaimMailResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Mail mail = 1;\n */\n mail?: Mail | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ClaimMailResponse.\n * Use `create(ClaimMailResponseSchema)` to create a new message.\n */\nexport const ClaimMailResponseSchema: GenMessage<ClaimMailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 8);\n\n/**\n * @generated from message hiveng.v1.CreateMailRequest\n */\nexport type CreateMailRequest = Message<\"hiveng.v1.CreateMailRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.MailType type = 2;\n */\n type: MailType;\n\n /**\n * @generated from field: hiveng.v1.MailAudience audience = 3;\n */\n audience: MailAudience;\n\n /**\n * @generated from field: map<string, string> title = 4;\n */\n title: { [key: string]: string };\n\n /**\n * @generated from field: map<string, string> body = 5;\n */\n body: { [key: string]: string };\n\n /**\n * @generated from field: string sender = 6;\n */\n sender: string;\n\n /**\n * @generated from field: string reward_payload = 7;\n */\n rewardPayload: string;\n\n /**\n * @generated from field: map<string, string> reward_preview = 8;\n */\n rewardPreview: { [key: string]: string };\n\n /**\n * @generated from field: repeated string target_player_ids = 9;\n */\n targetPlayerIds: string[];\n\n /**\n * @generated from field: google.protobuf.Timestamp claimable_from = 10;\n */\n claimableFrom?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 11;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.CreateMailRequest.\n * Use `create(CreateMailRequestSchema)` to create a new message.\n */\nexport const CreateMailRequestSchema: GenMessage<CreateMailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 9);\n\n/**\n * @generated from message hiveng.v1.CreateMailResponse\n */\nexport type CreateMailResponse = Message<\"hiveng.v1.CreateMailResponse\"> & {\n /**\n * @generated from field: hiveng.v1.ConsoleMail mail = 1;\n */\n mail?: ConsoleMail | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.CreateMailResponse.\n * Use `create(CreateMailResponseSchema)` to create a new message.\n */\nexport const CreateMailResponseSchema: GenMessage<CreateMailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 10);\n\n/**\n * @generated from message hiveng.v1.UpdateMailRequest\n */\nexport type UpdateMailRequest = Message<\"hiveng.v1.UpdateMailRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string mail_id = 2;\n */\n mailId: string;\n\n /**\n * @generated from field: hiveng.v1.MailType type = 3;\n */\n type: MailType;\n\n /**\n * @generated from field: hiveng.v1.MailAudience audience = 4;\n */\n audience: MailAudience;\n\n /**\n * @generated from field: map<string, string> title = 5;\n */\n title: { [key: string]: string };\n\n /**\n * @generated from field: map<string, string> body = 6;\n */\n body: { [key: string]: string };\n\n /**\n * @generated from field: string sender = 7;\n */\n sender: string;\n\n /**\n * @generated from field: string reward_payload = 8;\n */\n rewardPayload: string;\n\n /**\n * @generated from field: map<string, string> reward_preview = 9;\n */\n rewardPreview: { [key: string]: string };\n\n /**\n * @generated from field: repeated string target_player_ids = 10;\n */\n targetPlayerIds: string[];\n\n /**\n * @generated from field: google.protobuf.Timestamp claimable_from = 11;\n */\n claimableFrom?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 12;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpdateMailRequest.\n * Use `create(UpdateMailRequestSchema)` to create a new message.\n */\nexport const UpdateMailRequestSchema: GenMessage<UpdateMailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 11);\n\n/**\n * @generated from message hiveng.v1.UpdateMailResponse\n */\nexport type UpdateMailResponse = Message<\"hiveng.v1.UpdateMailResponse\"> & {\n /**\n * @generated from field: hiveng.v1.ConsoleMail mail = 1;\n */\n mail?: ConsoleMail | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpdateMailResponse.\n * Use `create(UpdateMailResponseSchema)` to create a new message.\n */\nexport const UpdateMailResponseSchema: GenMessage<UpdateMailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 12);\n\n/**\n * @generated from message hiveng.v1.DeleteMailRequest\n */\nexport type DeleteMailRequest = Message<\"hiveng.v1.DeleteMailRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string mail_id = 2;\n */\n mailId: string;\n};\n\n/**\n * Describes the message hiveng.v1.DeleteMailRequest.\n * Use `create(DeleteMailRequestSchema)` to create a new message.\n */\nexport const DeleteMailRequestSchema: GenMessage<DeleteMailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 13);\n\n/**\n * @generated from message hiveng.v1.DeleteMailResponse\n */\nexport type DeleteMailResponse = Message<\"hiveng.v1.DeleteMailResponse\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.DeleteMailResponse.\n * Use `create(DeleteMailResponseSchema)` to create a new message.\n */\nexport const DeleteMailResponseSchema: GenMessage<DeleteMailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 14);\n\n/**\n * @generated from message hiveng.v1.GetMailRequest\n */\nexport type GetMailRequest = Message<\"hiveng.v1.GetMailRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string mail_id = 2;\n */\n mailId: string;\n};\n\n/**\n * Describes the message hiveng.v1.GetMailRequest.\n * Use `create(GetMailRequestSchema)` to create a new message.\n */\nexport const GetMailRequestSchema: GenMessage<GetMailRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 15);\n\n/**\n * @generated from message hiveng.v1.GetMailResponse\n */\nexport type GetMailResponse = Message<\"hiveng.v1.GetMailResponse\"> & {\n /**\n * @generated from field: hiveng.v1.ConsoleMail mail = 1;\n */\n mail?: ConsoleMail | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.GetMailResponse.\n * Use `create(GetMailResponseSchema)` to create a new message.\n */\nexport const GetMailResponseSchema: GenMessage<GetMailResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 16);\n\n/**\n * @generated from message hiveng.v1.ListMailsRequest\n */\nexport type ListMailsRequest = Message<\"hiveng.v1.ListMailsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.PageRequest page = 2;\n */\n page?: PageRequest | undefined;\n\n /**\n * @generated from field: hiveng.v1.MailType type = 3;\n */\n type: MailType;\n\n /**\n * @generated from field: hiveng.v1.MailAudience audience = 4;\n */\n audience: MailAudience;\n\n /**\n * @generated from field: bool include_deleted = 5;\n */\n includeDeleted: boolean;\n};\n\n/**\n * Describes the message hiveng.v1.ListMailsRequest.\n * Use `create(ListMailsRequestSchema)` to create a new message.\n */\nexport const ListMailsRequestSchema: GenMessage<ListMailsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 17);\n\n/**\n * @generated from message hiveng.v1.ListMailsResponse\n */\nexport type ListMailsResponse = Message<\"hiveng.v1.ListMailsResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.ConsoleMail mail = 1;\n */\n mail: ConsoleMail[];\n\n /**\n * @generated from field: hiveng.v1.PageResponse page = 2;\n */\n page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ListMailsResponse.\n * Use `create(ListMailsResponseSchema)` to create a new message.\n */\nexport const ListMailsResponseSchema: GenMessage<ListMailsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_mailbox, 18);\n\n/**\n * @generated from enum hiveng.v1.MailType\n */\nexport enum MailType {\n /**\n * @generated from enum value: MAIL_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: MAIL_TYPE_TEXT = 1;\n */\n TEXT = 1,\n\n /**\n * @generated from enum value: MAIL_TYPE_ITEM = 2;\n */\n ITEM = 2,\n}\n\n/**\n * Describes the enum hiveng.v1.MailType.\n */\nexport const MailTypeSchema: GenEnum<MailType> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_mailbox, 0);\n\n/**\n * @generated from enum hiveng.v1.MailAudience\n */\nexport enum MailAudience {\n /**\n * @generated from enum value: MAIL_AUDIENCE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: MAIL_AUDIENCE_ALL = 1;\n */\n ALL = 1,\n\n /**\n * @generated from enum value: MAIL_AUDIENCE_INDIVIDUAL = 2;\n */\n INDIVIDUAL = 2,\n}\n\n/**\n * Describes the enum hiveng.v1.MailAudience.\n */\nexport const MailAudienceSchema: GenEnum<MailAudience> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_mailbox, 1);\n\n/**\n * @generated from service hiveng.v1.MailboxService\n */\nexport const MailboxService: GenService<{\n /**\n * @generated from rpc hiveng.v1.MailboxService.ListMail\n */\n listMail: {\n methodKind: \"unary\";\n input: typeof ListMailRequestSchema;\n output: typeof ListMailResponseSchema;\n },\n /**\n * @generated from rpc hiveng.v1.MailboxService.CheckNewMail\n */\n checkNewMail: {\n methodKind: \"unary\";\n input: typeof CheckNewMailRequestSchema;\n output: typeof CheckNewMailResponseSchema;\n },\n /**\n * @generated from rpc hiveng.v1.MailboxService.ClaimMail\n */\n claimMail: {\n methodKind: \"unary\";\n input: typeof ClaimMailRequestSchema;\n output: typeof ClaimMailResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_mailbox, 0);\n\n/**\n * @generated from service hiveng.v1.ConsoleMailboxService\n */\nexport const ConsoleMailboxService: GenService<{\n /**\n * @generated from rpc hiveng.v1.ConsoleMailboxService.CreateMail\n */\n createMail: {\n methodKind: \"unary\";\n input: typeof CreateMailRequestSchema;\n output: typeof CreateMailResponseSchema;\n },\n /**\n * @generated from rpc hiveng.v1.ConsoleMailboxService.UpdateMail\n */\n updateMail: {\n methodKind: \"unary\";\n input: typeof UpdateMailRequestSchema;\n output: typeof UpdateMailResponseSchema;\n },\n /**\n * @generated from rpc hiveng.v1.ConsoleMailboxService.DeleteMail\n */\n deleteMail: {\n methodKind: \"unary\";\n input: typeof DeleteMailRequestSchema;\n output: typeof DeleteMailResponseSchema;\n },\n /**\n * @generated from rpc hiveng.v1.ConsoleMailboxService.GetMail\n */\n getMail: {\n methodKind: \"unary\";\n input: typeof GetMailRequestSchema;\n output: typeof GetMailResponseSchema;\n },\n /**\n * @generated from rpc hiveng.v1.ConsoleMailboxService.ListMails\n */\n listMails: {\n methodKind: \"unary\";\n input: typeof ListMailsRequestSchema;\n output: typeof ListMailsResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_mailbox, 1);\n\n","// @generated by protoc-gen-es v2.12.1 with parameter \"target=ts\"\n// @generated from file hiveng/v1/notice.proto (package hiveng.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { PageRequest, PageResponse } from \"./common_pb\";\nimport { file_hiveng_v1_common } from \"./common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file hiveng/v1/notice.proto.\n */\nexport const file_hiveng_v1_notice: GenFile = /*@__PURE__*/\n fileDesc(\"ChZoaXZlbmcvdjEvbm90aWNlLnByb3RvEgloaXZlbmcudjEi2gMKBk5vdGljZRIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEisKBXRpdGxlGAQgAygLMhwuaGl2ZW5nLnYxLk5vdGljZS5UaXRsZUVudHJ5EikKBGJvZHkYBSADKAsyGy5oaXZlbmcudjEuTm90aWNlLkJvZHlFbnRyeRItCglzdGFydHNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhIKCnZpZXdfY291bnQYDCABKAMaLAoKVGl0bGVFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGisKCUJvZHlFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBSgQIAxAESgQICBAJSgQICRAKUgR0eXBlUgljb3VudHJpZXNSCnNvcnRfb3JkZXIigQMKE0NyZWF0ZU5vdGljZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRI4CgV0aXRsZRgDIAMoCzIpLmhpdmVuZy52MS5DcmVhdGVOb3RpY2VSZXF1ZXN0LlRpdGxlRW50cnkSNgoEYm9keRgEIAMoCzIoLmhpdmVuZy52MS5DcmVhdGVOb3RpY2VSZXF1ZXN0LkJvZHlFbnRyeRItCglzdGFydHNfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEisKB2VuZHNfYXQYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGiwKClRpdGxlRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ARorCglCb2R5RW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4AUoECAIQA0oECAcQCEoECAgQCVIEdHlwZVIJY291bnRyaWVzUgpzb3J0X29yZGVyIjkKFENyZWF0ZU5vdGljZVJlc3BvbnNlEiEKBm5vdGljZRgBIAEoCzIRLmhpdmVuZy52MS5Ob3RpY2UilAMKE1VwZGF0ZU5vdGljZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIRCglub3RpY2VfaWQYAiABKAkSOAoFdGl0bGUYBCADKAsyKS5oaXZlbmcudjEuVXBkYXRlTm90aWNlUmVxdWVzdC5UaXRsZUVudHJ5EjYKBGJvZHkYBSADKAsyKC5oaXZlbmcudjEuVXBkYXRlTm90aWNlUmVxdWVzdC5Cb2R5RW50cnkSLQoJc3RhcnRzX2F0GAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIrCgdlbmRzX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBosCgpUaXRsZUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaKwoJQm9keUVudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAFKBAgDEARKBAgIEAlKBAgJEApSBHR5cGVSCWNvdW50cmllc1IKc29ydF9vcmRlciI5ChRVcGRhdGVOb3RpY2VSZXNwb25zZRIhCgZub3RpY2UYASABKAsyES5oaXZlbmcudjEuTm90aWNlIjwKE0RlbGV0ZU5vdGljZVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIRCglub3RpY2VfaWQYAiABKAkiFgoURGVsZXRlTm90aWNlUmVzcG9uc2UiTgoSTGlzdE5vdGljZXNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSJAoEcGFnZRgCIAEoCzIWLmhpdmVuZy52MS5QYWdlUmVxdWVzdCJgChNMaXN0Tm90aWNlc1Jlc3BvbnNlEiIKB25vdGljZXMYASADKAsyES5oaXZlbmcudjEuTm90aWNlEiUKBHBhZ2UYAiABKAsyFy5oaXZlbmcudjEuUGFnZVJlc3BvbnNlIjIKGExpc3RBY3RpdmVOb3RpY2VzUmVxdWVzdEoECAEQAlIQY291bnRyeV9vdmVycmlkZSI/ChlMaXN0QWN0aXZlTm90aWNlc1Jlc3BvbnNlEiIKB25vdGljZXMYASADKAsyES5oaXZlbmcudjEuTm90aWNlMtcCChRDb25zb2xlTm90aWNlU2VydmljZRJPCgxDcmVhdGVOb3RpY2USHi5oaXZlbmcudjEuQ3JlYXRlTm90aWNlUmVxdWVzdBofLmhpdmVuZy52MS5DcmVhdGVOb3RpY2VSZXNwb25zZRJPCgxVcGRhdGVOb3RpY2USHi5oaXZlbmcudjEuVXBkYXRlTm90aWNlUmVxdWVzdBofLmhpdmVuZy52MS5VcGRhdGVOb3RpY2VSZXNwb25zZRJPCgxEZWxldGVOb3RpY2USHi5oaXZlbmcudjEuRGVsZXRlTm90aWNlUmVxdWVzdBofLmhpdmVuZy52MS5EZWxldGVOb3RpY2VSZXNwb25zZRJMCgtMaXN0Tm90aWNlcxIdLmhpdmVuZy52MS5MaXN0Tm90aWNlc1JlcXVlc3QaHi5oaXZlbmcudjEuTGlzdE5vdGljZXNSZXNwb25zZTJvCg1Ob3RpY2VTZXJ2aWNlEl4KEUxpc3RBY3RpdmVOb3RpY2VzEiMuaGl2ZW5nLnYxLkxpc3RBY3RpdmVOb3RpY2VzUmVxdWVzdBokLmhpdmVuZy52MS5MaXN0QWN0aXZlTm90aWNlc1Jlc3BvbnNlQmEKDWNvbS5oaXZlbmcudjFCC05vdGljZVByb3RvUAGiAgNIWFiqAglIaXZlbmcuVjHKAglIaXZlbmdcVjHiAhVIaXZlbmdcVjFcR1BCTWV0YWRhdGHqAgpIaXZlbmc6OlYxYgZwcm90bzM\", [file_google_protobuf_timestamp, file_hiveng_v1_common]);\n\n/**\n * 공지 1건.\n *\n * @generated from message hiveng.v1.Notice\n */\nexport type Notice = Message<\"hiveng.v1.Notice\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n\n /**\n * 제목 (key = BCP-47: \"ko\", \"en\", \"ja\")\n *\n * @generated from field: map<string, string> title = 4;\n */\n title: { [key: string]: string };\n\n /**\n * 본문 (key = BCP-47)\n *\n * @generated from field: map<string, string> body = 5;\n */\n body: { [key: string]: string };\n\n /**\n * 노출 시작 (UTC)\n *\n * @generated from field: google.protobuf.Timestamp starts_at = 6;\n */\n startsAt?: Timestamp | undefined;\n\n /**\n * 노출 종료 (UTC)\n *\n * @generated from field: google.protobuf.Timestamp ends_at = 7;\n */\n endsAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 10;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 11;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * 조회 노출 횟수\n *\n * @generated from field: int64 view_count = 12;\n */\n viewCount: bigint;\n};\n\n/**\n * Describes the message hiveng.v1.Notice.\n * Use `create(NoticeSchema)` to create a new message.\n */\nexport const NoticeSchema: GenMessage<Notice> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 0);\n\n/**\n * @generated from message hiveng.v1.CreateNoticeRequest\n */\nexport type CreateNoticeRequest = Message<\"hiveng.v1.CreateNoticeRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: map<string, string> title = 3;\n */\n title: { [key: string]: string };\n\n /**\n * @generated from field: map<string, string> body = 4;\n */\n body: { [key: string]: string };\n\n /**\n * @generated from field: google.protobuf.Timestamp starts_at = 5;\n */\n startsAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp ends_at = 6;\n */\n endsAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.CreateNoticeRequest.\n * Use `create(CreateNoticeRequestSchema)` to create a new message.\n */\nexport const CreateNoticeRequestSchema: GenMessage<CreateNoticeRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 1);\n\n/**\n * @generated from message hiveng.v1.CreateNoticeResponse\n */\nexport type CreateNoticeResponse = Message<\"hiveng.v1.CreateNoticeResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Notice notice = 1;\n */\n notice?: Notice | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.CreateNoticeResponse.\n * Use `create(CreateNoticeResponseSchema)` to create a new message.\n */\nexport const CreateNoticeResponseSchema: GenMessage<CreateNoticeResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 2);\n\n/**\n * @generated from message hiveng.v1.UpdateNoticeRequest\n */\nexport type UpdateNoticeRequest = Message<\"hiveng.v1.UpdateNoticeRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string notice_id = 2;\n */\n noticeId: string;\n\n /**\n * @generated from field: map<string, string> title = 4;\n */\n title: { [key: string]: string };\n\n /**\n * @generated from field: map<string, string> body = 5;\n */\n body: { [key: string]: string };\n\n /**\n * @generated from field: google.protobuf.Timestamp starts_at = 6;\n */\n startsAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp ends_at = 7;\n */\n endsAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpdateNoticeRequest.\n * Use `create(UpdateNoticeRequestSchema)` to create a new message.\n */\nexport const UpdateNoticeRequestSchema: GenMessage<UpdateNoticeRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 3);\n\n/**\n * @generated from message hiveng.v1.UpdateNoticeResponse\n */\nexport type UpdateNoticeResponse = Message<\"hiveng.v1.UpdateNoticeResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Notice notice = 1;\n */\n notice?: Notice | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpdateNoticeResponse.\n * Use `create(UpdateNoticeResponseSchema)` to create a new message.\n */\nexport const UpdateNoticeResponseSchema: GenMessage<UpdateNoticeResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 4);\n\n/**\n * @generated from message hiveng.v1.DeleteNoticeRequest\n */\nexport type DeleteNoticeRequest = Message<\"hiveng.v1.DeleteNoticeRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string notice_id = 2;\n */\n noticeId: string;\n};\n\n/**\n * Describes the message hiveng.v1.DeleteNoticeRequest.\n * Use `create(DeleteNoticeRequestSchema)` to create a new message.\n */\nexport const DeleteNoticeRequestSchema: GenMessage<DeleteNoticeRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 5);\n\n/**\n * @generated from message hiveng.v1.DeleteNoticeResponse\n */\nexport type DeleteNoticeResponse = Message<\"hiveng.v1.DeleteNoticeResponse\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.DeleteNoticeResponse.\n * Use `create(DeleteNoticeResponseSchema)` to create a new message.\n */\nexport const DeleteNoticeResponseSchema: GenMessage<DeleteNoticeResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 6);\n\n/**\n * @generated from message hiveng.v1.ListNoticesRequest\n */\nexport type ListNoticesRequest = Message<\"hiveng.v1.ListNoticesRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.PageRequest page = 2;\n */\n page?: PageRequest | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ListNoticesRequest.\n * Use `create(ListNoticesRequestSchema)` to create a new message.\n */\nexport const ListNoticesRequestSchema: GenMessage<ListNoticesRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 7);\n\n/**\n * @generated from message hiveng.v1.ListNoticesResponse\n */\nexport type ListNoticesResponse = Message<\"hiveng.v1.ListNoticesResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.Notice notices = 1;\n */\n notices: Notice[];\n\n /**\n * @generated from field: hiveng.v1.PageResponse page = 2;\n */\n page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ListNoticesResponse.\n * Use `create(ListNoticesResponseSchema)` to create a new message.\n */\nexport const ListNoticesResponseSchema: GenMessage<ListNoticesResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 8);\n\n/**\n * @generated from message hiveng.v1.ListActiveNoticesRequest\n */\nexport type ListActiveNoticesRequest = Message<\"hiveng.v1.ListActiveNoticesRequest\"> & {\n};\n\n/**\n * Describes the message hiveng.v1.ListActiveNoticesRequest.\n * Use `create(ListActiveNoticesRequestSchema)` to create a new message.\n */\nexport const ListActiveNoticesRequestSchema: GenMessage<ListActiveNoticesRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 9);\n\n/**\n * @generated from message hiveng.v1.ListActiveNoticesResponse\n */\nexport type ListActiveNoticesResponse = Message<\"hiveng.v1.ListActiveNoticesResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.Notice notices = 1;\n */\n notices: Notice[];\n};\n\n/**\n * Describes the message hiveng.v1.ListActiveNoticesResponse.\n * Use `create(ListActiveNoticesResponseSchema)` to create a new message.\n */\nexport const ListActiveNoticesResponseSchema: GenMessage<ListActiveNoticesResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_notice, 10);\n\n/**\n * 콘솔/MCP용 공지 관리.\n *\n * @generated from service hiveng.v1.ConsoleNoticeService\n */\nexport const ConsoleNoticeService: GenService<{\n /**\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsoleNoticeService.CreateNotice\n */\n createNotice: {\n methodKind: \"unary\";\n input: typeof CreateNoticeRequestSchema;\n output: typeof CreateNoticeResponseSchema;\n },\n /**\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsoleNoticeService.UpdateNotice\n */\n updateNotice: {\n methodKind: \"unary\";\n input: typeof UpdateNoticeRequestSchema;\n output: typeof UpdateNoticeResponseSchema;\n },\n /**\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsoleNoticeService.DeleteNotice\n */\n deleteNotice: {\n methodKind: \"unary\";\n input: typeof DeleteNoticeRequestSchema;\n output: typeof DeleteNoticeResponseSchema;\n },\n /**\n * auth: admin_jwt\n * 관리자용 전체 목록 (기간/국가 필터 없음).\n *\n * @generated from rpc hiveng.v1.ConsoleNoticeService.ListNotices\n */\n listNotices: {\n methodKind: \"unary\";\n input: typeof ListNoticesRequestSchema;\n output: typeof ListNoticesResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_notice, 0);\n\n/**\n * 클라이언트 SDK용 공지 조회.\n *\n * @generated from service hiveng.v1.NoticeService\n */\nexport const NoticeService: GenService<{\n /**\n * auth: api_key\n * 서버가 기간(starts_at ≤ now < ends_at) 필터링과 생성일 순 정렬을 수행해 반환한다.\n *\n * @generated from rpc hiveng.v1.NoticeService.ListActiveNotices\n */\n listActiveNotices: {\n methodKind: \"unary\";\n input: typeof ListActiveNoticesRequestSchema;\n output: typeof ListActiveNoticesResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_notice, 1);\n\n","// @generated by protoc-gen-es v2.12.1 with parameter \"target=ts\"\n// @generated from file hiveng/v1/payment.proto (package hiveng.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { PageRequest, PageResponse } from \"./common_pb\";\nimport { file_hiveng_v1_common } from \"./common_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file hiveng/v1/payment.proto.\n */\nexport const file_hiveng_v1_payment: GenFile = /*@__PURE__*/\n fileDesc(\"ChdoaXZlbmcvdjEvcGF5bWVudC5wcm90bxIJaGl2ZW5nLnYxIogHCghQdXJjaGFzZRIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhEKCXBsYXllcl9pZBgDIAEoCRIhCgZtYXJrZXQYBCABKA4yES5oaXZlbmcudjEuTWFya2V0EhIKCnByb2R1Y3RfaWQYBSABKAkSFAoMYW1vdW50X21pbm9yGAYgASgDEhAKCGN1cnJlbmN5GAcgASgJEikKBnN0YXR1cxgIIAEoDjIZLmhpdmVuZy52MS5QdXJjaGFzZVN0YXR1cxIwCgxwdXJjaGFzZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3ZlcmlmaWVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIsCgxwcm9kdWN0X3R5cGUYDCABKA4yFi5oaXZlbmcudjEuUHJvZHVjdFR5cGUSFAoMcGFja2FnZV9uYW1lGA0gASgJEhcKD21hcmtldF9vcmRlcl9pZBgOIAEoCRIbChNwdXJjaGFzZV90b2tlbl9oYXNoGA8gASgJEhYKDmZhaWx1cmVfcmVhc29uGBAgASgJEhsKE3Jhd19tYXJrZXRfcmVzcG9uc2UYESABKAkSMAoMcmVxdWVzdGVkX2F0GBIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaChJwdXJjaGFzZV9pbnRlbnRfaWQYFCABKAkSNwoOY29uc3VtZV9wb2xpY3kYFSABKA4yHy5oaXZlbmcudjEuUGF5bWVudENvbnN1bWVQb2xpY3kSFgoOY29uc3VtZV9zdGF0dXMYFiABKAkSLwoLY29uc3VtZWRfYXQYFyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KCmdyYW50X21vZGUYGCABKA4yGy5oaXZlbmcudjEuUGF5bWVudEdyYW50TW9kZRIUCgxncmFudF9zdGF0dXMYGSABKAkSNgoSZ3JhbnRfZGVsaXZlcmVkX2F0GBogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKYBAoMU3Vic2NyaXB0aW9uEgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEQoJcGxheWVyX2lkGAMgASgJEiEKBm1hcmtldBgEIAEoDjIRLmhpdmVuZy52MS5NYXJrZXQSEgoKcHJvZHVjdF9pZBgFIAEoCRIUCgxwYWNrYWdlX25hbWUYBiABKAkSGwoTcHVyY2hhc2VfdG9rZW5faGFzaBgHIAEoCRIXCg9tYXJrZXRfb3JkZXJfaWQYCCABKAkSLQoGc3RhdHVzGAkgASgOMh0uaGl2ZW5nLnYxLlN1YnNjcmlwdGlvblN0YXR1cxIVCg1hdXRvX3JlbmV3aW5nGAogASgIEi4KCnN0YXJ0ZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmV4cGlyZXNfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KC3ZlcmlmaWVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgpjcmVhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbChNyYXdfbWFya2V0X3Jlc3BvbnNlGBAgASgJIswCCg9QYXltZW50U2V0dGluZ3MSEgoKcHJvamVjdF9pZBgBIAEoCRIkChhnb29nbGVfcGxheV9wYWNrYWdlX25hbWUYAiABKAlCAhgBEikKIWdvb2dsZV9wbGF5X2NyZWRlbnRpYWxfY29uZmlndXJlZBgDIAEoCBIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI4Cg9tYXJrZXRfc2V0dGluZ3MYBiADKAsyHy5oaXZlbmcudjEuUGF5bWVudE1hcmtldFNldHRpbmcSOgoQcHJvZHVjdF9zZXR0aW5ncxgHIAMoCzIgLmhpdmVuZy52MS5QYXltZW50UHJvZHVjdFNldHRpbmciiwIKFFBheW1lbnRNYXJrZXRTZXR0aW5nEhIKCnByb2plY3RfaWQYASABKAkSIQoGbWFya2V0GAIgASgOMhEuaGl2ZW5nLnYxLk1hcmtldBIWCg5hcHBfaWRlbnRpZmllchgDIAEoCRIUCgxkaXNwbGF5X25hbWUYBCABKAkSDwoHZW5hYmxlZBgFIAEoCBIdChVjcmVkZW50aWFsX2NvbmZpZ3VyZWQYBiABKAgSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAigwMKFVBheW1lbnRQcm9kdWN0U2V0dGluZxISCgpwcm9qZWN0X2lkGAEgASgJEiEKBm1hcmtldBgCIAEoDjIRLmhpdmVuZy52MS5NYXJrZXQSFgoOYXBwX2lkZW50aWZpZXIYAyABKAkSEgoKcHJvZHVjdF9pZBgEIAEoCRIsCgxwcm9kdWN0X3R5cGUYBSABKA4yFi5oaXZlbmcudjEuUHJvZHVjdFR5cGUSNwoOY29uc3VtZV9wb2xpY3kYBiABKA4yHy5oaXZlbmcudjEuUGF5bWVudENvbnN1bWVQb2xpY3kSLwoKZ3JhbnRfbW9kZRgHIAEoDjIbLmhpdmVuZy52MS5QYXltZW50R3JhbnRNb2RlEg8KB2VuYWJsZWQYCCABKAgSLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi7QMKDlBheW1lbnRQcm9kdWN0EhIKCnByb2plY3RfaWQYASABKAkSIQoGbWFya2V0GAIgASgOMhEuaGl2ZW5nLnYxLk1hcmtldBIWCg5hcHBfaWRlbnRpZmllchgDIAEoCRISCgpwcm9kdWN0X2lkGAQgASgJEiwKDHByb2R1Y3RfdHlwZRgFIAEoDjIWLmhpdmVuZy52MS5Qcm9kdWN0VHlwZRIVCg1tYXJrZXRfc3RhdHVzGAYgASgJEg0KBXRpdGxlGAcgASgJEhMKC2Rlc2NyaXB0aW9uGAggASgJEjcKDmNvbnN1bWVfcG9saWN5GAkgASgOMh8uaGl2ZW5nLnYxLlBheW1lbnRDb25zdW1lUG9saWN5Ei8KCmdyYW50X21vZGUYCiABKA4yGy5oaXZlbmcudjEuUGF5bWVudEdyYW50TW9kZRIPCgdlbmFibGVkGAsgASgIEjQKEGxhc3RfaW1wb3J0ZWRfYXQYDCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYDSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYDiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIn4KE0xpc3RQcm9kdWN0c1JlcXVlc3QSIQoGbWFya2V0GAEgASgOMhEuaGl2ZW5nLnYxLk1hcmtldBIWCg5hcHBfaWRlbnRpZmllchgCIAEoCRIsCgxwcm9kdWN0X3R5cGUYAyABKA4yFi5oaXZlbmcudjEuUHJvZHVjdFR5cGUiQwoUTGlzdFByb2R1Y3RzUmVzcG9uc2USKwoIcHJvZHVjdHMYASADKAsyGS5oaXZlbmcudjEuUGF5bWVudFByb2R1Y3QikwEKFFN0YXJ0UHVyY2hhc2VSZXF1ZXN0EiEKBm1hcmtldBgBIAEoDjIRLmhpdmVuZy52MS5NYXJrZXQSEgoKcHJvZHVjdF9pZBgCIAEoCRIsCgxwcm9kdWN0X3R5cGUYAyABKA4yFi5oaXZlbmcudjEuUHJvZHVjdFR5cGUSFgoOYXBwX2lkZW50aWZpZXIYBCABKAkiMwoVU3RhcnRQdXJjaGFzZVJlc3BvbnNlEhoKEnB1cmNoYXNlX2ludGVudF9pZBgBIAEoCSL7AQoVVmVyaWZ5UHVyY2hhc2VSZXF1ZXN0EiEKBm1hcmtldBgBIAEoDjIRLmhpdmVuZy52MS5NYXJrZXQSFwoPcmVjZWlwdF9wYXlsb2FkGAIgASgJEhIKCnByb2R1Y3RfaWQYAyABKAkSLAoMcHJvZHVjdF90eXBlGAQgASgOMhYuaGl2ZW5nLnYxLlByb2R1Y3RUeXBlEhYKDnB1cmNoYXNlX3Rva2VuGAUgASgJEhgKDHBhY2thZ2VfbmFtZRgGIAEoCUICGAESFgoOYXBwX2lkZW50aWZpZXIYByABKAkSGgoScHVyY2hhc2VfaW50ZW50X2lkGAggASgJIj8KFlZlcmlmeVB1cmNoYXNlUmVzcG9uc2USJQoIcHVyY2hhc2UYASABKAsyEy5oaXZlbmcudjEuUHVyY2hhc2UiNwogUGF5bWVudFNlcnZpY2VHZXRQdXJjaGFzZVJlcXVlc3QSEwoLcHVyY2hhc2VfaWQYASABKAkiSgohUGF5bWVudFNlcnZpY2VHZXRQdXJjaGFzZVJlc3BvbnNlEiUKCHB1cmNoYXNlGAEgASgLMhMuaGl2ZW5nLnYxLlB1cmNoYXNlImAKI0NvbmZpcm1QYXltZW50R3JhbnREZWxpdmVyZWRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEwoLcHVyY2hhc2VfaWQYAiABKAkSEAoIZXZlbnRfaWQYAyABKAkiTQokQ29uZmlybVBheW1lbnRHcmFudERlbGl2ZXJlZFJlc3BvbnNlEiUKCHB1cmNoYXNlGAEgASgLMhMuaGl2ZW5nLnYxLlB1cmNoYXNlIi8KGUdldFBheW1lbnRTZXR0aW5nc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCSJKChpHZXRQYXltZW50U2V0dGluZ3NSZXNwb25zZRIsCghzZXR0aW5ncxgBIAEoCzIaLmhpdmVuZy52MS5QYXltZW50U2V0dGluZ3MiVQoZU2V0UGF5bWVudFNldHRpbmdzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEiQKGGdvb2dsZV9wbGF5X3BhY2thZ2VfbmFtZRgCIAEoCUICGAEiSgoaU2V0UGF5bWVudFNldHRpbmdzUmVzcG9uc2USLAoIc2V0dGluZ3MYASABKAsyGi5oaXZlbmcudjEuUGF5bWVudFNldHRpbmdzIqoBCiFVcHNlcnRQYXltZW50TWFya2V0U2V0dGluZ1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIhCgZtYXJrZXQYAiABKA4yES5oaXZlbmcudjEuTWFya2V0EhYKDmFwcF9pZGVudGlmaWVyGAMgASgJEhQKDGRpc3BsYXlfbmFtZRgEIAEoCRIUCgdlbmFibGVkGAUgASgISACIAQFCCgoIX2VuYWJsZWQiUgoiVXBzZXJ0UGF5bWVudE1hcmtldFNldHRpbmdSZXNwb25zZRIsCghzZXR0aW5ncxgBIAEoCzIaLmhpdmVuZy52MS5QYXltZW50U2V0dGluZ3MiwQIKIlVwc2VydFBheW1lbnRQcm9kdWN0U2V0dGluZ1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIhCgZtYXJrZXQYAiABKA4yES5oaXZlbmcudjEuTWFya2V0EhYKDmFwcF9pZGVudGlmaWVyGAMgASgJEhIKCnByb2R1Y3RfaWQYBCABKAkSLAoMcHJvZHVjdF90eXBlGAUgASgOMhYuaGl2ZW5nLnYxLlByb2R1Y3RUeXBlEjcKDmNvbnN1bWVfcG9saWN5GAYgASgOMh8uaGl2ZW5nLnYxLlBheW1lbnRDb25zdW1lUG9saWN5Ei8KCmdyYW50X21vZGUYByABKA4yGy5oaXZlbmcudjEuUGF5bWVudEdyYW50TW9kZRIUCgdlbmFibGVkGAggASgISACIAQFCCgoIX2VuYWJsZWQiUwojVXBzZXJ0UGF5bWVudFByb2R1Y3RTZXR0aW5nUmVzcG9uc2USLAoIc2V0dGluZ3MYASABKAsyGi5oaXZlbmcudjEuUGF5bWVudFNldHRpbmdzIm0KHEltcG9ydFBheW1lbnRQcm9kdWN0c1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIhCgZtYXJrZXQYAiABKA4yES5oaXZlbmcudjEuTWFya2V0EhYKDmFwcF9pZGVudGlmaWVyGAMgASgJImQKHUltcG9ydFBheW1lbnRQcm9kdWN0c1Jlc3BvbnNlEisKCHByb2R1Y3RzGAEgAygLMhkuaGl2ZW5nLnYxLlBheW1lbnRQcm9kdWN0EhYKDmltcG9ydGVkX2NvdW50GAIgASgFIpkBChpMaXN0UGF5bWVudFByb2R1Y3RzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEiEKBm1hcmtldBgCIAEoDjIRLmhpdmVuZy52MS5NYXJrZXQSFgoOYXBwX2lkZW50aWZpZXIYAyABKAkSLAoMcHJvZHVjdF90eXBlGAQgASgOMhYuaGl2ZW5nLnYxLlByb2R1Y3RUeXBlIkoKG0xpc3RQYXltZW50UHJvZHVjdHNSZXNwb25zZRIrCghwcm9kdWN0cxgBIAMoCzIZLmhpdmVuZy52MS5QYXltZW50UHJvZHVjdCKxAgoUTGlzdFB1cmNoYXNlc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIhCgZtYXJrZXQYAiABKA4yES5oaXZlbmcudjEuTWFya2V0EigKBGZyb20YAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiYKAnRvGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIkCgRwYWdlGAUgASgLMhYuaGl2ZW5nLnYxLlBhZ2VSZXF1ZXN0EiwKDHByb2R1Y3RfdHlwZRgGIAEoDjIWLmhpdmVuZy52MS5Qcm9kdWN0VHlwZRIpCgZzdGF0dXMYByABKA4yGS5oaXZlbmcudjEuUHVyY2hhc2VTdGF0dXMSEQoJcGxheWVyX2lkGAggASgJImYKFUxpc3RQdXJjaGFzZXNSZXNwb25zZRImCglwdXJjaGFzZXMYASADKAsyEy5oaXZlbmcudjEuUHVyY2hhc2USJQoEcGFnZRgCIAEoCzIXLmhpdmVuZy52MS5QYWdlUmVzcG9uc2UiPQoSR2V0UHVyY2hhc2VSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEwoLcHVyY2hhc2VfaWQYAiABKAkiPAoTR2V0UHVyY2hhc2VSZXNwb25zZRIlCghwdXJjaGFzZRgBIAEoCzITLmhpdmVuZy52MS5QdXJjaGFzZSKmAQoYTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSIQoGbWFya2V0GAIgASgOMhEuaGl2ZW5nLnYxLk1hcmtldBItCgZzdGF0dXMYAyABKA4yHS5oaXZlbmcudjEuU3Vic2NyaXB0aW9uU3RhdHVzEiQKBHBhZ2UYBCABKAsyFi5oaXZlbmcudjEuUGFnZVJlcXVlc3QicgoZTGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZRIuCg1zdWJzY3JpcHRpb25zGAEgAygLMhcuaGl2ZW5nLnYxLlN1YnNjcmlwdGlvbhIlCgRwYWdlGAIgASgLMhcuaGl2ZW5nLnYxLlBhZ2VSZXNwb25zZSJFChZHZXRTdWJzY3JpcHRpb25SZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSFwoPc3Vic2NyaXB0aW9uX2lkGAIgASgJIkgKF0dldFN1YnNjcmlwdGlvblJlc3BvbnNlEi0KDHN1YnNjcmlwdGlvbhgBIAEoCzIXLmhpdmVuZy52MS5TdWJzY3JpcHRpb24qfAoGTWFya2V0EhYKEk1BUktFVF9VTlNQRUNJRklFRBAAEhYKEk1BUktFVF9HT09HTEVfUExBWRABEhQKEE1BUktFVF9BUFBfU1RPUkUQAhIQCgxNQVJLRVRfU1RFQU0QBRIOCgpNQVJLRVRfV0VCEAYiBAgDEAMiBAgEEAQq4QEKDlB1cmNoYXNlU3RhdHVzEh8KG1BVUkNIQVNFX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF1BVUkNIQVNFX1NUQVRVU19QRU5ESU5HEAESHAoYUFVSQ0hBU0VfU1RBVFVTX1ZFUklGSUVEEAISGgoWUFVSQ0hBU0VfU1RBVFVTX0ZBSUxFRBADEhwKGFBVUkNIQVNFX1NUQVRVU19SRUZVTkRFRBAEEhwKGFBVUkNIQVNFX1NUQVRVU19DQU5DRUxFRBAFEhsKF1BVUkNIQVNFX1NUQVRVU19FWFBJUkVEEAYqZQoLUHJvZHVjdFR5cGUSHAoYUFJPRFVDVF9UWVBFX1VOU1BFQ0lGSUVEEAASGQoVUFJPRFVDVF9UWVBFX09ORV9USU1FEAESHQoZUFJPRFVDVF9UWVBFX1NVQlNDUklQVElPThACKo8BChRQYXltZW50Q29uc3VtZVBvbGljeRImCiJQQVlNRU5UX0NPTlNVTUVfUE9MSUNZX1VOU1BFQ0lGSUVEEAASHwobUEFZTUVOVF9DT05TVU1FX1BPTElDWV9OT05FEAESLgoqUEFZTUVOVF9DT05TVU1FX1BPTElDWV9DT05TVU1FX0FGVEVSX0dSQU5UEAIqpQEKEFBheW1lbnRHcmFudE1vZGUSIgoeUEFZTUVOVF9HUkFOVF9NT0RFX1VOU1BFQ0lGSUVEEAASJwojUEFZTUVOVF9HUkFOVF9NT0RFX1dFQkhPT0tfUkVRVUlSRUQQARIfChtQQVlNRU5UX0dSQU5UX01PREVfTk9fR1JBTlQQAhIjCh9QQVlNRU5UX0dSQU5UX01PREVfQ0xJRU5UX0dSQU5UEAMqxwIKElN1YnNjcmlwdGlvblN0YXR1cxIjCh9TVUJTQ1JJUFRJT05fU1RBVFVTX1VOU1BFQ0lGSUVEEAASHgoaU1VCU0NSSVBUSU9OX1NUQVRVU19BQ1RJVkUQARInCiNTVUJTQ1JJUFRJT05fU1RBVFVTX0lOX0dSQUNFX1BFUklPRBACEh8KG1NVQlNDUklQVElPTl9TVEFUVVNfT05fSE9MRBADEh4KGlNVQlNDUklQVElPTl9TVEFUVVNfUEFVU0VEEAQSIAocU1VCU0NSSVBUSU9OX1NUQVRVU19DQU5DRUxFRBAFEh8KG1NVQlNDUklQVElPTl9TVEFUVVNfRVhQSVJFRBAGEh8KG1NVQlNDUklQVElPTl9TVEFUVVNfUEVORElORxAHEh4KGlNVQlNDUklQVElPTl9TVEFUVVNfRkFJTEVEEAgy9wMKDlBheW1lbnRTZXJ2aWNlEk8KDExpc3RQcm9kdWN0cxIeLmhpdmVuZy52MS5MaXN0UHJvZHVjdHNSZXF1ZXN0Gh8uaGl2ZW5nLnYxLkxpc3RQcm9kdWN0c1Jlc3BvbnNlElIKDVN0YXJ0UHVyY2hhc2USHy5oaXZlbmcudjEuU3RhcnRQdXJjaGFzZVJlcXVlc3QaIC5oaXZlbmcudjEuU3RhcnRQdXJjaGFzZVJlc3BvbnNlElUKDlZlcmlmeVB1cmNoYXNlEiAuaGl2ZW5nLnYxLlZlcmlmeVB1cmNoYXNlUmVxdWVzdBohLmhpdmVuZy52MS5WZXJpZnlQdXJjaGFzZVJlc3BvbnNlEmgKC0dldFB1cmNoYXNlEisuaGl2ZW5nLnYxLlBheW1lbnRTZXJ2aWNlR2V0UHVyY2hhc2VSZXF1ZXN0GiwuaGl2ZW5nLnYxLlBheW1lbnRTZXJ2aWNlR2V0UHVyY2hhc2VSZXNwb25zZRJ/ChxDb25maXJtUGF5bWVudEdyYW50RGVsaXZlcmVkEi4uaGl2ZW5nLnYxLkNvbmZpcm1QYXltZW50R3JhbnREZWxpdmVyZWRSZXF1ZXN0Gi8uaGl2ZW5nLnYxLkNvbmZpcm1QYXltZW50R3JhbnREZWxpdmVyZWRSZXNwb25zZTKECAoVQ29uc29sZVBheW1lbnRTZXJ2aWNlEmEKEkdldFBheW1lbnRTZXR0aW5ncxIkLmhpdmVuZy52MS5HZXRQYXltZW50U2V0dGluZ3NSZXF1ZXN0GiUuaGl2ZW5nLnYxLkdldFBheW1lbnRTZXR0aW5nc1Jlc3BvbnNlEmEKElNldFBheW1lbnRTZXR0aW5ncxIkLmhpdmVuZy52MS5TZXRQYXltZW50U2V0dGluZ3NSZXF1ZXN0GiUuaGl2ZW5nLnYxLlNldFBheW1lbnRTZXR0aW5nc1Jlc3BvbnNlEnkKGlVwc2VydFBheW1lbnRNYXJrZXRTZXR0aW5nEiwuaGl2ZW5nLnYxLlVwc2VydFBheW1lbnRNYXJrZXRTZXR0aW5nUmVxdWVzdBotLmhpdmVuZy52MS5VcHNlcnRQYXltZW50TWFya2V0U2V0dGluZ1Jlc3BvbnNlEnwKG1Vwc2VydFBheW1lbnRQcm9kdWN0U2V0dGluZxItLmhpdmVuZy52MS5VcHNlcnRQYXltZW50UHJvZHVjdFNldHRpbmdSZXF1ZXN0Gi4uaGl2ZW5nLnYxLlVwc2VydFBheW1lbnRQcm9kdWN0U2V0dGluZ1Jlc3BvbnNlEmoKFUltcG9ydFBheW1lbnRQcm9kdWN0cxInLmhpdmVuZy52MS5JbXBvcnRQYXltZW50UHJvZHVjdHNSZXF1ZXN0GiguaGl2ZW5nLnYxLkltcG9ydFBheW1lbnRQcm9kdWN0c1Jlc3BvbnNlEmQKE0xpc3RQYXltZW50UHJvZHVjdHMSJS5oaXZlbmcudjEuTGlzdFBheW1lbnRQcm9kdWN0c1JlcXVlc3QaJi5oaXZlbmcudjEuTGlzdFBheW1lbnRQcm9kdWN0c1Jlc3BvbnNlElIKDUxpc3RQdXJjaGFzZXMSHy5oaXZlbmcudjEuTGlzdFB1cmNoYXNlc1JlcXVlc3QaIC5oaXZlbmcudjEuTGlzdFB1cmNoYXNlc1Jlc3BvbnNlEkwKC0dldFB1cmNoYXNlEh0uaGl2ZW5nLnYxLkdldFB1cmNoYXNlUmVxdWVzdBoeLmhpdmVuZy52MS5HZXRQdXJjaGFzZVJlc3BvbnNlEl4KEUxpc3RTdWJzY3JpcHRpb25zEiMuaGl2ZW5nLnYxLkxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdBokLmhpdmVuZy52MS5MaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlElgKD0dldFN1YnNjcmlwdGlvbhIhLmhpdmVuZy52MS5HZXRTdWJzY3JpcHRpb25SZXF1ZXN0GiIuaGl2ZW5nLnYxLkdldFN1YnNjcmlwdGlvblJlc3BvbnNlQmIKDWNvbS5oaXZlbmcudjFCDFBheW1lbnRQcm90b1ABogIDSFhYqgIJSGl2ZW5nLlYxygIJSGl2ZW5nXFYx4gIVSGl2ZW5nXFYxXEdQQk1ldGFkYXRh6gIKSGl2ZW5nOjpWMWIGcHJvdG8z\", [file_google_protobuf_timestamp, file_hiveng_v1_common]);\n\n/**\n * 구매 내역.\n *\n * @generated from message hiveng.v1.Purchase\n */\nexport type Purchase = Message<\"hiveng.v1.Purchase\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n\n /**\n * @generated from field: string player_id = 3;\n */\n playerId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 4;\n */\n market: Market;\n\n /**\n * @generated from field: string product_id = 5;\n */\n productId: string;\n\n /**\n * 통화 최소 단위 금액.\n *\n * @generated from field: int64 amount_minor = 6;\n */\n amountMinor: bigint;\n\n /**\n * ISO 4217 통화 코드.\n *\n * @generated from field: string currency = 7;\n */\n currency: string;\n\n /**\n * @generated from field: hiveng.v1.PurchaseStatus status = 8;\n */\n status: PurchaseStatus;\n\n /**\n * 마켓 구매 시각 (UTC).\n *\n * @generated from field: google.protobuf.Timestamp purchased_at = 9;\n */\n purchasedAt?: Timestamp | undefined;\n\n /**\n * 영수증 검증 완료 시각 (UTC). 미검증이면 미설정.\n *\n * @generated from field: google.protobuf.Timestamp verified_at = 10;\n */\n verifiedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 11;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 12;\n */\n productType: ProductType;\n\n /**\n * @generated from field: string package_name = 13;\n */\n packageName: string;\n\n /**\n * @generated from field: string market_order_id = 14;\n */\n marketOrderId: string;\n\n /**\n * @generated from field: string purchase_token_hash = 15;\n */\n purchaseTokenHash: string;\n\n /**\n * @generated from field: string failure_reason = 16;\n */\n failureReason: string;\n\n /**\n * @generated from field: string raw_market_response = 17;\n */\n rawMarketResponse: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp requested_at = 18;\n */\n requestedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 19;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string purchase_intent_id = 20;\n */\n purchaseIntentId: string;\n\n /**\n * @generated from field: hiveng.v1.PaymentConsumePolicy consume_policy = 21;\n */\n consumePolicy: PaymentConsumePolicy;\n\n /**\n * @generated from field: string consume_status = 22;\n */\n consumeStatus: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp consumed_at = 23;\n */\n consumedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: hiveng.v1.PaymentGrantMode grant_mode = 24;\n */\n grantMode: PaymentGrantMode;\n\n /**\n * @generated from field: string grant_status = 25;\n */\n grantStatus: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp grant_delivered_at = 26;\n */\n grantDeliveredAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.Purchase.\n * Use `create(PurchaseSchema)` to create a new message.\n */\nexport const PurchaseSchema: GenMessage<Purchase> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 0);\n\n/**\n * @generated from message hiveng.v1.Subscription\n */\nexport type Subscription = Message<\"hiveng.v1.Subscription\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n\n /**\n * @generated from field: string player_id = 3;\n */\n playerId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 4;\n */\n market: Market;\n\n /**\n * @generated from field: string product_id = 5;\n */\n productId: string;\n\n /**\n * @generated from field: string package_name = 6;\n */\n packageName: string;\n\n /**\n * @generated from field: string purchase_token_hash = 7;\n */\n purchaseTokenHash: string;\n\n /**\n * @generated from field: string market_order_id = 8;\n */\n marketOrderId: string;\n\n /**\n * @generated from field: hiveng.v1.SubscriptionStatus status = 9;\n */\n status: SubscriptionStatus;\n\n /**\n * @generated from field: bool auto_renewing = 10;\n */\n autoRenewing: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp started_at = 11;\n */\n startedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 12;\n */\n expiresAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp verified_at = 13;\n */\n verifiedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 14;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 15;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: string raw_market_response = 16;\n */\n rawMarketResponse: string;\n};\n\n/**\n * Describes the message hiveng.v1.Subscription.\n * Use `create(SubscriptionSchema)` to create a new message.\n */\nexport const SubscriptionSchema: GenMessage<Subscription> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 1);\n\n/**\n * @generated from message hiveng.v1.PaymentSettings\n */\nexport type PaymentSettings = Message<\"hiveng.v1.PaymentSettings\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string google_play_package_name = 2 [deprecated = true];\n * @deprecated\n */\n googlePlayPackageName: string;\n\n /**\n * @generated from field: bool google_play_credential_configured = 3;\n */\n googlePlayCredentialConfigured: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 5;\n */\n updatedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: repeated hiveng.v1.PaymentMarketSetting market_settings = 6;\n */\n marketSettings: PaymentMarketSetting[];\n\n /**\n * @generated from field: repeated hiveng.v1.PaymentProductSetting product_settings = 7;\n */\n productSettings: PaymentProductSetting[];\n};\n\n/**\n * Describes the message hiveng.v1.PaymentSettings.\n * Use `create(PaymentSettingsSchema)` to create a new message.\n */\nexport const PaymentSettingsSchema: GenMessage<PaymentSettings> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 2);\n\n/**\n * @generated from message hiveng.v1.PaymentMarketSetting\n */\nexport type PaymentMarketSetting = Message<\"hiveng.v1.PaymentMarketSetting\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 3;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: string display_name = 4;\n */\n displayName: string;\n\n /**\n * @generated from field: bool enabled = 5;\n */\n enabled: boolean;\n\n /**\n * @generated from field: bool credential_configured = 6;\n */\n credentialConfigured: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 7;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 8;\n */\n updatedAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.PaymentMarketSetting.\n * Use `create(PaymentMarketSettingSchema)` to create a new message.\n */\nexport const PaymentMarketSettingSchema: GenMessage<PaymentMarketSetting> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 3);\n\n/**\n * @generated from message hiveng.v1.PaymentProductSetting\n */\nexport type PaymentProductSetting = Message<\"hiveng.v1.PaymentProductSetting\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 3;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: string product_id = 4;\n */\n productId: string;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 5;\n */\n productType: ProductType;\n\n /**\n * @generated from field: hiveng.v1.PaymentConsumePolicy consume_policy = 6;\n */\n consumePolicy: PaymentConsumePolicy;\n\n /**\n * @generated from field: hiveng.v1.PaymentGrantMode grant_mode = 7;\n */\n grantMode: PaymentGrantMode;\n\n /**\n * @generated from field: bool enabled = 8;\n */\n enabled: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 9;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 10;\n */\n updatedAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.PaymentProductSetting.\n * Use `create(PaymentProductSettingSchema)` to create a new message.\n */\nexport const PaymentProductSettingSchema: GenMessage<PaymentProductSetting> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 4);\n\n/**\n * @generated from message hiveng.v1.PaymentProduct\n */\nexport type PaymentProduct = Message<\"hiveng.v1.PaymentProduct\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 3;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: string product_id = 4;\n */\n productId: string;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 5;\n */\n productType: ProductType;\n\n /**\n * @generated from field: string market_status = 6;\n */\n marketStatus: string;\n\n /**\n * @generated from field: string title = 7;\n */\n title: string;\n\n /**\n * @generated from field: string description = 8;\n */\n description: string;\n\n /**\n * @generated from field: hiveng.v1.PaymentConsumePolicy consume_policy = 9;\n */\n consumePolicy: PaymentConsumePolicy;\n\n /**\n * @generated from field: hiveng.v1.PaymentGrantMode grant_mode = 10;\n */\n grantMode: PaymentGrantMode;\n\n /**\n * @generated from field: bool enabled = 11;\n */\n enabled: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp last_imported_at = 12;\n */\n lastImportedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 13;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: google.protobuf.Timestamp updated_at = 14;\n */\n updatedAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.PaymentProduct.\n * Use `create(PaymentProductSchema)` to create a new message.\n */\nexport const PaymentProductSchema: GenMessage<PaymentProduct> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 5);\n\n/**\n * @generated from message hiveng.v1.ListProductsRequest\n */\nexport type ListProductsRequest = Message<\"hiveng.v1.ListProductsRequest\"> & {\n /**\n * @generated from field: hiveng.v1.Market market = 1;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 2;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 3;\n */\n productType: ProductType;\n};\n\n/**\n * Describes the message hiveng.v1.ListProductsRequest.\n * Use `create(ListProductsRequestSchema)` to create a new message.\n */\nexport const ListProductsRequestSchema: GenMessage<ListProductsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 6);\n\n/**\n * @generated from message hiveng.v1.ListProductsResponse\n */\nexport type ListProductsResponse = Message<\"hiveng.v1.ListProductsResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.PaymentProduct products = 1;\n */\n products: PaymentProduct[];\n};\n\n/**\n * Describes the message hiveng.v1.ListProductsResponse.\n * Use `create(ListProductsResponseSchema)` to create a new message.\n */\nexport const ListProductsResponseSchema: GenMessage<ListProductsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 7);\n\n/**\n * @generated from message hiveng.v1.StartPurchaseRequest\n */\nexport type StartPurchaseRequest = Message<\"hiveng.v1.StartPurchaseRequest\"> & {\n /**\n * @generated from field: hiveng.v1.Market market = 1;\n */\n market: Market;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 3;\n */\n productType: ProductType;\n\n /**\n * @generated from field: string app_identifier = 4;\n */\n appIdentifier: string;\n};\n\n/**\n * Describes the message hiveng.v1.StartPurchaseRequest.\n * Use `create(StartPurchaseRequestSchema)` to create a new message.\n */\nexport const StartPurchaseRequestSchema: GenMessage<StartPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 8);\n\n/**\n * @generated from message hiveng.v1.StartPurchaseResponse\n */\nexport type StartPurchaseResponse = Message<\"hiveng.v1.StartPurchaseResponse\"> & {\n /**\n * @generated from field: string purchase_intent_id = 1;\n */\n purchaseIntentId: string;\n};\n\n/**\n * Describes the message hiveng.v1.StartPurchaseResponse.\n * Use `create(StartPurchaseResponseSchema)` to create a new message.\n */\nexport const StartPurchaseResponseSchema: GenMessage<StartPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 9);\n\n/**\n * @generated from message hiveng.v1.VerifyPurchaseRequest\n */\nexport type VerifyPurchaseRequest = Message<\"hiveng.v1.VerifyPurchaseRequest\"> & {\n /**\n * @generated from field: hiveng.v1.Market market = 1;\n */\n market: Market;\n\n /**\n * 마켓별 영수증 원문 (JSON/base64).\n *\n * @generated from field: string receipt_payload = 2;\n */\n receiptPayload: string;\n\n /**\n * @generated from field: string product_id = 3;\n */\n productId: string;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 4;\n */\n productType: ProductType;\n\n /**\n * @generated from field: string purchase_token = 5;\n */\n purchaseToken: string;\n\n /**\n * @generated from field: string package_name = 6 [deprecated = true];\n * @deprecated\n */\n packageName: string;\n\n /**\n * @generated from field: string app_identifier = 7;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: string purchase_intent_id = 8;\n */\n purchaseIntentId: string;\n};\n\n/**\n * Describes the message hiveng.v1.VerifyPurchaseRequest.\n * Use `create(VerifyPurchaseRequestSchema)` to create a new message.\n */\nexport const VerifyPurchaseRequestSchema: GenMessage<VerifyPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 10);\n\n/**\n * @generated from message hiveng.v1.VerifyPurchaseResponse\n */\nexport type VerifyPurchaseResponse = Message<\"hiveng.v1.VerifyPurchaseResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Purchase purchase = 1;\n */\n purchase?: Purchase | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.VerifyPurchaseResponse.\n * Use `create(VerifyPurchaseResponseSchema)` to create a new message.\n */\nexport const VerifyPurchaseResponseSchema: GenMessage<VerifyPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 11);\n\n/**\n * @generated from message hiveng.v1.PaymentServiceGetPurchaseRequest\n */\nexport type PaymentServiceGetPurchaseRequest = Message<\"hiveng.v1.PaymentServiceGetPurchaseRequest\"> & {\n /**\n * @generated from field: string purchase_id = 1;\n */\n purchaseId: string;\n};\n\n/**\n * Describes the message hiveng.v1.PaymentServiceGetPurchaseRequest.\n * Use `create(PaymentServiceGetPurchaseRequestSchema)` to create a new message.\n */\nexport const PaymentServiceGetPurchaseRequestSchema: GenMessage<PaymentServiceGetPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 12);\n\n/**\n * @generated from message hiveng.v1.PaymentServiceGetPurchaseResponse\n */\nexport type PaymentServiceGetPurchaseResponse = Message<\"hiveng.v1.PaymentServiceGetPurchaseResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Purchase purchase = 1;\n */\n purchase?: Purchase | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.PaymentServiceGetPurchaseResponse.\n * Use `create(PaymentServiceGetPurchaseResponseSchema)` to create a new message.\n */\nexport const PaymentServiceGetPurchaseResponseSchema: GenMessage<PaymentServiceGetPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 13);\n\n/**\n * @generated from message hiveng.v1.ConfirmPaymentGrantDeliveredRequest\n */\nexport type ConfirmPaymentGrantDeliveredRequest = Message<\"hiveng.v1.ConfirmPaymentGrantDeliveredRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string purchase_id = 2;\n */\n purchaseId: string;\n\n /**\n * @generated from field: string event_id = 3;\n */\n eventId: string;\n};\n\n/**\n * Describes the message hiveng.v1.ConfirmPaymentGrantDeliveredRequest.\n * Use `create(ConfirmPaymentGrantDeliveredRequestSchema)` to create a new message.\n */\nexport const ConfirmPaymentGrantDeliveredRequestSchema: GenMessage<ConfirmPaymentGrantDeliveredRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 14);\n\n/**\n * @generated from message hiveng.v1.ConfirmPaymentGrantDeliveredResponse\n */\nexport type ConfirmPaymentGrantDeliveredResponse = Message<\"hiveng.v1.ConfirmPaymentGrantDeliveredResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Purchase purchase = 1;\n */\n purchase?: Purchase | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ConfirmPaymentGrantDeliveredResponse.\n * Use `create(ConfirmPaymentGrantDeliveredResponseSchema)` to create a new message.\n */\nexport const ConfirmPaymentGrantDeliveredResponseSchema: GenMessage<ConfirmPaymentGrantDeliveredResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 15);\n\n/**\n * @generated from message hiveng.v1.GetPaymentSettingsRequest\n */\nexport type GetPaymentSettingsRequest = Message<\"hiveng.v1.GetPaymentSettingsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n};\n\n/**\n * Describes the message hiveng.v1.GetPaymentSettingsRequest.\n * Use `create(GetPaymentSettingsRequestSchema)` to create a new message.\n */\nexport const GetPaymentSettingsRequestSchema: GenMessage<GetPaymentSettingsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 16);\n\n/**\n * @generated from message hiveng.v1.GetPaymentSettingsResponse\n */\nexport type GetPaymentSettingsResponse = Message<\"hiveng.v1.GetPaymentSettingsResponse\"> & {\n /**\n * @generated from field: hiveng.v1.PaymentSettings settings = 1;\n */\n settings?: PaymentSettings | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.GetPaymentSettingsResponse.\n * Use `create(GetPaymentSettingsResponseSchema)` to create a new message.\n */\nexport const GetPaymentSettingsResponseSchema: GenMessage<GetPaymentSettingsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 17);\n\n/**\n * @generated from message hiveng.v1.SetPaymentSettingsRequest\n */\nexport type SetPaymentSettingsRequest = Message<\"hiveng.v1.SetPaymentSettingsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string google_play_package_name = 2 [deprecated = true];\n * @deprecated\n */\n googlePlayPackageName: string;\n};\n\n/**\n * Describes the message hiveng.v1.SetPaymentSettingsRequest.\n * Use `create(SetPaymentSettingsRequestSchema)` to create a new message.\n */\nexport const SetPaymentSettingsRequestSchema: GenMessage<SetPaymentSettingsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 18);\n\n/**\n * @generated from message hiveng.v1.SetPaymentSettingsResponse\n */\nexport type SetPaymentSettingsResponse = Message<\"hiveng.v1.SetPaymentSettingsResponse\"> & {\n /**\n * @generated from field: hiveng.v1.PaymentSettings settings = 1;\n */\n settings?: PaymentSettings | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.SetPaymentSettingsResponse.\n * Use `create(SetPaymentSettingsResponseSchema)` to create a new message.\n */\nexport const SetPaymentSettingsResponseSchema: GenMessage<SetPaymentSettingsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 19);\n\n/**\n * @generated from message hiveng.v1.UpsertPaymentMarketSettingRequest\n */\nexport type UpsertPaymentMarketSettingRequest = Message<\"hiveng.v1.UpsertPaymentMarketSettingRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 3;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: string display_name = 4;\n */\n displayName: string;\n\n /**\n * @generated from field: optional bool enabled = 5;\n */\n enabled?: boolean | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpsertPaymentMarketSettingRequest.\n * Use `create(UpsertPaymentMarketSettingRequestSchema)` to create a new message.\n */\nexport const UpsertPaymentMarketSettingRequestSchema: GenMessage<UpsertPaymentMarketSettingRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 20);\n\n/**\n * @generated from message hiveng.v1.UpsertPaymentMarketSettingResponse\n */\nexport type UpsertPaymentMarketSettingResponse = Message<\"hiveng.v1.UpsertPaymentMarketSettingResponse\"> & {\n /**\n * @generated from field: hiveng.v1.PaymentSettings settings = 1;\n */\n settings?: PaymentSettings | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpsertPaymentMarketSettingResponse.\n * Use `create(UpsertPaymentMarketSettingResponseSchema)` to create a new message.\n */\nexport const UpsertPaymentMarketSettingResponseSchema: GenMessage<UpsertPaymentMarketSettingResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 21);\n\n/**\n * @generated from message hiveng.v1.UpsertPaymentProductSettingRequest\n */\nexport type UpsertPaymentProductSettingRequest = Message<\"hiveng.v1.UpsertPaymentProductSettingRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 3;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: string product_id = 4;\n */\n productId: string;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 5;\n */\n productType: ProductType;\n\n /**\n * @generated from field: hiveng.v1.PaymentConsumePolicy consume_policy = 6;\n */\n consumePolicy: PaymentConsumePolicy;\n\n /**\n * @generated from field: hiveng.v1.PaymentGrantMode grant_mode = 7;\n */\n grantMode: PaymentGrantMode;\n\n /**\n * @generated from field: optional bool enabled = 8;\n */\n enabled?: boolean | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpsertPaymentProductSettingRequest.\n * Use `create(UpsertPaymentProductSettingRequestSchema)` to create a new message.\n */\nexport const UpsertPaymentProductSettingRequestSchema: GenMessage<UpsertPaymentProductSettingRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 22);\n\n/**\n * @generated from message hiveng.v1.UpsertPaymentProductSettingResponse\n */\nexport type UpsertPaymentProductSettingResponse = Message<\"hiveng.v1.UpsertPaymentProductSettingResponse\"> & {\n /**\n * @generated from field: hiveng.v1.PaymentSettings settings = 1;\n */\n settings?: PaymentSettings | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.UpsertPaymentProductSettingResponse.\n * Use `create(UpsertPaymentProductSettingResponseSchema)` to create a new message.\n */\nexport const UpsertPaymentProductSettingResponseSchema: GenMessage<UpsertPaymentProductSettingResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 23);\n\n/**\n * @generated from message hiveng.v1.ImportPaymentProductsRequest\n */\nexport type ImportPaymentProductsRequest = Message<\"hiveng.v1.ImportPaymentProductsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 3;\n */\n appIdentifier: string;\n};\n\n/**\n * Describes the message hiveng.v1.ImportPaymentProductsRequest.\n * Use `create(ImportPaymentProductsRequestSchema)` to create a new message.\n */\nexport const ImportPaymentProductsRequestSchema: GenMessage<ImportPaymentProductsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 24);\n\n/**\n * @generated from message hiveng.v1.ImportPaymentProductsResponse\n */\nexport type ImportPaymentProductsResponse = Message<\"hiveng.v1.ImportPaymentProductsResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.PaymentProduct products = 1;\n */\n products: PaymentProduct[];\n\n /**\n * @generated from field: int32 imported_count = 2;\n */\n importedCount: number;\n};\n\n/**\n * Describes the message hiveng.v1.ImportPaymentProductsResponse.\n * Use `create(ImportPaymentProductsResponseSchema)` to create a new message.\n */\nexport const ImportPaymentProductsResponseSchema: GenMessage<ImportPaymentProductsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 25);\n\n/**\n * @generated from message hiveng.v1.ListPaymentProductsRequest\n */\nexport type ListPaymentProductsRequest = Message<\"hiveng.v1.ListPaymentProductsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: string app_identifier = 3;\n */\n appIdentifier: string;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 4;\n */\n productType: ProductType;\n};\n\n/**\n * Describes the message hiveng.v1.ListPaymentProductsRequest.\n * Use `create(ListPaymentProductsRequestSchema)` to create a new message.\n */\nexport const ListPaymentProductsRequestSchema: GenMessage<ListPaymentProductsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 26);\n\n/**\n * @generated from message hiveng.v1.ListPaymentProductsResponse\n */\nexport type ListPaymentProductsResponse = Message<\"hiveng.v1.ListPaymentProductsResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.PaymentProduct products = 1;\n */\n products: PaymentProduct[];\n};\n\n/**\n * Describes the message hiveng.v1.ListPaymentProductsResponse.\n * Use `create(ListPaymentProductsResponseSchema)` to create a new message.\n */\nexport const ListPaymentProductsResponseSchema: GenMessage<ListPaymentProductsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 27);\n\n/**\n * @generated from message hiveng.v1.ListPurchasesRequest\n */\nexport type ListPurchasesRequest = Message<\"hiveng.v1.ListPurchasesRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * MARKET_UNSPECIFIED = 전체 마켓.\n *\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * 조회 시작 시각 (UTC, inclusive).\n *\n * @generated from field: google.protobuf.Timestamp from = 3;\n */\n from?: Timestamp | undefined;\n\n /**\n * 조회 종료 시각 (UTC, exclusive).\n *\n * @generated from field: google.protobuf.Timestamp to = 4;\n */\n to?: Timestamp | undefined;\n\n /**\n * @generated from field: hiveng.v1.PageRequest page = 5;\n */\n page?: PageRequest | undefined;\n\n /**\n * @generated from field: hiveng.v1.ProductType product_type = 6;\n */\n productType: ProductType;\n\n /**\n * @generated from field: hiveng.v1.PurchaseStatus status = 7;\n */\n status: PurchaseStatus;\n\n /**\n * @generated from field: string player_id = 8;\n */\n playerId: string;\n};\n\n/**\n * Describes the message hiveng.v1.ListPurchasesRequest.\n * Use `create(ListPurchasesRequestSchema)` to create a new message.\n */\nexport const ListPurchasesRequestSchema: GenMessage<ListPurchasesRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 28);\n\n/**\n * @generated from message hiveng.v1.ListPurchasesResponse\n */\nexport type ListPurchasesResponse = Message<\"hiveng.v1.ListPurchasesResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.Purchase purchases = 1;\n */\n purchases: Purchase[];\n\n /**\n * @generated from field: hiveng.v1.PageResponse page = 2;\n */\n page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ListPurchasesResponse.\n * Use `create(ListPurchasesResponseSchema)` to create a new message.\n */\nexport const ListPurchasesResponseSchema: GenMessage<ListPurchasesResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 29);\n\n/**\n * @generated from message hiveng.v1.GetPurchaseRequest\n */\nexport type GetPurchaseRequest = Message<\"hiveng.v1.GetPurchaseRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string purchase_id = 2;\n */\n purchaseId: string;\n};\n\n/**\n * Describes the message hiveng.v1.GetPurchaseRequest.\n * Use `create(GetPurchaseRequestSchema)` to create a new message.\n */\nexport const GetPurchaseRequestSchema: GenMessage<GetPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 30);\n\n/**\n * @generated from message hiveng.v1.GetPurchaseResponse\n */\nexport type GetPurchaseResponse = Message<\"hiveng.v1.GetPurchaseResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Purchase purchase = 1;\n */\n purchase?: Purchase | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.GetPurchaseResponse.\n * Use `create(GetPurchaseResponseSchema)` to create a new message.\n */\nexport const GetPurchaseResponseSchema: GenMessage<GetPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 31);\n\n/**\n * @generated from message hiveng.v1.ListSubscriptionsRequest\n */\nexport type ListSubscriptionsRequest = Message<\"hiveng.v1.ListSubscriptionsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: hiveng.v1.Market market = 2;\n */\n market: Market;\n\n /**\n * @generated from field: hiveng.v1.SubscriptionStatus status = 3;\n */\n status: SubscriptionStatus;\n\n /**\n * @generated from field: hiveng.v1.PageRequest page = 4;\n */\n page?: PageRequest | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ListSubscriptionsRequest.\n * Use `create(ListSubscriptionsRequestSchema)` to create a new message.\n */\nexport const ListSubscriptionsRequestSchema: GenMessage<ListSubscriptionsRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 32);\n\n/**\n * @generated from message hiveng.v1.ListSubscriptionsResponse\n */\nexport type ListSubscriptionsResponse = Message<\"hiveng.v1.ListSubscriptionsResponse\"> & {\n /**\n * @generated from field: repeated hiveng.v1.Subscription subscriptions = 1;\n */\n subscriptions: Subscription[];\n\n /**\n * @generated from field: hiveng.v1.PageResponse page = 2;\n */\n page?: PageResponse | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.ListSubscriptionsResponse.\n * Use `create(ListSubscriptionsResponseSchema)` to create a new message.\n */\nexport const ListSubscriptionsResponseSchema: GenMessage<ListSubscriptionsResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 33);\n\n/**\n * @generated from message hiveng.v1.GetSubscriptionRequest\n */\nexport type GetSubscriptionRequest = Message<\"hiveng.v1.GetSubscriptionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string subscription_id = 2;\n */\n subscriptionId: string;\n};\n\n/**\n * Describes the message hiveng.v1.GetSubscriptionRequest.\n * Use `create(GetSubscriptionRequestSchema)` to create a new message.\n */\nexport const GetSubscriptionRequestSchema: GenMessage<GetSubscriptionRequest> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 34);\n\n/**\n * @generated from message hiveng.v1.GetSubscriptionResponse\n */\nexport type GetSubscriptionResponse = Message<\"hiveng.v1.GetSubscriptionResponse\"> & {\n /**\n * @generated from field: hiveng.v1.Subscription subscription = 1;\n */\n subscription?: Subscription | undefined;\n};\n\n/**\n * Describes the message hiveng.v1.GetSubscriptionResponse.\n * Use `create(GetSubscriptionResponseSchema)` to create a new message.\n */\nexport const GetSubscriptionResponseSchema: GenMessage<GetSubscriptionResponse> = /*@__PURE__*/\n messageDesc(file_hiveng_v1_payment, 35);\n\n/**\n * 결제 마켓.\n *\n * @generated from enum hiveng.v1.Market\n */\nexport enum Market {\n /**\n * @generated from enum value: MARKET_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: MARKET_GOOGLE_PLAY = 1;\n */\n GOOGLE_PLAY = 1,\n\n /**\n * @generated from enum value: MARKET_APP_STORE = 2;\n */\n APP_STORE = 2,\n\n /**\n * @generated from enum value: MARKET_STEAM = 5;\n */\n STEAM = 5,\n\n /**\n * @generated from enum value: MARKET_WEB = 6;\n */\n WEB = 6,\n}\n\n/**\n * Describes the enum hiveng.v1.Market.\n */\nexport const MarketSchema: GenEnum<Market> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_payment, 0);\n\n/**\n * 구매 상태.\n *\n * @generated from enum hiveng.v1.PurchaseStatus\n */\nexport enum PurchaseStatus {\n /**\n * @generated from enum value: PURCHASE_STATUS_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PURCHASE_STATUS_PENDING = 1;\n */\n PENDING = 1,\n\n /**\n * @generated from enum value: PURCHASE_STATUS_VERIFIED = 2;\n */\n VERIFIED = 2,\n\n /**\n * @generated from enum value: PURCHASE_STATUS_FAILED = 3;\n */\n FAILED = 3,\n\n /**\n * @generated from enum value: PURCHASE_STATUS_REFUNDED = 4;\n */\n REFUNDED = 4,\n\n /**\n * @generated from enum value: PURCHASE_STATUS_CANCELED = 5;\n */\n CANCELED = 5,\n\n /**\n * @generated from enum value: PURCHASE_STATUS_EXPIRED = 6;\n */\n EXPIRED = 6,\n}\n\n/**\n * Describes the enum hiveng.v1.PurchaseStatus.\n */\nexport const PurchaseStatusSchema: GenEnum<PurchaseStatus> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_payment, 1);\n\n/**\n * @generated from enum hiveng.v1.ProductType\n */\nexport enum ProductType {\n /**\n * @generated from enum value: PRODUCT_TYPE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PRODUCT_TYPE_ONE_TIME = 1;\n */\n ONE_TIME = 1,\n\n /**\n * @generated from enum value: PRODUCT_TYPE_SUBSCRIPTION = 2;\n */\n SUBSCRIPTION = 2,\n}\n\n/**\n * Describes the enum hiveng.v1.ProductType.\n */\nexport const ProductTypeSchema: GenEnum<ProductType> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_payment, 2);\n\n/**\n * @generated from enum hiveng.v1.PaymentConsumePolicy\n */\nexport enum PaymentConsumePolicy {\n /**\n * @generated from enum value: PAYMENT_CONSUME_POLICY_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PAYMENT_CONSUME_POLICY_NONE = 1;\n */\n NONE = 1,\n\n /**\n * @generated from enum value: PAYMENT_CONSUME_POLICY_CONSUME_AFTER_GRANT = 2;\n */\n CONSUME_AFTER_GRANT = 2,\n}\n\n/**\n * Describes the enum hiveng.v1.PaymentConsumePolicy.\n */\nexport const PaymentConsumePolicySchema: GenEnum<PaymentConsumePolicy> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_payment, 3);\n\n/**\n * @generated from enum hiveng.v1.PaymentGrantMode\n */\nexport enum PaymentGrantMode {\n /**\n * @generated from enum value: PAYMENT_GRANT_MODE_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PAYMENT_GRANT_MODE_WEBHOOK_REQUIRED = 1;\n */\n WEBHOOK_REQUIRED = 1,\n\n /**\n * @generated from enum value: PAYMENT_GRANT_MODE_NO_GRANT = 2;\n */\n NO_GRANT = 2,\n\n /**\n * @generated from enum value: PAYMENT_GRANT_MODE_CLIENT_GRANT = 3;\n */\n CLIENT_GRANT = 3,\n}\n\n/**\n * Describes the enum hiveng.v1.PaymentGrantMode.\n */\nexport const PaymentGrantModeSchema: GenEnum<PaymentGrantMode> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_payment, 4);\n\n/**\n * @generated from enum hiveng.v1.SubscriptionStatus\n */\nexport enum SubscriptionStatus {\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_ACTIVE = 1;\n */\n ACTIVE = 1,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_IN_GRACE_PERIOD = 2;\n */\n IN_GRACE_PERIOD = 2,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_ON_HOLD = 3;\n */\n ON_HOLD = 3,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_PAUSED = 4;\n */\n PAUSED = 4,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_CANCELED = 5;\n */\n CANCELED = 5,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_EXPIRED = 6;\n */\n EXPIRED = 6,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_PENDING = 7;\n */\n PENDING = 7,\n\n /**\n * @generated from enum value: SUBSCRIPTION_STATUS_FAILED = 8;\n */\n FAILED = 8,\n}\n\n/**\n * Describes the enum hiveng.v1.SubscriptionStatus.\n */\nexport const SubscriptionStatusSchema: GenEnum<SubscriptionStatus> = /*@__PURE__*/\n enumDesc(file_hiveng_v1_payment, 5);\n\n/**\n * 클라이언트 SDK용 결제 서비스.\n *\n * @generated from service hiveng.v1.PaymentService\n */\nexport const PaymentService: GenService<{\n /**\n * 클라이언트에 노출 가능한 상품 목록 조회.\n * auth: api_key + player_token\n *\n * @generated from rpc hiveng.v1.PaymentService.ListProducts\n */\n listProducts: {\n methodKind: \"unary\";\n input: typeof ListProductsRequestSchema;\n output: typeof ListProductsResponseSchema;\n },\n /**\n * 구매 시작 기록. 실제 마켓 결제창을 열기 전에 호출한다.\n * auth: api_key + player_token\n *\n * @generated from rpc hiveng.v1.PaymentService.StartPurchase\n */\n startPurchase: {\n methodKind: \"unary\";\n input: typeof StartPurchaseRequestSchema;\n output: typeof StartPurchaseResponseSchema;\n },\n /**\n * 마켓 영수증 검증. 이미 처리된 영수증이면 ERROR_CODE_DUPLICATE_RECEIPT 반환.\n * auth: api_key + player_token\n *\n * @generated from rpc hiveng.v1.PaymentService.VerifyPurchase\n */\n verifyPurchase: {\n methodKind: \"unary\";\n input: typeof VerifyPurchaseRequestSchema;\n output: typeof VerifyPurchaseResponseSchema;\n },\n /**\n * 로그인 플레이어의 구매 내역 단건 조회.\n * auth: api_key + player_token\n *\n * @generated from rpc hiveng.v1.PaymentService.GetPurchase\n */\n getPurchase: {\n methodKind: \"unary\";\n input: typeof PaymentServiceGetPurchaseRequestSchema;\n output: typeof PaymentServiceGetPurchaseResponseSchema;\n },\n /**\n * 게임 서버 웹훅 지급 완료 확인.\n * auth: service\n *\n * @generated from rpc hiveng.v1.PaymentService.ConfirmPaymentGrantDelivered\n */\n confirmPaymentGrantDelivered: {\n methodKind: \"unary\";\n input: typeof ConfirmPaymentGrantDeliveredRequestSchema;\n output: typeof ConfirmPaymentGrantDeliveredResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_payment, 0);\n\n/**\n * 콘솔·MCP용 결제 관리 서비스.\n *\n * @generated from service hiveng.v1.ConsolePaymentService\n */\nexport const ConsolePaymentService: GenService<{\n /**\n * 결제 설정 조회.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.GetPaymentSettings\n */\n getPaymentSettings: {\n methodKind: \"unary\";\n input: typeof GetPaymentSettingsRequestSchema;\n output: typeof GetPaymentSettingsResponseSchema;\n },\n /**\n * 결제 설정 저장.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.SetPaymentSettings\n */\n setPaymentSettings: {\n methodKind: \"unary\";\n input: typeof SetPaymentSettingsRequestSchema;\n output: typeof SetPaymentSettingsResponseSchema;\n },\n /**\n * 마켓별 앱 식별자 저장.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.UpsertPaymentMarketSetting\n */\n upsertPaymentMarketSetting: {\n methodKind: \"unary\";\n input: typeof UpsertPaymentMarketSettingRequestSchema;\n output: typeof UpsertPaymentMarketSettingResponseSchema;\n },\n /**\n * 상품별 결제 처리 정책 저장.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.UpsertPaymentProductSetting\n */\n upsertPaymentProductSetting: {\n methodKind: \"unary\";\n input: typeof UpsertPaymentProductSettingRequestSchema;\n output: typeof UpsertPaymentProductSettingResponseSchema;\n },\n /**\n * 마켓에서 상품 목록을 가져와 저장.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.ImportPaymentProducts\n */\n importPaymentProducts: {\n methodKind: \"unary\";\n input: typeof ImportPaymentProductsRequestSchema;\n output: typeof ImportPaymentProductsResponseSchema;\n },\n /**\n * 저장된 상품 목록 조회.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.ListPaymentProducts\n */\n listPaymentProducts: {\n methodKind: \"unary\";\n input: typeof ListPaymentProductsRequestSchema;\n output: typeof ListPaymentProductsResponseSchema;\n },\n /**\n * 구매 내역 목록 조회.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.ListPurchases\n */\n listPurchases: {\n methodKind: \"unary\";\n input: typeof ListPurchasesRequestSchema;\n output: typeof ListPurchasesResponseSchema;\n },\n /**\n * 구매 내역 단건 조회.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.GetPurchase\n */\n getPurchase: {\n methodKind: \"unary\";\n input: typeof GetPurchaseRequestSchema;\n output: typeof GetPurchaseResponseSchema;\n },\n /**\n * 구독 내역 목록 조회.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.ListSubscriptions\n */\n listSubscriptions: {\n methodKind: \"unary\";\n input: typeof ListSubscriptionsRequestSchema;\n output: typeof ListSubscriptionsResponseSchema;\n },\n /**\n * 구독 내역 단건 조회.\n * auth: admin_jwt\n *\n * @generated from rpc hiveng.v1.ConsolePaymentService.GetSubscription\n */\n getSubscription: {\n methodKind: \"unary\";\n input: typeof GetSubscriptionRequestSchema;\n output: typeof GetSubscriptionResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_hiveng_v1_payment, 1);\n\n","import { timestampDate } from \"@bufbuild/protobuf/wkt\";\nimport type { Client } from \"@connectrpc/connect\";\nimport {\n MailboxService,\n MailType,\n type Mail as MailMessage,\n} from \"./gen/hiveng/v1/mailbox_pb\";\nimport { HiveNgError, toHiveNgError } from \"./errors\";\n\nexport interface Mail {\n id: string;\n mailId: string;\n projectId: string;\n type: MailType;\n title: string;\n body: string;\n sender: string;\n rewardPreview: Record<string, string>;\n claimed: boolean;\n claimableFrom?: Date;\n expiresAt?: Date;\n claimedAt?: Date;\n createdAt?: Date;\n rewardDisplay: MailRewardDisplayItem[];\n}\n\nexport interface MailRewardDisplayItem {\n icon: string;\n label: string;\n quantity: string;\n}\n\nexport interface ListMailOptions {\n pageSize?: number;\n pageToken?: string;\n includeClaimed?: boolean;\n}\n\nexport interface ListMailResult {\n mail: Mail[];\n nextPageToken: string;\n total: bigint;\n}\n\nexport interface CheckNewMailResult {\n hasNewMail: boolean;\n unreadCount: bigint;\n}\n\nexport type MailboxClient = Client<typeof MailboxService>;\n\nexport class MailboxApi {\n private client: MailboxClient | null = null;\n\n constructor(private readonly language: string) {}\n\n bind(client: MailboxClient): void {\n this.client = client;\n }\n\n unbind(): void {\n this.client = null;\n }\n\n async listMail(options: ListMailOptions = {}): Promise<ListMailResult> {\n const client = this.requireClient();\n try {\n const res = await client.listMail({\n page: {\n pageSize: options.pageSize ?? 20,\n pageToken: options.pageToken ?? \"\",\n },\n includeClaimed: options.includeClaimed ?? false,\n });\n return {\n mail: res.mail.map((mail) => mapMail(mail, this.language)),\n nextPageToken: res.page?.nextPageToken ?? \"\",\n total: res.page?.total ?? 0n,\n };\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n async checkNewMail(): Promise<CheckNewMailResult> {\n const client = this.requireClient();\n try {\n const res = await client.checkNewMail({});\n return {\n hasNewMail: res.hasNewMail,\n unreadCount: res.unreadCount,\n };\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n async claimMail(mailRecipientId: string): Promise<Mail> {\n const client = this.requireClient();\n try {\n const res = await client.claimMail({ mailRecipientId });\n if (!res.mail) {\n throw new HiveNgError(\"INTERNAL\", \"claim response missing mail\");\n }\n return mapMail(res.mail, this.language);\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n private requireClient(): MailboxClient {\n if (this.client === null) {\n throw new HiveNgError(\"NOT_FOUND\", \"discovery returned no endpoint for domain: mailbox\");\n }\n return this.client;\n }\n}\n\nfunction mapMail(message: MailMessage, language: string): Mail {\n return {\n id: message.id,\n mailId: message.mailId,\n projectId: message.projectId,\n type: message.type,\n title: resolveLocalized(message.title, language),\n body: resolveLocalized(message.body, language),\n sender: message.sender,\n rewardPreview: message.rewardPreview,\n rewardDisplay: message.rewardDisplay.map((item) => ({\n icon: item.icon,\n label: item.label,\n quantity: item.quantity,\n })),\n claimed: message.claimed,\n claimableFrom: message.claimableFrom ? timestampDate(message.claimableFrom) : undefined,\n expiresAt: message.expiresAt ? timestampDate(message.expiresAt) : undefined,\n claimedAt: message.claimedAt ? timestampDate(message.claimedAt) : undefined,\n createdAt: message.createdAt ? timestampDate(message.createdAt) : undefined,\n };\n}\n\nfunction resolveLocalized(values: Record<string, string>, language: string): string {\n const normalized = language.trim();\n if (normalized) {\n const exact = values[normalized];\n if (exact !== undefined) {\n return exact;\n }\n const dash = normalized.indexOf(\"-\");\n if (dash > 0) {\n const base = values[normalized.substring(0, dash)];\n if (base !== undefined) {\n return base;\n }\n }\n }\n if (values.en !== undefined) {\n return values.en;\n }\n if (values.ko !== undefined) {\n return values.ko;\n }\n const firstKey = Object.keys(values).sort()[0];\n return firstKey ? values[firstKey] : \"\";\n}\n","import { timestampDate } from \"@bufbuild/protobuf/wkt\";\nimport type { Client } from \"@connectrpc/connect\";\nimport {\n NoticeService,\n type Notice as NoticeMessage,\n} from \"./gen/hiveng/v1/notice_pb\";\nimport { HiveNgError, toHiveNgError } from \"./errors\";\n\nexport interface Notice {\n id: string;\n projectId: string;\n title: string;\n body: string;\n startsAt?: Date;\n endsAt?: Date;\n viewCount: bigint;\n}\n\nexport type NoticeClient = Client<typeof NoticeService>;\n\nexport class NoticeApi {\n private client: NoticeClient | null = null;\n\n constructor(private readonly language: string) {}\n\n bind(client: NoticeClient): void {\n this.client = client;\n }\n\n unbind(): void {\n this.client = null;\n }\n\n async listActiveNotices(): Promise<Notice[]> {\n const client = this.requireClient();\n try {\n const res = await client.listActiveNotices({});\n return res.notices.map((notice) => mapNotice(notice, this.language));\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n private requireClient(): NoticeClient {\n if (this.client === null) {\n throw new HiveNgError(\"NOT_FOUND\", \"discovery returned no endpoint for domain: notice\");\n }\n return this.client;\n }\n}\n\nfunction mapNotice(message: NoticeMessage, language: string): Notice {\n return {\n id: message.id,\n projectId: message.projectId,\n title: resolveLocalized(message.title, language),\n body: resolveLocalized(message.body, language),\n startsAt: message.startsAt ? timestampDate(message.startsAt) : undefined,\n endsAt: message.endsAt ? timestampDate(message.endsAt) : undefined,\n viewCount: message.viewCount,\n };\n}\n\nfunction resolveLocalized(values: Record<string, string>, language: string): string {\n const normalized = language.trim();\n if (normalized) {\n const exact = values[normalized];\n if (exact !== undefined) {\n return exact;\n }\n const dash = normalized.indexOf(\"-\");\n if (dash > 0) {\n const base = values[normalized.substring(0, dash)];\n if (base !== undefined) {\n return base;\n }\n }\n }\n if (values.en !== undefined) {\n return values.en;\n }\n if (values.ko !== undefined) {\n return values.ko;\n }\n const firstKey = Object.keys(values).sort()[0];\n return firstKey ? values[firstKey] : \"\";\n}\n","import { timestampDate } from \"@bufbuild/protobuf/wkt\";\nimport type { Client } from \"@connectrpc/connect\";\nimport {\n Market,\n PaymentService,\n ProductType,\n PurchaseStatus,\n type Purchase as PurchaseMessage,\n} from \"./gen/hiveng/v1/payment_pb\";\nimport { HiveNgError, toHiveNgError } from \"./errors\";\n\nconst GRANT_POLL_DELAYS_MILLIS = [1_000, 2_000, 3_000, 5_000];\nconst DEFAULT_GRANT_WAIT_TIMEOUT_MILLIS = 30_000;\n\nexport interface PaymentPurchase {\n id: string;\n projectId: string;\n playerId: string;\n market: string;\n productType: string;\n productId: string;\n packageName: string;\n purchaseIntentId: string;\n amountMinor: bigint;\n currency: string;\n status: string;\n grantStatus: string;\n consumeStatus: string;\n marketOrderId: string;\n purchasedAt?: Date;\n verifiedAt?: Date;\n}\n\nexport type PaymentClient = Client<typeof PaymentService>;\n\nexport class PaymentApi {\n private client: PaymentClient | null = null;\n\n bind(client: PaymentClient): void {\n this.client = client;\n }\n\n unbind(): void {\n this.client = null;\n }\n\n async getPurchase(purchaseId: string): Promise<PaymentPurchase> {\n if (!purchaseId) {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"purchaseId is required\");\n }\n const client = this.requireClient();\n try {\n const res = await client.getPurchase({ purchaseId });\n if (!res.purchase) {\n throw new HiveNgError(\"INTERNAL\", \"get purchase response missing purchase\");\n }\n return mapPurchase(res.purchase);\n } catch (err) {\n throw toHiveNgError(err);\n }\n }\n\n async waitForPaymentGrant(\n purchaseId: string,\n timeoutMillis = DEFAULT_GRANT_WAIT_TIMEOUT_MILLIS,\n ): Promise<PaymentPurchase> {\n if (!purchaseId) {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"purchaseId is required\");\n }\n if (timeoutMillis <= 0) {\n throw new HiveNgError(\"INVALID_ARGUMENT\", \"timeoutMillis must be positive\");\n }\n const startedAt = Date.now();\n let purchase = await this.getPurchase(purchaseId);\n if (isGrantFinished(purchase) || isPurchaseFailed(purchase)) {\n return purchase;\n }\n let delayIndex = 0;\n let elapsed = Date.now() - startedAt;\n while (elapsed < timeoutMillis) {\n const remainingMillis = timeoutMillis - elapsed;\n const delayMillis = Math.min(nextDelayMillis(delayIndex), remainingMillis);\n await sleep(delayMillis);\n purchase = await this.getPurchase(purchaseId);\n if (isGrantFinished(purchase) || isPurchaseFailed(purchase)) {\n return purchase;\n }\n delayIndex += 1;\n elapsed = Date.now() - startedAt;\n }\n return purchase;\n }\n\n private requireClient(): PaymentClient {\n if (this.client === null) {\n throw new HiveNgError(\"NOT_FOUND\", \"discovery returned no endpoint for domain: payment\");\n }\n return this.client;\n }\n}\n\nfunction mapPurchase(message: PurchaseMessage): PaymentPurchase {\n return {\n id: message.id,\n projectId: message.projectId,\n playerId: message.playerId,\n market: marketName(message.market),\n productType: productTypeName(message.productType),\n productId: message.productId,\n packageName: message.packageName,\n purchaseIntentId: message.purchaseIntentId,\n amountMinor: message.amountMinor,\n currency: message.currency,\n status: purchaseStatusName(message.status),\n grantStatus: message.grantStatus,\n consumeStatus: message.consumeStatus,\n marketOrderId: message.marketOrderId,\n purchasedAt: message.purchasedAt ? timestampDate(message.purchasedAt) : undefined,\n verifiedAt: message.verifiedAt ? timestampDate(message.verifiedAt) : undefined,\n };\n}\n\nfunction marketName(market: Market): string {\n const names: { [value: number]: string } = {\n [Market.GOOGLE_PLAY]: \"google_play\",\n [Market.APP_STORE]: \"app_store\",\n [Market.STEAM]: \"steam\",\n [Market.WEB]: \"web\",\n };\n return names[market] ?? \"unspecified\";\n}\n\nfunction productTypeName(productType: ProductType): string {\n const names: { [value: number]: string } = {\n [ProductType.ONE_TIME]: \"one_time\",\n [ProductType.SUBSCRIPTION]: \"subscription\",\n };\n return names[productType] ?? \"unspecified\";\n}\n\nfunction purchaseStatusName(status: PurchaseStatus): string {\n const names: { [value: number]: string } = {\n [PurchaseStatus.PENDING]: \"pending\",\n [PurchaseStatus.VERIFIED]: \"verified\",\n [PurchaseStatus.FAILED]: \"failed\",\n [PurchaseStatus.REFUNDED]: \"refunded\",\n [PurchaseStatus.CANCELED]: \"canceled\",\n [PurchaseStatus.EXPIRED]: \"expired\",\n };\n return names[status] ?? \"unspecified\";\n}\n\nfunction isGrantFinished(purchase: PaymentPurchase): boolean {\n return purchase.grantStatus === \"delivered\" || purchase.grantStatus === \"not_required\";\n}\n\nfunction isPurchaseFailed(purchase: PaymentPurchase): boolean {\n return [\"failed\", \"canceled\", \"refunded\", \"expired\"].includes(purchase.status);\n}\n\nfunction nextDelayMillis(index: number): number {\n if (index < GRANT_POLL_DELAYS_MILLIS.length) {\n return GRANT_POLL_DELAYS_MILLIS[index];\n }\n return GRANT_POLL_DELAYS_MILLIS[GRANT_POLL_DELAYS_MILLIS.length - 1];\n}\n\nfunction sleep(millis: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, millis);\n });\n}\n","export interface KeyValueStorage {\n get(key: string): string | null;\n set(key: string, value: string): void;\n remove(key: string): void;\n}\n\nexport const STORAGE_KEYS = {\n accessToken: \"hive-ng.player.token\",\n refreshToken: \"hive-ng.player.refresh\",\n deviceId: \"hive-ng.device.id\",\n} as const;\n\nclass MemoryStorage implements KeyValueStorage {\n private readonly map = new Map<string, string>();\n\n get(key: string): string | null {\n return this.map.get(key) ?? null;\n }\n\n set(key: string, value: string): void {\n this.map.set(key, value);\n }\n\n remove(key: string): void {\n this.map.delete(key);\n }\n}\n\nclass LocalStorage implements KeyValueStorage {\n constructor(private readonly backing: Storage) {}\n\n get(key: string): string | null {\n return this.backing.getItem(key);\n }\n\n set(key: string, value: string): void {\n this.backing.setItem(key, value);\n }\n\n remove(key: string): void {\n this.backing.removeItem(key);\n }\n}\n\nexport function resolveStorage(persist: boolean): KeyValueStorage {\n if (!persist) {\n return new MemoryStorage();\n }\n // localStorage 접근 자체가 막힌 환경(프라이버시 모드 등)은 인메모리로 폴백\n try {\n const backing = globalThis.localStorage;\n if (backing === undefined) {\n return new MemoryStorage();\n }\n const probeKey = \"hive-ng.storage.probe\";\n backing.setItem(probeKey, \"1\");\n backing.removeItem(probeKey);\n return new LocalStorage(backing);\n } catch {\n return new MemoryStorage();\n }\n}\n","import type { TokenPair } from \"./gen/hiveng/v1/auth_pb\";\nimport { BannedError, toHiveNgError } from \"./errors\";\nimport { STORAGE_KEYS, type KeyValueStorage } from \"./storage\";\n\nexport type RefreshFn = (refreshToken: string) => Promise<TokenPair>;\n\nexport class Session {\n onCleared?: () => void;\n onBanned?: (err: BannedError) => void;\n refreshFn?: RefreshFn;\n\n private refreshing?: Promise<boolean>;\n private refreshError?: unknown;\n\n constructor(private readonly storage: KeyValueStorage) {}\n\n get accessToken(): string | null {\n return this.storage.get(STORAGE_KEYS.accessToken);\n }\n\n get refreshToken(): string | null {\n return this.storage.get(STORAGE_KEYS.refreshToken);\n }\n\n save(pair: TokenPair): void {\n this.storage.set(STORAGE_KEYS.accessToken, pair.accessToken);\n this.storage.set(STORAGE_KEYS.refreshToken, pair.refreshToken);\n }\n\n clear(): void {\n this.storage.remove(STORAGE_KEYS.accessToken);\n this.storage.remove(STORAGE_KEYS.refreshToken);\n this.onCleared?.();\n }\n\n // 동시 다발 401에서도 refresh는 1회만 수행 (single-flight)\n tryRefresh(): Promise<boolean> {\n if (!this.refreshing) {\n this.refreshError = undefined;\n this.refreshing = this.doRefresh().finally(() => {\n this.refreshing = undefined;\n });\n }\n return this.refreshing;\n }\n\n consumeRefreshError(): unknown {\n const err = this.refreshError;\n this.refreshError = undefined;\n return err;\n }\n\n private async doRefresh(): Promise<boolean> {\n const refreshToken = this.refreshToken;\n if (refreshToken === null || this.refreshFn === undefined) {\n return false;\n }\n try {\n const pair = await this.refreshFn(refreshToken);\n this.save(pair);\n return true;\n } catch (err) {\n const mapped = toHiveNgError(err);\n this.refreshError = mapped;\n if (mapped instanceof BannedError) {\n this.onBanned?.(mapped);\n }\n this.clear();\n return false;\n }\n }\n}\n","import type { Interceptor } from \"@connectrpc/connect\";\nimport { createConnectTransport } from \"@connectrpc/connect-web\";\nimport type { TransportFactory } from \"./config\";\nimport { ErrorCode } from \"./gen/hiveng/v1/common_pb\";\nimport { errorCodeOf } from \"./errors\";\nimport type { Session } from \"./session\";\n\nexport const defaultTransportFactory: TransportFactory = ({ baseUrl, interceptors }) =>\n createConnectTransport({ baseUrl, useBinaryFormat: true, interceptors });\n\nexport function createAuthInterceptor(apiKey: string, language: string, session: Session): Interceptor {\n return (next) => async (req) => {\n req.header.set(\"Authorization\", `Bearer ${apiKey}`);\n if (language) {\n req.header.set(\"X-Hive-Ng-Language\", language);\n }\n const accessToken = session.accessToken;\n if (accessToken !== null && req.method.name !== \"RefreshToken\") {\n req.header.set(\"X-Player-Token\", accessToken);\n } else {\n req.header.delete(\"X-Player-Token\");\n }\n return next(req);\n };\n}\n\nexport function createRefreshInterceptor(session: Session): Interceptor {\n return (next) => async (req) => {\n try {\n return await next(req);\n } catch (err) {\n if (errorCodeOf(err) !== ErrorCode.SESSION_EXPIRED) {\n throw err;\n }\n // RefreshToken 자신의 실패에 재귀 진입 금지\n if (req.method.name === \"RefreshToken\") {\n throw err;\n }\n const refreshed = await session.tryRefresh();\n if (!refreshed) {\n const refreshError = session.consumeRefreshError();\n if (refreshError !== undefined) {\n throw refreshError;\n }\n throw err;\n }\n return next(req);\n }\n };\n}\n","import { createClient } from \"@connectrpc/connect\";\nimport { AuthApi } from \"./auth\";\nimport {\n resolveConfig,\n type HiveNgConfig,\n type ResolvedConfig,\n type TransportFactory,\n} from \"./config\";\nimport { requireEndpoint, resolveEndpoints } from \"./discovery\";\nimport { HiveNgError } from \"./errors\";\nimport { AuthService } from \"./gen/hiveng/v1/auth_pb\";\nimport { MailboxService } from \"./gen/hiveng/v1/mailbox_pb\";\nimport { NoticeService } from \"./gen/hiveng/v1/notice_pb\";\nimport { PaymentService } from \"./gen/hiveng/v1/payment_pb\";\nimport { MailboxApi } from \"./mailbox\";\nimport { NoticeApi } from \"./notice\";\nimport { PaymentApi } from \"./payment\";\nimport { Session } from \"./session\";\nimport { resolveStorage } from \"./storage\";\nimport {\n createAuthInterceptor,\n createRefreshInterceptor,\n defaultTransportFactory,\n} from \"./transport\";\n\nexport class HiveNgClient {\n readonly auth: AuthApi;\n readonly notice: NoticeApi;\n readonly mailbox: MailboxApi;\n readonly payment: PaymentApi;\n\n private readonly config: ResolvedConfig;\n private readonly session: Session;\n private readonly factory: TransportFactory;\n private endpoints = new Map<string, string>();\n private ready = false;\n\n constructor(config: HiveNgConfig) {\n this.config = resolveConfig(config);\n this.session = new Session(resolveStorage(this.config.persistSession));\n this.factory = config.transportFactory ?? defaultTransportFactory;\n this.auth = new AuthApi(this.session);\n this.notice = new NoticeApi(this.config.language);\n this.mailbox = new MailboxApi(this.config.language);\n this.payment = new PaymentApi();\n }\n\n // 게이트웨이 디스커버리로 도메인별 베이스 URL을 받아 도메인 클라이언트를 구성한다.\n async init(): Promise<void> {\n const gatewayTransport = this.factory({\n baseUrl: this.config.gatewayUrl,\n interceptors: [],\n });\n const { endpoints } = await resolveEndpoints(\n gatewayTransport,\n this.config.clientVersion,\n this.config.projectId,\n );\n this.endpoints = endpoints;\n\n const authBaseUrl = requireEndpoint(endpoints, \"auth\");\n const authTransport = this.factory({\n baseUrl: authBaseUrl,\n interceptors: [\n createAuthInterceptor(this.config.apiKey, this.config.language, this.session),\n createRefreshInterceptor(this.session),\n ],\n });\n const authClient = createClient(AuthService, authTransport);\n const noticeBaseUrl = endpoints.get(\"notice\");\n if (noticeBaseUrl) {\n const noticeTransport = this.factory({\n baseUrl: noticeBaseUrl,\n interceptors: [\n createAuthInterceptor(this.config.apiKey, this.config.language, this.session),\n createRefreshInterceptor(this.session),\n ],\n });\n this.notice.bind(createClient(NoticeService, noticeTransport));\n } else {\n this.notice.unbind();\n }\n const mailboxBaseUrl = endpoints.get(\"mailbox\");\n if (mailboxBaseUrl) {\n const mailboxTransport = this.factory({\n baseUrl: mailboxBaseUrl,\n interceptors: [\n createAuthInterceptor(this.config.apiKey, this.config.language, this.session),\n createRefreshInterceptor(this.session),\n ],\n });\n this.mailbox.bind(createClient(MailboxService, mailboxTransport));\n } else {\n this.mailbox.unbind();\n }\n const paymentBaseUrl = endpoints.get(\"payment\");\n if (paymentBaseUrl) {\n const paymentTransport = this.factory({\n baseUrl: paymentBaseUrl,\n interceptors: [\n createAuthInterceptor(this.config.apiKey, this.config.language, this.session),\n createRefreshInterceptor(this.session),\n ],\n });\n this.payment.bind(createClient(PaymentService, paymentTransport));\n } else {\n this.payment.unbind();\n }\n\n this.session.refreshFn = async (refreshToken) => {\n const res = await authClient.refreshToken({ refreshToken });\n if (!res.tokenPair) {\n throw new HiveNgError(\"INTERNAL\", \"refresh response missing token pair\");\n }\n return res.tokenPair;\n };\n this.session.onCleared = () => this.auth.clearPlayer();\n this.auth.bind(authClient);\n this.ready = true;\n }\n\n isReady(): boolean {\n return this.ready;\n }\n\n endpointFor(domain: string): string | undefined {\n return this.endpoints.get(domain);\n }\n}\n\nexport function createHiveNg(config: HiveNgConfig): HiveNgClient {\n return new HiveNgClient(config);\n}\n"]}
|