@hive-ng/web-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1676 @@
1
+ import { Client, Interceptor, Transport } from '@connectrpc/connect';
2
+ import { GenService, GenMessage } from '@bufbuild/protobuf/codegenv2';
3
+ import { Timestamp } from '@bufbuild/protobuf/wkt';
4
+ import { Message } from '@bufbuild/protobuf';
5
+
6
+ /**
7
+ * connect 에러 detail에 담기는 구조화 에러 정보.
8
+ *
9
+ * @generated from message hiveng.v1.ErrorDetail
10
+ */
11
+ type ErrorDetail = Message<"hiveng.v1.ErrorDetail"> & {
12
+ /**
13
+ * @generated from field: hiveng.v1.ErrorCode code = 1;
14
+ */
15
+ code: ErrorCode;
16
+ /**
17
+ * 부가 정보 (예: banned_until, maintenance_ends_at 등 — 코드별로 문서화)
18
+ *
19
+ * @generated from field: map<string, string> metadata = 2;
20
+ */
21
+ metadata: {
22
+ [key: string]: string;
23
+ };
24
+ };
25
+ /**
26
+ * 페이지네이션 요청. page_token은 첫 페이지에서 빈 문자열.
27
+ *
28
+ * @generated from message hiveng.v1.PageRequest
29
+ */
30
+ type PageRequest = Message<"hiveng.v1.PageRequest"> & {
31
+ /**
32
+ * @generated from field: int32 page_size = 1;
33
+ */
34
+ pageSize: number;
35
+ /**
36
+ * @generated from field: string page_token = 2;
37
+ */
38
+ pageToken: string;
39
+ };
40
+ /**
41
+ * 페이지네이션 응답. next_page_token이 빈 문자열이면 마지막 페이지.
42
+ *
43
+ * @generated from message hiveng.v1.PageResponse
44
+ */
45
+ type PageResponse = Message<"hiveng.v1.PageResponse"> & {
46
+ /**
47
+ * @generated from field: string next_page_token = 1;
48
+ */
49
+ nextPageToken: string;
50
+ /**
51
+ * @generated from field: int64 total = 2;
52
+ */
53
+ total: bigint;
54
+ };
55
+ /**
56
+ * 모든 도메인 에러의 단일 코드 체계.
57
+ * 백엔드는 connect 에러의 detail에 ErrorDetail을 담아 반환하고,
58
+ * 클라이언트/SDK는 문자열 파싱 없이 이 코드로 분기한다.
59
+ *
60
+ * @generated from enum hiveng.v1.ErrorCode
61
+ */
62
+ declare enum ErrorCode {
63
+ /**
64
+ * @generated from enum value: ERROR_CODE_UNSPECIFIED = 0;
65
+ */
66
+ UNSPECIFIED = 0,
67
+ /**
68
+ * 공통 (1-99)
69
+ *
70
+ * @generated from enum value: ERROR_CODE_INTERNAL = 1;
71
+ */
72
+ INTERNAL = 1,
73
+ /**
74
+ * @generated from enum value: ERROR_CODE_INVALID_ARGUMENT = 2;
75
+ */
76
+ INVALID_ARGUMENT = 2,
77
+ /**
78
+ * @generated from enum value: ERROR_CODE_NOT_FOUND = 3;
79
+ */
80
+ NOT_FOUND = 3,
81
+ /**
82
+ * @generated from enum value: ERROR_CODE_ALREADY_EXISTS = 4;
83
+ */
84
+ ALREADY_EXISTS = 4,
85
+ /**
86
+ * @generated from enum value: ERROR_CODE_PERMISSION_DENIED = 5;
87
+ */
88
+ PERMISSION_DENIED = 5,
89
+ /**
90
+ * @generated from enum value: ERROR_CODE_UNAUTHENTICATED = 6;
91
+ */
92
+ UNAUTHENTICATED = 6,
93
+ /**
94
+ * 게이트 / 접속 (100-199)
95
+ *
96
+ * @generated from enum value: ERROR_CODE_MAINTENANCE_IN_PROGRESS = 100;
97
+ */
98
+ MAINTENANCE_IN_PROGRESS = 100,
99
+ /**
100
+ * @generated from enum value: ERROR_CODE_GEO_BLOCKED = 101;
101
+ */
102
+ GEO_BLOCKED = 101,
103
+ /**
104
+ * @generated from enum value: ERROR_CODE_CLIENT_VERSION_UNSUPPORTED = 102;
105
+ */
106
+ CLIENT_VERSION_UNSUPPORTED = 102,
107
+ /**
108
+ * 인증 / 플레이어 (200-299)
109
+ *
110
+ * @generated from enum value: ERROR_CODE_PLAYER_BANNED = 200;
111
+ */
112
+ PLAYER_BANNED = 200,
113
+ /**
114
+ * @generated from enum value: ERROR_CODE_INVALID_PROVIDER_TOKEN = 201;
115
+ */
116
+ INVALID_PROVIDER_TOKEN = 201,
117
+ /**
118
+ * @generated from enum value: ERROR_CODE_PROVIDER_NOT_ENABLED = 202;
119
+ */
120
+ PROVIDER_NOT_ENABLED = 202,
121
+ /**
122
+ * @generated from enum value: ERROR_CODE_CREDENTIAL_NOT_CONFIGURED = 203;
123
+ */
124
+ CREDENTIAL_NOT_CONFIGURED = 203,
125
+ /**
126
+ * @generated from enum value: ERROR_CODE_SESSION_EXPIRED = 204;
127
+ */
128
+ SESSION_EXPIRED = 204,
129
+ /**
130
+ * @generated from enum value: ERROR_CODE_PLAYER_NOT_FOUND = 205;
131
+ */
132
+ PLAYER_NOT_FOUND = 205,
133
+ /**
134
+ * 결제 (300-399)
135
+ *
136
+ * @generated from enum value: ERROR_CODE_DUPLICATE_RECEIPT = 300;
137
+ */
138
+ DUPLICATE_RECEIPT = 300,
139
+ /**
140
+ * @generated from enum value: ERROR_CODE_RECEIPT_VERIFICATION_FAILED = 301;
141
+ */
142
+ RECEIPT_VERIFICATION_FAILED = 301,
143
+ /**
144
+ * @generated from enum value: ERROR_CODE_MARKET_NOT_SUPPORTED = 302;
145
+ */
146
+ MARKET_NOT_SUPPORTED = 302,
147
+ /**
148
+ * API Key (400-499)
149
+ *
150
+ * @generated from enum value: ERROR_CODE_API_KEY_INVALID = 400;
151
+ */
152
+ API_KEY_INVALID = 400,
153
+ /**
154
+ * @generated from enum value: ERROR_CODE_API_KEY_REVOKED = 401;
155
+ */
156
+ API_KEY_REVOKED = 401,
157
+ /**
158
+ * @generated from enum value: ERROR_CODE_SERVER_KEY_INVALID = 402;
159
+ */
160
+ SERVER_KEY_INVALID = 402,
161
+ /**
162
+ * @generated from enum value: ERROR_CODE_SERVER_KEY_REVOKED = 403;
163
+ */
164
+ SERVER_KEY_REVOKED = 403,
165
+ /**
166
+ * 관리자 / 프로젝트 (500-599)
167
+ *
168
+ * @generated from enum value: ERROR_CODE_ADMIN_EMAIL_EXISTS = 500;
169
+ */
170
+ ADMIN_EMAIL_EXISTS = 500,
171
+ /**
172
+ * @generated from enum value: ERROR_CODE_ADMIN_INVALID_CREDENTIALS = 501;
173
+ */
174
+ ADMIN_INVALID_CREDENTIALS = 501,
175
+ /**
176
+ * @generated from enum value: ERROR_CODE_PACKAGE_NAME_EXISTS = 502;
177
+ */
178
+ PACKAGE_NAME_EXISTS = 502,
179
+ /**
180
+ * 우편함 (600-699)
181
+ *
182
+ * @generated from enum value: ERROR_CODE_MAIL_NOT_FOUND = 600;
183
+ */
184
+ MAIL_NOT_FOUND = 600,
185
+ /**
186
+ * @generated from enum value: ERROR_CODE_MAIL_ALREADY_CLAIMED = 601;
187
+ */
188
+ MAIL_ALREADY_CLAIMED = 601,
189
+ /**
190
+ * @generated from enum value: ERROR_CODE_MAIL_NOT_CLAIMABLE = 602;
191
+ */
192
+ MAIL_NOT_CLAIMABLE = 602
193
+ }
194
+
195
+ /**
196
+ * 프로젝트 스코프의 플레이어.
197
+ *
198
+ * @generated from message hiveng.v1.Player
199
+ */
200
+ type Player$1 = Message<"hiveng.v1.Player"> & {
201
+ /**
202
+ * @generated from field: string player_id = 1;
203
+ */
204
+ playerId: string;
205
+ /**
206
+ * @generated from field: string project_id = 2;
207
+ */
208
+ projectId: string;
209
+ /**
210
+ * ISO 3166-1 alpha-2 대문자 (예: "KR")
211
+ *
212
+ * @generated from field: string country = 3;
213
+ */
214
+ country: string;
215
+ /**
216
+ * 이 플레이어에 연결된 로그인 수단들
217
+ *
218
+ * @generated from field: repeated hiveng.v1.IdentityProvider providers = 4;
219
+ */
220
+ providers: IdentityProvider[];
221
+ /**
222
+ * @generated from field: google.protobuf.Timestamp created_at = 5;
223
+ */
224
+ createdAt?: Timestamp | undefined;
225
+ /**
226
+ * @generated from field: google.protobuf.Timestamp last_login_at = 6;
227
+ */
228
+ lastLoginAt?: Timestamp | undefined;
229
+ /**
230
+ * 표시용 닉네임. 신규 플레이어 생성 시 서버가 짧은 기본값을 자동 부여한다.
231
+ *
232
+ * @generated from field: string nickname = 7;
233
+ */
234
+ nickname: string;
235
+ /**
236
+ * @generated from field: string email = 8;
237
+ */
238
+ email: string;
239
+ /**
240
+ * @generated from field: hiveng.v1.ClientPlatform last_login_platform = 9;
241
+ */
242
+ lastLoginPlatform: ClientPlatform;
243
+ };
244
+ /**
245
+ * 액세스/리프레시 토큰 쌍.
246
+ *
247
+ * @generated from message hiveng.v1.TokenPair
248
+ */
249
+ type TokenPair = Message<"hiveng.v1.TokenPair"> & {
250
+ /**
251
+ * @generated from field: string access_token = 1;
252
+ */
253
+ accessToken: string;
254
+ /**
255
+ * @generated from field: string refresh_token = 2;
256
+ */
257
+ refreshToken: string;
258
+ /**
259
+ * @generated from field: google.protobuf.Timestamp access_token_expires_at = 3;
260
+ */
261
+ accessTokenExpiresAt?: Timestamp | undefined;
262
+ };
263
+ /**
264
+ * @generated from message hiveng.v1.GetLoginProvidersRequest
265
+ */
266
+ type GetLoginProvidersRequest = Message<"hiveng.v1.GetLoginProvidersRequest"> & {
267
+ /**
268
+ * 테스트용 국가 강제 지정 (선택). 비어 있으면 서버가 IP로 판별.
269
+ *
270
+ * @generated from field: string country_override = 1;
271
+ */
272
+ countryOverride: string;
273
+ /**
274
+ * @generated from field: hiveng.v1.ClientPlatform platform = 2;
275
+ */
276
+ platform: ClientPlatform;
277
+ };
278
+ /**
279
+ * Describes the message hiveng.v1.GetLoginProvidersRequest.
280
+ * Use `create(GetLoginProvidersRequestSchema)` to create a new message.
281
+ */
282
+ declare const GetLoginProvidersRequestSchema: GenMessage<GetLoginProvidersRequest>;
283
+ /**
284
+ * @generated from message hiveng.v1.GetLoginProvidersResponse
285
+ */
286
+ type GetLoginProvidersResponse = Message<"hiveng.v1.GetLoginProvidersResponse"> & {
287
+ /**
288
+ * 순서 = 클라이언트 노출 순서
289
+ *
290
+ * @generated from field: repeated hiveng.v1.IdentityProvider providers = 1;
291
+ */
292
+ providers: IdentityProvider[];
293
+ /**
294
+ * 판별된 국가 (ISO 3166-1 alpha-2)
295
+ *
296
+ * @generated from field: string country = 2;
297
+ */
298
+ country: string;
299
+ };
300
+ /**
301
+ * Describes the message hiveng.v1.GetLoginProvidersResponse.
302
+ * Use `create(GetLoginProvidersResponseSchema)` to create a new message.
303
+ */
304
+ declare const GetLoginProvidersResponseSchema: GenMessage<GetLoginProvidersResponse>;
305
+ /**
306
+ * @generated from message hiveng.v1.LoginWithProviderRequest
307
+ */
308
+ type LoginWithProviderRequest = Message<"hiveng.v1.LoginWithProviderRequest"> & {
309
+ /**
310
+ * @generated from field: hiveng.v1.IdentityProvider provider = 1;
311
+ */
312
+ provider: IdentityProvider;
313
+ /**
314
+ * IdP 발급 토큰. GUEST는 디바이스 식별자.
315
+ *
316
+ * @generated from field: string provider_token = 2;
317
+ */
318
+ providerToken: string;
319
+ /**
320
+ * @generated from field: hiveng.v1.ClientPlatform platform = 3;
321
+ */
322
+ platform: ClientPlatform;
323
+ };
324
+ /**
325
+ * Describes the message hiveng.v1.LoginWithProviderRequest.
326
+ * Use `create(LoginWithProviderRequestSchema)` to create a new message.
327
+ */
328
+ declare const LoginWithProviderRequestSchema: GenMessage<LoginWithProviderRequest>;
329
+ /**
330
+ * @generated from message hiveng.v1.LoginWithProviderResponse
331
+ */
332
+ type LoginWithProviderResponse = Message<"hiveng.v1.LoginWithProviderResponse"> & {
333
+ /**
334
+ * @generated from field: hiveng.v1.Player player = 1;
335
+ */
336
+ player?: Player$1 | undefined;
337
+ /**
338
+ * @generated from field: hiveng.v1.TokenPair token_pair = 2;
339
+ */
340
+ tokenPair?: TokenPair | undefined;
341
+ };
342
+ /**
343
+ * Describes the message hiveng.v1.LoginWithProviderResponse.
344
+ * Use `create(LoginWithProviderResponseSchema)` to create a new message.
345
+ */
346
+ declare const LoginWithProviderResponseSchema: GenMessage<LoginWithProviderResponse>;
347
+ /**
348
+ * @generated from message hiveng.v1.RefreshTokenRequest
349
+ */
350
+ type RefreshTokenRequest = Message<"hiveng.v1.RefreshTokenRequest"> & {
351
+ /**
352
+ * @generated from field: string refresh_token = 1;
353
+ */
354
+ refreshToken: string;
355
+ };
356
+ /**
357
+ * Describes the message hiveng.v1.RefreshTokenRequest.
358
+ * Use `create(RefreshTokenRequestSchema)` to create a new message.
359
+ */
360
+ declare const RefreshTokenRequestSchema: GenMessage<RefreshTokenRequest>;
361
+ /**
362
+ * @generated from message hiveng.v1.RefreshTokenResponse
363
+ */
364
+ type RefreshTokenResponse = Message<"hiveng.v1.RefreshTokenResponse"> & {
365
+ /**
366
+ * @generated from field: hiveng.v1.TokenPair token_pair = 1;
367
+ */
368
+ tokenPair?: TokenPair | undefined;
369
+ };
370
+ /**
371
+ * Describes the message hiveng.v1.RefreshTokenResponse.
372
+ * Use `create(RefreshTokenResponseSchema)` to create a new message.
373
+ */
374
+ declare const RefreshTokenResponseSchema: GenMessage<RefreshTokenResponse>;
375
+ /**
376
+ * @generated from message hiveng.v1.LogoutRequest
377
+ */
378
+ type LogoutRequest = Message<"hiveng.v1.LogoutRequest"> & {};
379
+ /**
380
+ * Describes the message hiveng.v1.LogoutRequest.
381
+ * Use `create(LogoutRequestSchema)` to create a new message.
382
+ */
383
+ declare const LogoutRequestSchema: GenMessage<LogoutRequest>;
384
+ /**
385
+ * @generated from message hiveng.v1.LogoutResponse
386
+ */
387
+ type LogoutResponse = Message<"hiveng.v1.LogoutResponse"> & {};
388
+ /**
389
+ * Describes the message hiveng.v1.LogoutResponse.
390
+ * Use `create(LogoutResponseSchema)` to create a new message.
391
+ */
392
+ declare const LogoutResponseSchema: GenMessage<LogoutResponse>;
393
+ /**
394
+ * @generated from message hiveng.v1.GetPlayerRequest
395
+ */
396
+ type GetPlayerRequest = Message<"hiveng.v1.GetPlayerRequest"> & {};
397
+ /**
398
+ * Describes the message hiveng.v1.GetPlayerRequest.
399
+ * Use `create(GetPlayerRequestSchema)` to create a new message.
400
+ */
401
+ declare const GetPlayerRequestSchema: GenMessage<GetPlayerRequest>;
402
+ /**
403
+ * @generated from message hiveng.v1.GetPlayerResponse
404
+ */
405
+ type GetPlayerResponse = Message<"hiveng.v1.GetPlayerResponse"> & {
406
+ /**
407
+ * @generated from field: hiveng.v1.Player player = 1;
408
+ */
409
+ player?: Player$1 | undefined;
410
+ };
411
+ /**
412
+ * Describes the message hiveng.v1.GetPlayerResponse.
413
+ * Use `create(GetPlayerResponseSchema)` to create a new message.
414
+ */
415
+ declare const GetPlayerResponseSchema: GenMessage<GetPlayerResponse>;
416
+ /**
417
+ * @generated from message hiveng.v1.UpdateNicknameRequest
418
+ */
419
+ type UpdateNicknameRequest = Message<"hiveng.v1.UpdateNicknameRequest"> & {
420
+ /**
421
+ * @generated from field: string nickname = 1;
422
+ */
423
+ nickname: string;
424
+ };
425
+ /**
426
+ * Describes the message hiveng.v1.UpdateNicknameRequest.
427
+ * Use `create(UpdateNicknameRequestSchema)` to create a new message.
428
+ */
429
+ declare const UpdateNicknameRequestSchema: GenMessage<UpdateNicknameRequest>;
430
+ /**
431
+ * @generated from message hiveng.v1.UpdateNicknameResponse
432
+ */
433
+ type UpdateNicknameResponse = Message<"hiveng.v1.UpdateNicknameResponse"> & {
434
+ /**
435
+ * @generated from field: hiveng.v1.Player player = 1;
436
+ */
437
+ player?: Player$1 | undefined;
438
+ };
439
+ /**
440
+ * Describes the message hiveng.v1.UpdateNicknameResponse.
441
+ * Use `create(UpdateNicknameResponseSchema)` to create a new message.
442
+ */
443
+ declare const UpdateNicknameResponseSchema: GenMessage<UpdateNicknameResponse>;
444
+ /**
445
+ * 로그인 수단 (IdP).
446
+ *
447
+ * @generated from enum hiveng.v1.IdentityProvider
448
+ */
449
+ declare enum IdentityProvider {
450
+ /**
451
+ * @generated from enum value: IDENTITY_PROVIDER_UNSPECIFIED = 0;
452
+ */
453
+ UNSPECIFIED = 0,
454
+ /**
455
+ * @generated from enum value: IDENTITY_PROVIDER_KAKAO = 1;
456
+ */
457
+ KAKAO = 1,
458
+ /**
459
+ * @generated from enum value: IDENTITY_PROVIDER_NAVER = 2;
460
+ */
461
+ NAVER = 2,
462
+ /**
463
+ * @generated from enum value: IDENTITY_PROVIDER_GOOGLE = 3;
464
+ */
465
+ GOOGLE = 3,
466
+ /**
467
+ * @generated from enum value: IDENTITY_PROVIDER_FACEBOOK = 4;
468
+ */
469
+ FACEBOOK = 4,
470
+ /**
471
+ * @generated from enum value: IDENTITY_PROVIDER_APPLE = 5;
472
+ */
473
+ APPLE = 5,
474
+ /**
475
+ * @generated from enum value: IDENTITY_PROVIDER_LINE = 6;
476
+ */
477
+ LINE = 6,
478
+ /**
479
+ * @generated from enum value: IDENTITY_PROVIDER_TRUECALLER = 7;
480
+ */
481
+ TRUECALLER = 7,
482
+ /**
483
+ * @generated from enum value: IDENTITY_PROVIDER_PHONE_OTP = 8;
484
+ */
485
+ PHONE_OTP = 8,
486
+ /**
487
+ * @generated from enum value: IDENTITY_PROVIDER_GUEST = 9;
488
+ */
489
+ GUEST = 9
490
+ }
491
+ /**
492
+ * @generated from enum hiveng.v1.ClientPlatform
493
+ */
494
+ declare enum ClientPlatform {
495
+ /**
496
+ * @generated from enum value: CLIENT_PLATFORM_UNSPECIFIED = 0;
497
+ */
498
+ UNSPECIFIED = 0,
499
+ /**
500
+ * @generated from enum value: CLIENT_PLATFORM_WEB = 1;
501
+ */
502
+ WEB = 1,
503
+ /**
504
+ * @generated from enum value: CLIENT_PLATFORM_ANDROID = 2;
505
+ */
506
+ ANDROID = 2,
507
+ /**
508
+ * @generated from enum value: CLIENT_PLATFORM_IOS = 3;
509
+ */
510
+ IOS = 3,
511
+ /**
512
+ * @generated from enum value: CLIENT_PLATFORM_DESKTOP = 4;
513
+ */
514
+ DESKTOP = 4
515
+ }
516
+ /**
517
+ * 클라이언트 SDK용 인증 서비스.
518
+ *
519
+ * @generated from service hiveng.v1.AuthService
520
+ */
521
+ declare const AuthService: GenService<{
522
+ /**
523
+ * auth: api_key
524
+ * 서버가 요청 IP로 국가를 판별해 해당 국가의 로그인 수단 목록을 반환.
525
+ *
526
+ * @generated from rpc hiveng.v1.AuthService.GetLoginProviders
527
+ */
528
+ getLoginProviders: {
529
+ methodKind: "unary";
530
+ input: typeof GetLoginProvidersRequestSchema;
531
+ output: typeof GetLoginProvidersResponseSchema;
532
+ };
533
+ /**
534
+ * auth: api_key
535
+ * IdP 토큰으로 로그인. 게스트는 provider=GUEST, provider_token=디바이스 식별자.
536
+ * 제재 중이면 ERROR_CODE_PLAYER_BANNED + ErrorDetail(metadata: banned_until 등) 반환.
537
+ *
538
+ * @generated from rpc hiveng.v1.AuthService.LoginWithProvider
539
+ */
540
+ loginWithProvider: {
541
+ methodKind: "unary";
542
+ input: typeof LoginWithProviderRequestSchema;
543
+ output: typeof LoginWithProviderResponseSchema;
544
+ };
545
+ /**
546
+ * auth: api_key
547
+ *
548
+ * @generated from rpc hiveng.v1.AuthService.RefreshToken
549
+ */
550
+ refreshToken: {
551
+ methodKind: "unary";
552
+ input: typeof RefreshTokenRequestSchema;
553
+ output: typeof RefreshTokenResponseSchema;
554
+ };
555
+ /**
556
+ * auth: api_key + player_token
557
+ *
558
+ * @generated from rpc hiveng.v1.AuthService.Logout
559
+ */
560
+ logout: {
561
+ methodKind: "unary";
562
+ input: typeof LogoutRequestSchema;
563
+ output: typeof LogoutResponseSchema;
564
+ };
565
+ /**
566
+ * auth: api_key + player_token
567
+ *
568
+ * @generated from rpc hiveng.v1.AuthService.GetPlayer
569
+ */
570
+ getPlayer: {
571
+ methodKind: "unary";
572
+ input: typeof GetPlayerRequestSchema;
573
+ output: typeof GetPlayerResponseSchema;
574
+ };
575
+ /**
576
+ * auth: api_key + player_token
577
+ * 플레이어 본인 닉네임 변경. 빈/형식 위반 시 ERROR_CODE_INVALID_ARGUMENT.
578
+ *
579
+ * @generated from rpc hiveng.v1.AuthService.UpdateNickname
580
+ */
581
+ updateNickname: {
582
+ methodKind: "unary";
583
+ input: typeof UpdateNicknameRequestSchema;
584
+ output: typeof UpdateNicknameResponseSchema;
585
+ };
586
+ }>;
587
+
588
+ declare class HiveNgError extends Error {
589
+ readonly code: string;
590
+ constructor(code: string, message: string);
591
+ }
592
+ declare class BannedError extends HiveNgError {
593
+ readonly reason: string;
594
+ readonly until?: Date;
595
+ readonly permanent: boolean;
596
+ constructor(reason: string, permanent: boolean, until: Date | undefined, message: string);
597
+ }
598
+ declare class MaintenanceError extends HiveNgError {
599
+ readonly startsAt?: Date;
600
+ readonly endsAt?: Date;
601
+ readonly maintenanceMessage: string;
602
+ constructor(message: string, startsAt: Date | undefined, endsAt: Date | undefined);
603
+ }
604
+ declare function errorDetailOf(err: unknown): ErrorDetail | undefined;
605
+ declare function errorCodeOf(err: unknown): ErrorCode;
606
+
607
+ interface KeyValueStorage {
608
+ get(key: string): string | null;
609
+ set(key: string, value: string): void;
610
+ remove(key: string): void;
611
+ }
612
+
613
+ type RefreshFn = (refreshToken: string) => Promise<TokenPair>;
614
+ declare class Session {
615
+ private readonly storage;
616
+ onCleared?: () => void;
617
+ onBanned?: (err: BannedError) => void;
618
+ refreshFn?: RefreshFn;
619
+ private refreshing?;
620
+ private refreshError?;
621
+ constructor(storage: KeyValueStorage);
622
+ get accessToken(): string | null;
623
+ get refreshToken(): string | null;
624
+ save(pair: TokenPair): void;
625
+ clear(): void;
626
+ tryRefresh(): Promise<boolean>;
627
+ consumeRefreshError(): unknown;
628
+ private doRefresh;
629
+ }
630
+
631
+ interface Player {
632
+ playerId: string;
633
+ projectId: string;
634
+ country: string;
635
+ email: string;
636
+ nickname: string;
637
+ lastLoginPlatform: string;
638
+ providers: string[];
639
+ createdAt?: Date;
640
+ lastLoginAt?: Date;
641
+ }
642
+ interface LoginProviders {
643
+ providers: string[];
644
+ country: string;
645
+ }
646
+
647
+ type AuthClient = Client<typeof AuthService>;
648
+ declare class AuthApi {
649
+ private readonly session;
650
+ private player;
651
+ private client;
652
+ constructor(session: Session);
653
+ bind(client: AuthClient): void;
654
+ getLoginProviders(countryOverride?: string): Promise<LoginProviders>;
655
+ loginWithGoogle(idToken: string): Promise<Player>;
656
+ loginAsGuest(deviceId: string): Promise<Player>;
657
+ restoreSession(): Promise<Player | null>;
658
+ getPlayer(): Promise<Player | null>;
659
+ logout(): Promise<void>;
660
+ currentPlayer(): Player | null;
661
+ clearPlayer(): void;
662
+ private login;
663
+ private fetchPlayer;
664
+ private requireClient;
665
+ }
666
+
667
+ interface TransportFactoryOptions {
668
+ baseUrl: string;
669
+ interceptors: Interceptor[];
670
+ }
671
+ type TransportFactory = (options: TransportFactoryOptions) => Transport;
672
+ interface HiveNgConfig {
673
+ gatewayUrl: string;
674
+ projectId: string;
675
+ apiKey: string;
676
+ clientVersion?: string;
677
+ language?: string;
678
+ debug?: boolean;
679
+ persistSession?: boolean;
680
+ transportFactory?: TransportFactory;
681
+ }
682
+
683
+ /**
684
+ * @generated from message hiveng.v1.Mail
685
+ */
686
+ type Mail$1 = Message<"hiveng.v1.Mail"> & {
687
+ /**
688
+ * @generated from field: string id = 1;
689
+ */
690
+ id: string;
691
+ /**
692
+ * @generated from field: string mail_id = 2;
693
+ */
694
+ mailId: string;
695
+ /**
696
+ * @generated from field: string project_id = 3;
697
+ */
698
+ projectId: string;
699
+ /**
700
+ * @generated from field: hiveng.v1.MailType type = 4;
701
+ */
702
+ type: MailType;
703
+ /**
704
+ * @generated from field: map<string, string> title = 5;
705
+ */
706
+ title: {
707
+ [key: string]: string;
708
+ };
709
+ /**
710
+ * @generated from field: map<string, string> body = 6;
711
+ */
712
+ body: {
713
+ [key: string]: string;
714
+ };
715
+ /**
716
+ * @generated from field: string sender = 7;
717
+ */
718
+ sender: string;
719
+ /**
720
+ * @generated from field: map<string, string> reward_preview = 8;
721
+ */
722
+ rewardPreview: {
723
+ [key: string]: string;
724
+ };
725
+ /**
726
+ * @generated from field: bool claimed = 9;
727
+ */
728
+ claimed: boolean;
729
+ /**
730
+ * @generated from field: google.protobuf.Timestamp claimable_from = 10;
731
+ */
732
+ claimableFrom?: Timestamp | undefined;
733
+ /**
734
+ * @generated from field: google.protobuf.Timestamp expires_at = 11;
735
+ */
736
+ expiresAt?: Timestamp | undefined;
737
+ /**
738
+ * @generated from field: google.protobuf.Timestamp claimed_at = 12;
739
+ */
740
+ claimedAt?: Timestamp | undefined;
741
+ /**
742
+ * @generated from field: google.protobuf.Timestamp created_at = 13;
743
+ */
744
+ createdAt?: Timestamp | undefined;
745
+ /**
746
+ * @generated from field: repeated hiveng.v1.MailRewardDisplayItem reward_display = 14;
747
+ */
748
+ rewardDisplay: MailRewardDisplayItem$1[];
749
+ };
750
+ /**
751
+ * @generated from message hiveng.v1.MailRewardDisplayItem
752
+ */
753
+ type MailRewardDisplayItem$1 = Message<"hiveng.v1.MailRewardDisplayItem"> & {
754
+ /**
755
+ * @generated from field: string icon = 1;
756
+ */
757
+ icon: string;
758
+ /**
759
+ * @generated from field: string label = 2;
760
+ */
761
+ label: string;
762
+ /**
763
+ * @generated from field: string quantity = 3;
764
+ */
765
+ quantity: string;
766
+ };
767
+ /**
768
+ * @generated from message hiveng.v1.ListMailRequest
769
+ */
770
+ type ListMailRequest = Message<"hiveng.v1.ListMailRequest"> & {
771
+ /**
772
+ * @generated from field: hiveng.v1.PageRequest page = 1;
773
+ */
774
+ page?: PageRequest | undefined;
775
+ /**
776
+ * @generated from field: bool include_claimed = 2;
777
+ */
778
+ includeClaimed: boolean;
779
+ };
780
+ /**
781
+ * Describes the message hiveng.v1.ListMailRequest.
782
+ * Use `create(ListMailRequestSchema)` to create a new message.
783
+ */
784
+ declare const ListMailRequestSchema: GenMessage<ListMailRequest>;
785
+ /**
786
+ * @generated from message hiveng.v1.ListMailResponse
787
+ */
788
+ type ListMailResponse = Message<"hiveng.v1.ListMailResponse"> & {
789
+ /**
790
+ * @generated from field: repeated hiveng.v1.Mail mail = 1;
791
+ */
792
+ mail: Mail$1[];
793
+ /**
794
+ * @generated from field: hiveng.v1.PageResponse page = 2;
795
+ */
796
+ page?: PageResponse | undefined;
797
+ };
798
+ /**
799
+ * Describes the message hiveng.v1.ListMailResponse.
800
+ * Use `create(ListMailResponseSchema)` to create a new message.
801
+ */
802
+ declare const ListMailResponseSchema: GenMessage<ListMailResponse>;
803
+ /**
804
+ * @generated from message hiveng.v1.CheckNewMailRequest
805
+ */
806
+ type CheckNewMailRequest = Message<"hiveng.v1.CheckNewMailRequest"> & {};
807
+ /**
808
+ * Describes the message hiveng.v1.CheckNewMailRequest.
809
+ * Use `create(CheckNewMailRequestSchema)` to create a new message.
810
+ */
811
+ declare const CheckNewMailRequestSchema: GenMessage<CheckNewMailRequest>;
812
+ /**
813
+ * @generated from message hiveng.v1.CheckNewMailResponse
814
+ */
815
+ type CheckNewMailResponse = Message<"hiveng.v1.CheckNewMailResponse"> & {
816
+ /**
817
+ * @generated from field: bool has_new_mail = 1;
818
+ */
819
+ hasNewMail: boolean;
820
+ /**
821
+ * @generated from field: int64 unread_count = 2;
822
+ */
823
+ unreadCount: bigint;
824
+ };
825
+ /**
826
+ * Describes the message hiveng.v1.CheckNewMailResponse.
827
+ * Use `create(CheckNewMailResponseSchema)` to create a new message.
828
+ */
829
+ declare const CheckNewMailResponseSchema: GenMessage<CheckNewMailResponse>;
830
+ /**
831
+ * @generated from message hiveng.v1.ClaimMailRequest
832
+ */
833
+ type ClaimMailRequest = Message<"hiveng.v1.ClaimMailRequest"> & {
834
+ /**
835
+ * @generated from field: string mail_recipient_id = 1;
836
+ */
837
+ mailRecipientId: string;
838
+ };
839
+ /**
840
+ * Describes the message hiveng.v1.ClaimMailRequest.
841
+ * Use `create(ClaimMailRequestSchema)` to create a new message.
842
+ */
843
+ declare const ClaimMailRequestSchema: GenMessage<ClaimMailRequest>;
844
+ /**
845
+ * @generated from message hiveng.v1.ClaimMailResponse
846
+ */
847
+ type ClaimMailResponse = Message<"hiveng.v1.ClaimMailResponse"> & {
848
+ /**
849
+ * @generated from field: hiveng.v1.Mail mail = 1;
850
+ */
851
+ mail?: Mail$1 | undefined;
852
+ };
853
+ /**
854
+ * Describes the message hiveng.v1.ClaimMailResponse.
855
+ * Use `create(ClaimMailResponseSchema)` to create a new message.
856
+ */
857
+ declare const ClaimMailResponseSchema: GenMessage<ClaimMailResponse>;
858
+ /**
859
+ * @generated from enum hiveng.v1.MailType
860
+ */
861
+ declare enum MailType {
862
+ /**
863
+ * @generated from enum value: MAIL_TYPE_UNSPECIFIED = 0;
864
+ */
865
+ UNSPECIFIED = 0,
866
+ /**
867
+ * @generated from enum value: MAIL_TYPE_TEXT = 1;
868
+ */
869
+ TEXT = 1,
870
+ /**
871
+ * @generated from enum value: MAIL_TYPE_ITEM = 2;
872
+ */
873
+ ITEM = 2
874
+ }
875
+ /**
876
+ * @generated from service hiveng.v1.MailboxService
877
+ */
878
+ declare const MailboxService: GenService<{
879
+ /**
880
+ * @generated from rpc hiveng.v1.MailboxService.ListMail
881
+ */
882
+ listMail: {
883
+ methodKind: "unary";
884
+ input: typeof ListMailRequestSchema;
885
+ output: typeof ListMailResponseSchema;
886
+ };
887
+ /**
888
+ * @generated from rpc hiveng.v1.MailboxService.CheckNewMail
889
+ */
890
+ checkNewMail: {
891
+ methodKind: "unary";
892
+ input: typeof CheckNewMailRequestSchema;
893
+ output: typeof CheckNewMailResponseSchema;
894
+ };
895
+ /**
896
+ * @generated from rpc hiveng.v1.MailboxService.ClaimMail
897
+ */
898
+ claimMail: {
899
+ methodKind: "unary";
900
+ input: typeof ClaimMailRequestSchema;
901
+ output: typeof ClaimMailResponseSchema;
902
+ };
903
+ }>;
904
+
905
+ interface Mail {
906
+ id: string;
907
+ mailId: string;
908
+ projectId: string;
909
+ type: MailType;
910
+ title: string;
911
+ body: string;
912
+ sender: string;
913
+ rewardPreview: Record<string, string>;
914
+ claimed: boolean;
915
+ claimableFrom?: Date;
916
+ expiresAt?: Date;
917
+ claimedAt?: Date;
918
+ createdAt?: Date;
919
+ rewardDisplay: MailRewardDisplayItem[];
920
+ }
921
+ interface MailRewardDisplayItem {
922
+ icon: string;
923
+ label: string;
924
+ quantity: string;
925
+ }
926
+ interface ListMailOptions {
927
+ pageSize?: number;
928
+ pageToken?: string;
929
+ includeClaimed?: boolean;
930
+ }
931
+ interface ListMailResult {
932
+ mail: Mail[];
933
+ nextPageToken: string;
934
+ total: bigint;
935
+ }
936
+ interface CheckNewMailResult {
937
+ hasNewMail: boolean;
938
+ unreadCount: bigint;
939
+ }
940
+ type MailboxClient = Client<typeof MailboxService>;
941
+ declare class MailboxApi {
942
+ private readonly language;
943
+ private client;
944
+ constructor(language: string);
945
+ bind(client: MailboxClient): void;
946
+ unbind(): void;
947
+ listMail(options?: ListMailOptions): Promise<ListMailResult>;
948
+ checkNewMail(): Promise<CheckNewMailResult>;
949
+ claimMail(mailRecipientId: string): Promise<Mail>;
950
+ private requireClient;
951
+ }
952
+
953
+ /**
954
+ * 공지 1건.
955
+ *
956
+ * @generated from message hiveng.v1.Notice
957
+ */
958
+ type Notice$1 = Message<"hiveng.v1.Notice"> & {
959
+ /**
960
+ * @generated from field: string id = 1;
961
+ */
962
+ id: string;
963
+ /**
964
+ * @generated from field: string project_id = 2;
965
+ */
966
+ projectId: string;
967
+ /**
968
+ * 제목 (key = BCP-47: "ko", "en", "ja")
969
+ *
970
+ * @generated from field: map<string, string> title = 4;
971
+ */
972
+ title: {
973
+ [key: string]: string;
974
+ };
975
+ /**
976
+ * 본문 (key = BCP-47)
977
+ *
978
+ * @generated from field: map<string, string> body = 5;
979
+ */
980
+ body: {
981
+ [key: string]: string;
982
+ };
983
+ /**
984
+ * 노출 시작 (UTC)
985
+ *
986
+ * @generated from field: google.protobuf.Timestamp starts_at = 6;
987
+ */
988
+ startsAt?: Timestamp | undefined;
989
+ /**
990
+ * 노출 종료 (UTC)
991
+ *
992
+ * @generated from field: google.protobuf.Timestamp ends_at = 7;
993
+ */
994
+ endsAt?: Timestamp | undefined;
995
+ /**
996
+ * @generated from field: google.protobuf.Timestamp created_at = 10;
997
+ */
998
+ createdAt?: Timestamp | undefined;
999
+ /**
1000
+ * @generated from field: google.protobuf.Timestamp updated_at = 11;
1001
+ */
1002
+ updatedAt?: Timestamp | undefined;
1003
+ /**
1004
+ * 조회 노출 횟수
1005
+ *
1006
+ * @generated from field: int64 view_count = 12;
1007
+ */
1008
+ viewCount: bigint;
1009
+ };
1010
+ /**
1011
+ * @generated from message hiveng.v1.ListActiveNoticesRequest
1012
+ */
1013
+ type ListActiveNoticesRequest = Message<"hiveng.v1.ListActiveNoticesRequest"> & {};
1014
+ /**
1015
+ * Describes the message hiveng.v1.ListActiveNoticesRequest.
1016
+ * Use `create(ListActiveNoticesRequestSchema)` to create a new message.
1017
+ */
1018
+ declare const ListActiveNoticesRequestSchema: GenMessage<ListActiveNoticesRequest>;
1019
+ /**
1020
+ * @generated from message hiveng.v1.ListActiveNoticesResponse
1021
+ */
1022
+ type ListActiveNoticesResponse = Message<"hiveng.v1.ListActiveNoticesResponse"> & {
1023
+ /**
1024
+ * @generated from field: repeated hiveng.v1.Notice notices = 1;
1025
+ */
1026
+ notices: Notice$1[];
1027
+ };
1028
+ /**
1029
+ * Describes the message hiveng.v1.ListActiveNoticesResponse.
1030
+ * Use `create(ListActiveNoticesResponseSchema)` to create a new message.
1031
+ */
1032
+ declare const ListActiveNoticesResponseSchema: GenMessage<ListActiveNoticesResponse>;
1033
+ /**
1034
+ * 클라이언트 SDK용 공지 조회.
1035
+ *
1036
+ * @generated from service hiveng.v1.NoticeService
1037
+ */
1038
+ declare const NoticeService: GenService<{
1039
+ /**
1040
+ * auth: api_key
1041
+ * 서버가 기간(starts_at ≤ now < ends_at) 필터링과 생성일 순 정렬을 수행해 반환한다.
1042
+ *
1043
+ * @generated from rpc hiveng.v1.NoticeService.ListActiveNotices
1044
+ */
1045
+ listActiveNotices: {
1046
+ methodKind: "unary";
1047
+ input: typeof ListActiveNoticesRequestSchema;
1048
+ output: typeof ListActiveNoticesResponseSchema;
1049
+ };
1050
+ }>;
1051
+
1052
+ interface Notice {
1053
+ id: string;
1054
+ projectId: string;
1055
+ title: string;
1056
+ body: string;
1057
+ startsAt?: Date;
1058
+ endsAt?: Date;
1059
+ viewCount: bigint;
1060
+ }
1061
+ type NoticeClient = Client<typeof NoticeService>;
1062
+ declare class NoticeApi {
1063
+ private readonly language;
1064
+ private client;
1065
+ constructor(language: string);
1066
+ bind(client: NoticeClient): void;
1067
+ unbind(): void;
1068
+ listActiveNotices(): Promise<Notice[]>;
1069
+ private requireClient;
1070
+ }
1071
+
1072
+ /**
1073
+ * 구매 내역.
1074
+ *
1075
+ * @generated from message hiveng.v1.Purchase
1076
+ */
1077
+ type Purchase = Message<"hiveng.v1.Purchase"> & {
1078
+ /**
1079
+ * @generated from field: string id = 1;
1080
+ */
1081
+ id: string;
1082
+ /**
1083
+ * @generated from field: string project_id = 2;
1084
+ */
1085
+ projectId: string;
1086
+ /**
1087
+ * @generated from field: string player_id = 3;
1088
+ */
1089
+ playerId: string;
1090
+ /**
1091
+ * @generated from field: hiveng.v1.Market market = 4;
1092
+ */
1093
+ market: Market;
1094
+ /**
1095
+ * @generated from field: string product_id = 5;
1096
+ */
1097
+ productId: string;
1098
+ /**
1099
+ * 통화 최소 단위 금액.
1100
+ *
1101
+ * @generated from field: int64 amount_minor = 6;
1102
+ */
1103
+ amountMinor: bigint;
1104
+ /**
1105
+ * ISO 4217 통화 코드.
1106
+ *
1107
+ * @generated from field: string currency = 7;
1108
+ */
1109
+ currency: string;
1110
+ /**
1111
+ * @generated from field: hiveng.v1.PurchaseStatus status = 8;
1112
+ */
1113
+ status: PurchaseStatus;
1114
+ /**
1115
+ * 마켓 구매 시각 (UTC).
1116
+ *
1117
+ * @generated from field: google.protobuf.Timestamp purchased_at = 9;
1118
+ */
1119
+ purchasedAt?: Timestamp | undefined;
1120
+ /**
1121
+ * 영수증 검증 완료 시각 (UTC). 미검증이면 미설정.
1122
+ *
1123
+ * @generated from field: google.protobuf.Timestamp verified_at = 10;
1124
+ */
1125
+ verifiedAt?: Timestamp | undefined;
1126
+ /**
1127
+ * @generated from field: google.protobuf.Timestamp created_at = 11;
1128
+ */
1129
+ createdAt?: Timestamp | undefined;
1130
+ /**
1131
+ * @generated from field: hiveng.v1.ProductType product_type = 12;
1132
+ */
1133
+ productType: ProductType;
1134
+ /**
1135
+ * @generated from field: string package_name = 13;
1136
+ */
1137
+ packageName: string;
1138
+ /**
1139
+ * @generated from field: string market_order_id = 14;
1140
+ */
1141
+ marketOrderId: string;
1142
+ /**
1143
+ * @generated from field: string purchase_token_hash = 15;
1144
+ */
1145
+ purchaseTokenHash: string;
1146
+ /**
1147
+ * @generated from field: string failure_reason = 16;
1148
+ */
1149
+ failureReason: string;
1150
+ /**
1151
+ * @generated from field: string raw_market_response = 17;
1152
+ */
1153
+ rawMarketResponse: string;
1154
+ /**
1155
+ * @generated from field: google.protobuf.Timestamp requested_at = 18;
1156
+ */
1157
+ requestedAt?: Timestamp | undefined;
1158
+ /**
1159
+ * @generated from field: google.protobuf.Timestamp updated_at = 19;
1160
+ */
1161
+ updatedAt?: Timestamp | undefined;
1162
+ /**
1163
+ * @generated from field: string purchase_intent_id = 20;
1164
+ */
1165
+ purchaseIntentId: string;
1166
+ /**
1167
+ * @generated from field: hiveng.v1.PaymentConsumePolicy consume_policy = 21;
1168
+ */
1169
+ consumePolicy: PaymentConsumePolicy;
1170
+ /**
1171
+ * @generated from field: string consume_status = 22;
1172
+ */
1173
+ consumeStatus: string;
1174
+ /**
1175
+ * @generated from field: google.protobuf.Timestamp consumed_at = 23;
1176
+ */
1177
+ consumedAt?: Timestamp | undefined;
1178
+ /**
1179
+ * @generated from field: hiveng.v1.PaymentGrantMode grant_mode = 24;
1180
+ */
1181
+ grantMode: PaymentGrantMode;
1182
+ /**
1183
+ * @generated from field: string grant_status = 25;
1184
+ */
1185
+ grantStatus: string;
1186
+ /**
1187
+ * @generated from field: google.protobuf.Timestamp grant_delivered_at = 26;
1188
+ */
1189
+ grantDeliveredAt?: Timestamp | undefined;
1190
+ };
1191
+ /**
1192
+ * @generated from message hiveng.v1.PaymentProduct
1193
+ */
1194
+ type PaymentProduct = Message<"hiveng.v1.PaymentProduct"> & {
1195
+ /**
1196
+ * @generated from field: string project_id = 1;
1197
+ */
1198
+ projectId: string;
1199
+ /**
1200
+ * @generated from field: hiveng.v1.Market market = 2;
1201
+ */
1202
+ market: Market;
1203
+ /**
1204
+ * @generated from field: string app_identifier = 3;
1205
+ */
1206
+ appIdentifier: string;
1207
+ /**
1208
+ * @generated from field: string product_id = 4;
1209
+ */
1210
+ productId: string;
1211
+ /**
1212
+ * @generated from field: hiveng.v1.ProductType product_type = 5;
1213
+ */
1214
+ productType: ProductType;
1215
+ /**
1216
+ * @generated from field: string market_status = 6;
1217
+ */
1218
+ marketStatus: string;
1219
+ /**
1220
+ * @generated from field: string title = 7;
1221
+ */
1222
+ title: string;
1223
+ /**
1224
+ * @generated from field: string description = 8;
1225
+ */
1226
+ description: string;
1227
+ /**
1228
+ * @generated from field: hiveng.v1.PaymentConsumePolicy consume_policy = 9;
1229
+ */
1230
+ consumePolicy: PaymentConsumePolicy;
1231
+ /**
1232
+ * @generated from field: hiveng.v1.PaymentGrantMode grant_mode = 10;
1233
+ */
1234
+ grantMode: PaymentGrantMode;
1235
+ /**
1236
+ * @generated from field: bool enabled = 11;
1237
+ */
1238
+ enabled: boolean;
1239
+ /**
1240
+ * @generated from field: google.protobuf.Timestamp last_imported_at = 12;
1241
+ */
1242
+ lastImportedAt?: Timestamp | undefined;
1243
+ /**
1244
+ * @generated from field: google.protobuf.Timestamp created_at = 13;
1245
+ */
1246
+ createdAt?: Timestamp | undefined;
1247
+ /**
1248
+ * @generated from field: google.protobuf.Timestamp updated_at = 14;
1249
+ */
1250
+ updatedAt?: Timestamp | undefined;
1251
+ };
1252
+ /**
1253
+ * @generated from message hiveng.v1.ListProductsRequest
1254
+ */
1255
+ type ListProductsRequest = Message<"hiveng.v1.ListProductsRequest"> & {
1256
+ /**
1257
+ * @generated from field: hiveng.v1.Market market = 1;
1258
+ */
1259
+ market: Market;
1260
+ /**
1261
+ * @generated from field: string app_identifier = 2;
1262
+ */
1263
+ appIdentifier: string;
1264
+ /**
1265
+ * @generated from field: hiveng.v1.ProductType product_type = 3;
1266
+ */
1267
+ productType: ProductType;
1268
+ };
1269
+ /**
1270
+ * Describes the message hiveng.v1.ListProductsRequest.
1271
+ * Use `create(ListProductsRequestSchema)` to create a new message.
1272
+ */
1273
+ declare const ListProductsRequestSchema: GenMessage<ListProductsRequest>;
1274
+ /**
1275
+ * @generated from message hiveng.v1.ListProductsResponse
1276
+ */
1277
+ type ListProductsResponse = Message<"hiveng.v1.ListProductsResponse"> & {
1278
+ /**
1279
+ * @generated from field: repeated hiveng.v1.PaymentProduct products = 1;
1280
+ */
1281
+ products: PaymentProduct[];
1282
+ };
1283
+ /**
1284
+ * Describes the message hiveng.v1.ListProductsResponse.
1285
+ * Use `create(ListProductsResponseSchema)` to create a new message.
1286
+ */
1287
+ declare const ListProductsResponseSchema: GenMessage<ListProductsResponse>;
1288
+ /**
1289
+ * @generated from message hiveng.v1.StartPurchaseRequest
1290
+ */
1291
+ type StartPurchaseRequest = Message<"hiveng.v1.StartPurchaseRequest"> & {
1292
+ /**
1293
+ * @generated from field: hiveng.v1.Market market = 1;
1294
+ */
1295
+ market: Market;
1296
+ /**
1297
+ * @generated from field: string product_id = 2;
1298
+ */
1299
+ productId: string;
1300
+ /**
1301
+ * @generated from field: hiveng.v1.ProductType product_type = 3;
1302
+ */
1303
+ productType: ProductType;
1304
+ /**
1305
+ * @generated from field: string app_identifier = 4;
1306
+ */
1307
+ appIdentifier: string;
1308
+ };
1309
+ /**
1310
+ * Describes the message hiveng.v1.StartPurchaseRequest.
1311
+ * Use `create(StartPurchaseRequestSchema)` to create a new message.
1312
+ */
1313
+ declare const StartPurchaseRequestSchema: GenMessage<StartPurchaseRequest>;
1314
+ /**
1315
+ * @generated from message hiveng.v1.StartPurchaseResponse
1316
+ */
1317
+ type StartPurchaseResponse = Message<"hiveng.v1.StartPurchaseResponse"> & {
1318
+ /**
1319
+ * @generated from field: string purchase_intent_id = 1;
1320
+ */
1321
+ purchaseIntentId: string;
1322
+ };
1323
+ /**
1324
+ * Describes the message hiveng.v1.StartPurchaseResponse.
1325
+ * Use `create(StartPurchaseResponseSchema)` to create a new message.
1326
+ */
1327
+ declare const StartPurchaseResponseSchema: GenMessage<StartPurchaseResponse>;
1328
+ /**
1329
+ * @generated from message hiveng.v1.VerifyPurchaseRequest
1330
+ */
1331
+ type VerifyPurchaseRequest = Message<"hiveng.v1.VerifyPurchaseRequest"> & {
1332
+ /**
1333
+ * @generated from field: hiveng.v1.Market market = 1;
1334
+ */
1335
+ market: Market;
1336
+ /**
1337
+ * 마켓별 영수증 원문 (JSON/base64).
1338
+ *
1339
+ * @generated from field: string receipt_payload = 2;
1340
+ */
1341
+ receiptPayload: string;
1342
+ /**
1343
+ * @generated from field: string product_id = 3;
1344
+ */
1345
+ productId: string;
1346
+ /**
1347
+ * @generated from field: hiveng.v1.ProductType product_type = 4;
1348
+ */
1349
+ productType: ProductType;
1350
+ /**
1351
+ * @generated from field: string purchase_token = 5;
1352
+ */
1353
+ purchaseToken: string;
1354
+ /**
1355
+ * @generated from field: string package_name = 6 [deprecated = true];
1356
+ * @deprecated
1357
+ */
1358
+ packageName: string;
1359
+ /**
1360
+ * @generated from field: string app_identifier = 7;
1361
+ */
1362
+ appIdentifier: string;
1363
+ /**
1364
+ * @generated from field: string purchase_intent_id = 8;
1365
+ */
1366
+ purchaseIntentId: string;
1367
+ };
1368
+ /**
1369
+ * Describes the message hiveng.v1.VerifyPurchaseRequest.
1370
+ * Use `create(VerifyPurchaseRequestSchema)` to create a new message.
1371
+ */
1372
+ declare const VerifyPurchaseRequestSchema: GenMessage<VerifyPurchaseRequest>;
1373
+ /**
1374
+ * @generated from message hiveng.v1.VerifyPurchaseResponse
1375
+ */
1376
+ type VerifyPurchaseResponse = Message<"hiveng.v1.VerifyPurchaseResponse"> & {
1377
+ /**
1378
+ * @generated from field: hiveng.v1.Purchase purchase = 1;
1379
+ */
1380
+ purchase?: Purchase | undefined;
1381
+ };
1382
+ /**
1383
+ * Describes the message hiveng.v1.VerifyPurchaseResponse.
1384
+ * Use `create(VerifyPurchaseResponseSchema)` to create a new message.
1385
+ */
1386
+ declare const VerifyPurchaseResponseSchema: GenMessage<VerifyPurchaseResponse>;
1387
+ /**
1388
+ * @generated from message hiveng.v1.PaymentServiceGetPurchaseRequest
1389
+ */
1390
+ type PaymentServiceGetPurchaseRequest = Message<"hiveng.v1.PaymentServiceGetPurchaseRequest"> & {
1391
+ /**
1392
+ * @generated from field: string purchase_id = 1;
1393
+ */
1394
+ purchaseId: string;
1395
+ };
1396
+ /**
1397
+ * Describes the message hiveng.v1.PaymentServiceGetPurchaseRequest.
1398
+ * Use `create(PaymentServiceGetPurchaseRequestSchema)` to create a new message.
1399
+ */
1400
+ declare const PaymentServiceGetPurchaseRequestSchema: GenMessage<PaymentServiceGetPurchaseRequest>;
1401
+ /**
1402
+ * @generated from message hiveng.v1.PaymentServiceGetPurchaseResponse
1403
+ */
1404
+ type PaymentServiceGetPurchaseResponse = Message<"hiveng.v1.PaymentServiceGetPurchaseResponse"> & {
1405
+ /**
1406
+ * @generated from field: hiveng.v1.Purchase purchase = 1;
1407
+ */
1408
+ purchase?: Purchase | undefined;
1409
+ };
1410
+ /**
1411
+ * Describes the message hiveng.v1.PaymentServiceGetPurchaseResponse.
1412
+ * Use `create(PaymentServiceGetPurchaseResponseSchema)` to create a new message.
1413
+ */
1414
+ declare const PaymentServiceGetPurchaseResponseSchema: GenMessage<PaymentServiceGetPurchaseResponse>;
1415
+ /**
1416
+ * @generated from message hiveng.v1.ConfirmPaymentGrantDeliveredRequest
1417
+ */
1418
+ type ConfirmPaymentGrantDeliveredRequest = Message<"hiveng.v1.ConfirmPaymentGrantDeliveredRequest"> & {
1419
+ /**
1420
+ * @generated from field: string project_id = 1;
1421
+ */
1422
+ projectId: string;
1423
+ /**
1424
+ * @generated from field: string purchase_id = 2;
1425
+ */
1426
+ purchaseId: string;
1427
+ /**
1428
+ * @generated from field: string event_id = 3;
1429
+ */
1430
+ eventId: string;
1431
+ };
1432
+ /**
1433
+ * Describes the message hiveng.v1.ConfirmPaymentGrantDeliveredRequest.
1434
+ * Use `create(ConfirmPaymentGrantDeliveredRequestSchema)` to create a new message.
1435
+ */
1436
+ declare const ConfirmPaymentGrantDeliveredRequestSchema: GenMessage<ConfirmPaymentGrantDeliveredRequest>;
1437
+ /**
1438
+ * @generated from message hiveng.v1.ConfirmPaymentGrantDeliveredResponse
1439
+ */
1440
+ type ConfirmPaymentGrantDeliveredResponse = Message<"hiveng.v1.ConfirmPaymentGrantDeliveredResponse"> & {
1441
+ /**
1442
+ * @generated from field: hiveng.v1.Purchase purchase = 1;
1443
+ */
1444
+ purchase?: Purchase | undefined;
1445
+ };
1446
+ /**
1447
+ * Describes the message hiveng.v1.ConfirmPaymentGrantDeliveredResponse.
1448
+ * Use `create(ConfirmPaymentGrantDeliveredResponseSchema)` to create a new message.
1449
+ */
1450
+ declare const ConfirmPaymentGrantDeliveredResponseSchema: GenMessage<ConfirmPaymentGrantDeliveredResponse>;
1451
+ /**
1452
+ * 결제 마켓.
1453
+ *
1454
+ * @generated from enum hiveng.v1.Market
1455
+ */
1456
+ declare enum Market {
1457
+ /**
1458
+ * @generated from enum value: MARKET_UNSPECIFIED = 0;
1459
+ */
1460
+ UNSPECIFIED = 0,
1461
+ /**
1462
+ * @generated from enum value: MARKET_GOOGLE_PLAY = 1;
1463
+ */
1464
+ GOOGLE_PLAY = 1,
1465
+ /**
1466
+ * @generated from enum value: MARKET_APP_STORE = 2;
1467
+ */
1468
+ APP_STORE = 2,
1469
+ /**
1470
+ * @generated from enum value: MARKET_STEAM = 5;
1471
+ */
1472
+ STEAM = 5,
1473
+ /**
1474
+ * @generated from enum value: MARKET_WEB = 6;
1475
+ */
1476
+ WEB = 6
1477
+ }
1478
+ /**
1479
+ * 구매 상태.
1480
+ *
1481
+ * @generated from enum hiveng.v1.PurchaseStatus
1482
+ */
1483
+ declare enum PurchaseStatus {
1484
+ /**
1485
+ * @generated from enum value: PURCHASE_STATUS_UNSPECIFIED = 0;
1486
+ */
1487
+ UNSPECIFIED = 0,
1488
+ /**
1489
+ * @generated from enum value: PURCHASE_STATUS_PENDING = 1;
1490
+ */
1491
+ PENDING = 1,
1492
+ /**
1493
+ * @generated from enum value: PURCHASE_STATUS_VERIFIED = 2;
1494
+ */
1495
+ VERIFIED = 2,
1496
+ /**
1497
+ * @generated from enum value: PURCHASE_STATUS_FAILED = 3;
1498
+ */
1499
+ FAILED = 3,
1500
+ /**
1501
+ * @generated from enum value: PURCHASE_STATUS_REFUNDED = 4;
1502
+ */
1503
+ REFUNDED = 4,
1504
+ /**
1505
+ * @generated from enum value: PURCHASE_STATUS_CANCELED = 5;
1506
+ */
1507
+ CANCELED = 5,
1508
+ /**
1509
+ * @generated from enum value: PURCHASE_STATUS_EXPIRED = 6;
1510
+ */
1511
+ EXPIRED = 6
1512
+ }
1513
+ /**
1514
+ * @generated from enum hiveng.v1.ProductType
1515
+ */
1516
+ declare enum ProductType {
1517
+ /**
1518
+ * @generated from enum value: PRODUCT_TYPE_UNSPECIFIED = 0;
1519
+ */
1520
+ UNSPECIFIED = 0,
1521
+ /**
1522
+ * @generated from enum value: PRODUCT_TYPE_ONE_TIME = 1;
1523
+ */
1524
+ ONE_TIME = 1,
1525
+ /**
1526
+ * @generated from enum value: PRODUCT_TYPE_SUBSCRIPTION = 2;
1527
+ */
1528
+ SUBSCRIPTION = 2
1529
+ }
1530
+ /**
1531
+ * @generated from enum hiveng.v1.PaymentConsumePolicy
1532
+ */
1533
+ declare enum PaymentConsumePolicy {
1534
+ /**
1535
+ * @generated from enum value: PAYMENT_CONSUME_POLICY_UNSPECIFIED = 0;
1536
+ */
1537
+ UNSPECIFIED = 0,
1538
+ /**
1539
+ * @generated from enum value: PAYMENT_CONSUME_POLICY_NONE = 1;
1540
+ */
1541
+ NONE = 1,
1542
+ /**
1543
+ * @generated from enum value: PAYMENT_CONSUME_POLICY_CONSUME_AFTER_GRANT = 2;
1544
+ */
1545
+ CONSUME_AFTER_GRANT = 2
1546
+ }
1547
+ /**
1548
+ * @generated from enum hiveng.v1.PaymentGrantMode
1549
+ */
1550
+ declare enum PaymentGrantMode {
1551
+ /**
1552
+ * @generated from enum value: PAYMENT_GRANT_MODE_UNSPECIFIED = 0;
1553
+ */
1554
+ UNSPECIFIED = 0,
1555
+ /**
1556
+ * @generated from enum value: PAYMENT_GRANT_MODE_WEBHOOK_REQUIRED = 1;
1557
+ */
1558
+ WEBHOOK_REQUIRED = 1,
1559
+ /**
1560
+ * @generated from enum value: PAYMENT_GRANT_MODE_NO_GRANT = 2;
1561
+ */
1562
+ NO_GRANT = 2,
1563
+ /**
1564
+ * @generated from enum value: PAYMENT_GRANT_MODE_CLIENT_GRANT = 3;
1565
+ */
1566
+ CLIENT_GRANT = 3
1567
+ }
1568
+ /**
1569
+ * 클라이언트 SDK용 결제 서비스.
1570
+ *
1571
+ * @generated from service hiveng.v1.PaymentService
1572
+ */
1573
+ declare const PaymentService: GenService<{
1574
+ /**
1575
+ * 클라이언트에 노출 가능한 상품 목록 조회.
1576
+ * auth: api_key + player_token
1577
+ *
1578
+ * @generated from rpc hiveng.v1.PaymentService.ListProducts
1579
+ */
1580
+ listProducts: {
1581
+ methodKind: "unary";
1582
+ input: typeof ListProductsRequestSchema;
1583
+ output: typeof ListProductsResponseSchema;
1584
+ };
1585
+ /**
1586
+ * 구매 시작 기록. 실제 마켓 결제창을 열기 전에 호출한다.
1587
+ * auth: api_key + player_token
1588
+ *
1589
+ * @generated from rpc hiveng.v1.PaymentService.StartPurchase
1590
+ */
1591
+ startPurchase: {
1592
+ methodKind: "unary";
1593
+ input: typeof StartPurchaseRequestSchema;
1594
+ output: typeof StartPurchaseResponseSchema;
1595
+ };
1596
+ /**
1597
+ * 마켓 영수증 검증. 이미 처리된 영수증이면 ERROR_CODE_DUPLICATE_RECEIPT 반환.
1598
+ * auth: api_key + player_token
1599
+ *
1600
+ * @generated from rpc hiveng.v1.PaymentService.VerifyPurchase
1601
+ */
1602
+ verifyPurchase: {
1603
+ methodKind: "unary";
1604
+ input: typeof VerifyPurchaseRequestSchema;
1605
+ output: typeof VerifyPurchaseResponseSchema;
1606
+ };
1607
+ /**
1608
+ * 로그인 플레이어의 구매 내역 단건 조회.
1609
+ * auth: api_key + player_token
1610
+ *
1611
+ * @generated from rpc hiveng.v1.PaymentService.GetPurchase
1612
+ */
1613
+ getPurchase: {
1614
+ methodKind: "unary";
1615
+ input: typeof PaymentServiceGetPurchaseRequestSchema;
1616
+ output: typeof PaymentServiceGetPurchaseResponseSchema;
1617
+ };
1618
+ /**
1619
+ * 게임 서버 웹훅 지급 완료 확인.
1620
+ * auth: service
1621
+ *
1622
+ * @generated from rpc hiveng.v1.PaymentService.ConfirmPaymentGrantDelivered
1623
+ */
1624
+ confirmPaymentGrantDelivered: {
1625
+ methodKind: "unary";
1626
+ input: typeof ConfirmPaymentGrantDeliveredRequestSchema;
1627
+ output: typeof ConfirmPaymentGrantDeliveredResponseSchema;
1628
+ };
1629
+ }>;
1630
+
1631
+ interface PaymentPurchase {
1632
+ id: string;
1633
+ projectId: string;
1634
+ playerId: string;
1635
+ market: string;
1636
+ productType: string;
1637
+ productId: string;
1638
+ packageName: string;
1639
+ purchaseIntentId: string;
1640
+ amountMinor: bigint;
1641
+ currency: string;
1642
+ status: string;
1643
+ grantStatus: string;
1644
+ consumeStatus: string;
1645
+ marketOrderId: string;
1646
+ purchasedAt?: Date;
1647
+ verifiedAt?: Date;
1648
+ }
1649
+ type PaymentClient = Client<typeof PaymentService>;
1650
+ declare class PaymentApi {
1651
+ private client;
1652
+ bind(client: PaymentClient): void;
1653
+ unbind(): void;
1654
+ getPurchase(purchaseId: string): Promise<PaymentPurchase>;
1655
+ waitForPaymentGrant(purchaseId: string, timeoutMillis?: number): Promise<PaymentPurchase>;
1656
+ private requireClient;
1657
+ }
1658
+
1659
+ declare class HiveNgClient {
1660
+ readonly auth: AuthApi;
1661
+ readonly notice: NoticeApi;
1662
+ readonly mailbox: MailboxApi;
1663
+ readonly payment: PaymentApi;
1664
+ private readonly config;
1665
+ private readonly session;
1666
+ private readonly factory;
1667
+ private endpoints;
1668
+ private ready;
1669
+ constructor(config: HiveNgConfig);
1670
+ init(): Promise<void>;
1671
+ isReady(): boolean;
1672
+ endpointFor(domain: string): string | undefined;
1673
+ }
1674
+ declare function createHiveNg(config: HiveNgConfig): HiveNgClient;
1675
+
1676
+ export { BannedError, type CheckNewMailResult, ErrorCode, HiveNgClient, type HiveNgConfig, HiveNgError, IdentityProvider, type ListMailOptions, type ListMailResult, type LoginProviders, type Mail, MailType, MaintenanceError, type Notice, type PaymentPurchase, type Player, type TransportFactory, type TransportFactoryOptions, createHiveNg, errorCodeOf, errorDetailOf };