@ait-co/devtools 0.0.3 → 0.1.1

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.
@@ -1,3 +1,125 @@
1
+ //#region src/mock/ads/index.d.ts
2
+ /**
3
+ * 광고 mock (GoogleAdMob, TossAds, FullScreenAd)
4
+ */
5
+ declare const GoogleAdMob: {
6
+ loadAppsInTossAdMob: ((args: {
7
+ onEvent: (data: {
8
+ type: string;
9
+ data?: unknown;
10
+ }) => void;
11
+ onError: (error: Error) => void;
12
+ options?: {
13
+ adGroupId?: string;
14
+ };
15
+ }) => (() => void)) & {
16
+ isSupported: () => boolean;
17
+ };
18
+ showAppsInTossAdMob: ((args: {
19
+ onEvent: (data: {
20
+ type: string;
21
+ data?: unknown;
22
+ }) => void;
23
+ onError: (error: Error) => void;
24
+ options?: {
25
+ adGroupId?: string;
26
+ };
27
+ }) => (() => void)) & {
28
+ isSupported: () => boolean;
29
+ };
30
+ isAppsInTossAdMobLoaded: ((_options: {
31
+ adGroupId?: string;
32
+ }) => Promise<boolean>) & {
33
+ isSupported: () => boolean;
34
+ };
35
+ };
36
+ declare const TossAds: {
37
+ initialize: ((_options: unknown) => void) & {
38
+ isSupported: () => boolean;
39
+ };
40
+ attach: ((_adGroupId: string, target: string | HTMLElement, _options?: unknown) => void) & {
41
+ isSupported: () => boolean;
42
+ };
43
+ attachBanner: ((_adGroupId: string, target: string | HTMLElement, _options?: unknown) => {
44
+ destroy: () => void;
45
+ }) & {
46
+ isSupported: () => boolean;
47
+ };
48
+ destroy: ((_slotId: string) => void) & {
49
+ isSupported: () => boolean;
50
+ };
51
+ destroyAll: (() => void) & {
52
+ isSupported: () => boolean;
53
+ };
54
+ };
55
+ declare const loadFullScreenAd: ((args: {
56
+ onEvent: (data: {
57
+ type: string;
58
+ data?: unknown;
59
+ }) => void;
60
+ onError: (error: Error) => void;
61
+ options?: {
62
+ adGroupId?: string;
63
+ };
64
+ }) => (() => void)) & {
65
+ isSupported: () => boolean;
66
+ };
67
+ declare const showFullScreenAd: ((args: {
68
+ onEvent: (data: {
69
+ type: string;
70
+ data?: unknown;
71
+ }) => void;
72
+ onError: (error: Error) => void;
73
+ options?: {
74
+ adGroupId?: string;
75
+ };
76
+ }) => (() => void)) & {
77
+ isSupported: () => boolean;
78
+ };
79
+ //#endregion
80
+ //#region src/mock/analytics/index.d.ts
81
+ /**
82
+ * Analytics mock
83
+ */
84
+ type Primitive$1 = string | number | boolean | null | undefined | symbol;
85
+ type LoggerParams = {
86
+ log_name?: string;
87
+ } & Record<string, Primitive$1>;
88
+ declare const Analytics: {
89
+ screen: (params?: LoggerParams) => Promise<void> | undefined;
90
+ impression: (params?: LoggerParams) => Promise<void> | undefined;
91
+ click: (params?: LoggerParams) => Promise<void> | undefined;
92
+ };
93
+ declare function eventLog(params: {
94
+ log_name: string;
95
+ log_type: 'debug' | 'info' | 'warn' | 'error' | 'event' | 'screen' | 'impression' | 'click';
96
+ params: Record<string, Primitive$1>;
97
+ }): Promise<void>;
98
+ //#endregion
99
+ //#region src/mock/auth/index.d.ts
100
+ /**
101
+ * 인증/로그인 mock
102
+ */
103
+ declare function appLogin(): Promise<{
104
+ authorizationCode: string;
105
+ referrer: 'DEFAULT' | 'SANDBOX';
106
+ }>;
107
+ declare function getIsTossLoginIntegratedService(): Promise<boolean | undefined>;
108
+ declare function getUserKeyForGame(): Promise<{
109
+ hash: string;
110
+ type: 'HASH';
111
+ } | 'INVALID_CATEGORY' | 'ERROR' | undefined>;
112
+ interface AppsInTossSignTossCertParams {
113
+ txId: string;
114
+ }
115
+ declare function appsInTossSignTossCert(_params: AppsInTossSignTossCertParams): Promise<void>;
116
+ //#endregion
117
+ //#region src/mock/device/_helpers.d.ts
118
+ /**
119
+ * 디바이스 모듈 내부 공유 헬퍼
120
+ */
121
+ declare function getDefaultPlaceholderImages(): string[];
122
+ //#endregion
1
123
  //#region src/mock/types.d.ts
2
124
  type Primitive = string | number | boolean | null | undefined | symbol;
3
125
  type PlatformOS = 'ios' | 'android';
@@ -57,107 +179,266 @@ interface SafeAreaInsets$1 {
57
179
  right: number;
58
180
  }
59
181
  //#endregion
60
- //#region src/mock/state.d.ts
61
- type Listener = () => void;
62
- interface AitDevtoolsState {
63
- platform: PlatformOS;
64
- environment: OperationalEnvironment;
65
- appVersion: string;
66
- locale: string;
67
- schemeUri: string;
68
- groupId: string;
69
- deploymentId: string;
70
- deviceId: string;
71
- brand: {
72
- displayName: string;
73
- icon: string;
74
- primaryColor: string;
75
- };
76
- networkStatus: NetworkStatus;
77
- permissions: Record<PermissionName, PermissionStatus>;
78
- location: MockLocation;
79
- safeAreaInsets: SafeAreaInsets$1;
80
- contacts: MockContact[];
81
- iap: {
82
- products: MockIapProduct[];
83
- nextResult: IapNextResult;
84
- pendingOrders: Array<{
85
- orderId: string;
86
- sku: string;
87
- paymentCompletedDate: string;
88
- }>;
89
- completedOrders: Array<{
90
- orderId: string;
91
- sku: string;
92
- status: 'COMPLETED' | 'REFUNDED';
93
- date: string;
94
- }>;
95
- };
96
- payment: {
97
- nextResult: 'success' | 'fail';
98
- failReason: string;
99
- };
100
- auth: {
101
- isLoggedIn: boolean;
102
- isTossLoginIntegrated: boolean;
103
- userKeyHash: string;
104
- };
105
- ads: {
106
- isLoaded: boolean;
107
- nextEvent: 'loaded' | 'clicked' | 'dismissed' | 'failedToShow' | 'impression' | 'userEarnedReward';
108
- };
109
- game: {
110
- profile: {
111
- nickname: string;
112
- profileImageUri: string;
113
- } | null;
114
- leaderboardScores: Array<{
115
- score: string;
116
- timestamp: number;
117
- }>;
118
- };
119
- analyticsLog: AnalyticsLogEntry[];
120
- deviceModes: DeviceModes;
121
- mockData: MockData;
122
- panelEditable: boolean;
123
- }
124
- declare class AitStateManager {
125
- private _state;
126
- private _listeners;
127
- constructor();
128
- get state(): AitDevtoolsState;
129
- update(partial: Partial<AitDevtoolsState>): void;
130
- /** 중첩 객체 업데이트용 */
131
- patch<K extends keyof AitDevtoolsState>(key: K, partial: Partial<AitDevtoolsState[K]>): void;
132
- subscribe(listener: Listener): () => void;
133
- /** 분석 로그 추가 */
134
- logAnalytics(entry: Omit<AnalyticsLogEntry, 'timestamp'>): void;
135
- /** 이벤트 트리거 (backEvent, homeEvent 등) */
136
- trigger(event: string): void;
137
- reset(): void;
138
- private _notify;
139
- }
140
- declare const aitState: AitStateManager;
182
+ //#region src/mock/device/camera.d.ts
183
+ /**
184
+ * Camera & Album Photos mock
185
+ * mock/web/prompt 모드 지원
186
+ */
187
+ declare const openCamera: ((_options?: {
188
+ base64?: boolean;
189
+ maxWidth?: number;
190
+ }) => Promise<{
191
+ id: string;
192
+ dataUri: string;
193
+ }>) & {
194
+ getPermission: () => Promise<PermissionStatus>;
195
+ openPermissionDialog: () => Promise<"allowed" | "denied">;
196
+ };
197
+ declare const fetchAlbumPhotos: ((options?: {
198
+ maxCount?: number;
199
+ maxWidth?: number;
200
+ base64?: boolean;
201
+ }) => Promise<Array<{
202
+ id: string;
203
+ dataUri: string;
204
+ }>>) & {
205
+ getPermission: () => Promise<PermissionStatus>;
206
+ openPermissionDialog: () => Promise<"allowed" | "denied">;
207
+ };
141
208
  //#endregion
142
- //#region src/mock/auth/index.d.ts
209
+ //#region src/mock/device/clipboard.d.ts
143
210
  /**
144
- * 인증/로그인 mock
211
+ * Clipboard mock
212
+ * mock/web 모드 지원
145
213
  */
146
- declare function appLogin(): Promise<{
147
- authorizationCode: string;
148
- referrer: 'DEFAULT' | 'SANDBOX';
149
- }>;
150
- declare function getIsTossLoginIntegratedService(): Promise<boolean | undefined>;
151
- declare function getUserKeyForGame(): Promise<{
152
- hash: string;
153
- type: 'HASH';
154
- } | 'INVALID_CATEGORY' | 'ERROR' | undefined>;
155
- interface AppsInTossSignTossCertParams {
156
- txId: string;
157
- }
158
- declare function appsInTossSignTossCert(_params: AppsInTossSignTossCertParams): Promise<void>;
214
+ declare const getClipboardText: (() => Promise<string>) & {
215
+ getPermission: () => Promise<PermissionStatus>;
216
+ openPermissionDialog: () => Promise<"allowed" | "denied">;
217
+ };
218
+ declare const setClipboardText: ((text: string) => Promise<void>) & {
219
+ getPermission: () => Promise<PermissionStatus>;
220
+ openPermissionDialog: () => Promise<"allowed" | "denied">;
221
+ };
159
222
  //#endregion
160
- //#region src/mock/navigation/index.d.ts
223
+ //#region src/mock/device/contacts.d.ts
224
+ /**
225
+ * Contacts mock
226
+ */
227
+ declare const fetchContacts: ((options: {
228
+ size: number;
229
+ offset: number;
230
+ query?: {
231
+ contains?: string;
232
+ };
233
+ }) => Promise<{
234
+ result: MockContact[];
235
+ nextOffset: number | null;
236
+ done: boolean;
237
+ }>) & {
238
+ getPermission: () => Promise<PermissionStatus>;
239
+ openPermissionDialog: () => Promise<"allowed" | "denied">;
240
+ };
241
+ //#endregion
242
+ //#region src/mock/device/haptic.d.ts
243
+ /**
244
+ * Haptic Feedback & saveBase64Data mock
245
+ */
246
+ declare function generateHapticFeedback(options: {
247
+ type: string;
248
+ }): Promise<void>;
249
+ declare function saveBase64Data(params: {
250
+ data: string;
251
+ fileName: string;
252
+ mimeType: string;
253
+ }): Promise<void>;
254
+ //#endregion
255
+ //#region src/mock/device/location.d.ts
256
+ declare enum Accuracy {
257
+ Lowest = 1,
258
+ Low = 2,
259
+ Balanced = 3,
260
+ High = 4,
261
+ Highest = 5,
262
+ BestForNavigation = 6
263
+ }
264
+ declare const getCurrentLocation: ((_options?: {
265
+ accuracy: Accuracy;
266
+ }) => Promise<MockLocation>) & {
267
+ getPermission: () => Promise<PermissionStatus>;
268
+ openPermissionDialog: () => Promise<"allowed" | "denied">;
269
+ };
270
+ interface StartUpdateLocationEventParams {
271
+ onEvent: (response: MockLocation) => void;
272
+ onError: (error: unknown) => void;
273
+ options: {
274
+ accuracy: Accuracy;
275
+ timeInterval: number;
276
+ distanceInterval: number;
277
+ };
278
+ }
279
+ declare const startUpdateLocation: ((eventParams: StartUpdateLocationEventParams) => (() => void)) & {
280
+ getPermission: () => Promise<PermissionStatus>;
281
+ openPermissionDialog: () => Promise<"allowed" | "denied">;
282
+ };
283
+ //#endregion
284
+ //#region src/mock/device/storage.d.ts
285
+ /**
286
+ * Storage mock
287
+ * localStorage에 `__ait_storage:` prefix로 저장하여 앱 자체 localStorage와 분리
288
+ */
289
+ declare const Storage: {
290
+ getItem: (key: string) => Promise<string | null>;
291
+ setItem: (key: string, value: string) => Promise<void>;
292
+ removeItem: (key: string) => Promise<void>;
293
+ clearItems: () => Promise<void>;
294
+ };
295
+ //#endregion
296
+ //#region src/mock/game/index.d.ts
297
+ /**
298
+ * 게임/프로모션 mock
299
+ */
300
+ declare function grantPromotionReward(params: {
301
+ params: {
302
+ promotionCode: string;
303
+ amount: number;
304
+ };
305
+ }): Promise<{
306
+ key: string;
307
+ } | {
308
+ errorCode: string;
309
+ message: string;
310
+ } | 'ERROR' | undefined>;
311
+ declare function grantPromotionRewardForGame(params: {
312
+ params: {
313
+ promotionCode: string;
314
+ amount: number;
315
+ };
316
+ }): Promise<{
317
+ key: string;
318
+ } | {
319
+ errorCode: string;
320
+ message: string;
321
+ } | 'ERROR' | undefined>;
322
+ declare function submitGameCenterLeaderBoardScore(params: {
323
+ score: string;
324
+ }): Promise<{
325
+ statusCode: 'SUCCESS' | 'LEADERBOARD_NOT_FOUND' | 'PROFILE_NOT_FOUND' | 'UNPARSABLE_SCORE';
326
+ } | undefined>;
327
+ declare function getGameCenterGameProfile(): Promise<{
328
+ statusCode: 'SUCCESS';
329
+ nickname: string;
330
+ profileImageUri: string;
331
+ } | {
332
+ statusCode: 'PROFILE_NOT_FOUND';
333
+ } | undefined>;
334
+ declare function openGameCenterLeaderboard(): Promise<void>;
335
+ interface ContactsViralEvent {
336
+ type: string;
337
+ data: Record<string, unknown>;
338
+ }
339
+ declare function contactsViral(params: {
340
+ options: {
341
+ moduleId: string;
342
+ };
343
+ onEvent: (event: ContactsViralEvent) => void;
344
+ onError: (error: unknown) => void;
345
+ }): () => void;
346
+ //#endregion
347
+ //#region src/mock/iap/index.d.ts
348
+ /**
349
+ * IAP (인앱결제) mock
350
+ */
351
+ interface IapCreateOneTimePurchaseOrderOptions {
352
+ options: {
353
+ sku?: string;
354
+ productId?: string;
355
+ processProductGrant: (params: {
356
+ orderId: string;
357
+ }) => boolean | Promise<boolean>;
358
+ };
359
+ onEvent: (event: {
360
+ type: 'success';
361
+ data: IapOrderResult;
362
+ }) => void | Promise<void>;
363
+ onError: (error: unknown) => void | Promise<void>;
364
+ }
365
+ interface CreateSubscriptionPurchaseOrderOptions {
366
+ options: {
367
+ sku: string;
368
+ offerId?: string | null;
369
+ processProductGrant: (params: {
370
+ orderId: string;
371
+ subscriptionId?: string;
372
+ }) => boolean | Promise<boolean>;
373
+ };
374
+ onEvent: (event: {
375
+ type: 'success';
376
+ data: IapOrderResult;
377
+ }) => void | Promise<void>;
378
+ onError: (error: unknown) => void | Promise<void>;
379
+ }
380
+ interface IapOrderResult {
381
+ orderId: string;
382
+ displayName: string;
383
+ displayAmount: string;
384
+ amount: number;
385
+ currency: string;
386
+ fraction: number;
387
+ miniAppIconUrl: string | null;
388
+ }
389
+ declare const IAP: {
390
+ createOneTimePurchaseOrder(params: IapCreateOneTimePurchaseOrderOptions): () => void;
391
+ createSubscriptionPurchaseOrder(params: CreateSubscriptionPurchaseOrderOptions): () => void;
392
+ getProductItemList(): Promise<{
393
+ products: unknown[];
394
+ }>;
395
+ getPendingOrders(): Promise<{
396
+ orders: Array<{
397
+ orderId: string;
398
+ sku: string;
399
+ paymentCompletedDate: string;
400
+ }>;
401
+ }>;
402
+ getCompletedOrRefundedOrders(): Promise<{
403
+ hasNext: boolean;
404
+ nextKey?: string | null;
405
+ orders: Array<{
406
+ orderId: string;
407
+ sku: string;
408
+ status: "COMPLETED" | "REFUNDED";
409
+ date: string;
410
+ }>;
411
+ }>;
412
+ completeProductGrant(args: {
413
+ params: {
414
+ orderId: string;
415
+ };
416
+ }): Promise<boolean>;
417
+ getSubscriptionInfo(_args: {
418
+ params: {
419
+ orderId: string;
420
+ };
421
+ }): Promise<{
422
+ subscription: {
423
+ catalogId: number;
424
+ status: string;
425
+ expiresAt: string;
426
+ isAutoRenew: boolean;
427
+ gracePeriodExpiresAt: null;
428
+ isAccessible: boolean;
429
+ };
430
+ }>;
431
+ };
432
+ declare function checkoutPayment(options: {
433
+ params: {
434
+ payToken: string;
435
+ };
436
+ }): Promise<{
437
+ success: boolean;
438
+ reason?: string;
439
+ }>;
440
+ //#endregion
441
+ //#region src/mock/navigation/index.d.ts
161
442
  declare function closeView(): Promise<void>;
162
443
  declare function openURL(url: string): Promise<void>;
163
444
  declare function share(message: {
@@ -198,12 +479,12 @@ interface GraniteEventMap {
198
479
  backEvent: {
199
480
  onEvent: () => void;
200
481
  onError?: (error: Error) => void;
201
- options?: void;
482
+ options?: undefined;
202
483
  };
203
484
  homeEvent: {
204
485
  onEvent: () => void;
205
486
  onError?: (error: Error) => void;
206
- options?: void;
487
+ options?: undefined;
207
488
  };
208
489
  }
209
490
  declare const graniteEvent: {
@@ -275,392 +556,111 @@ declare const SafeAreaInsets: {
275
556
  /** @deprecated */
276
557
  declare function getSafeAreaInsets(): number;
277
558
  //#endregion
278
- //#region src/mock/device/_helpers.d.ts
279
- /**
280
- * 디바이스 모듈 내부 공유 헬퍼
281
- */
282
- declare function getDefaultPlaceholderImages(): string[];
283
- //#endregion
284
- //#region src/mock/device/storage.d.ts
559
+ //#region src/mock/partner/index.d.ts
285
560
  /**
286
- * Storage mock
287
- * localStorage에 `__ait_storage:` prefix로 저장하여 앱 자체 localStorage와 분리
561
+ * Partner / TDS mock
288
562
  */
289
- declare const Storage: {
290
- getItem: (key: string) => Promise<string | null>;
291
- setItem: (key: string, value: string) => Promise<void>;
292
- removeItem: (key: string) => Promise<void>;
293
- clearItems: () => Promise<void>;
563
+ interface AddAccessoryButtonOptions {
564
+ id: string;
565
+ title: string;
566
+ icon: {
567
+ name: string;
568
+ };
569
+ }
570
+ declare const partner: {
571
+ addAccessoryButton(options: AddAccessoryButtonOptions): Promise<void>;
572
+ removeAccessoryButton(): Promise<void>;
294
573
  };
295
574
  //#endregion
296
- //#region src/mock/device/location.d.ts
297
- declare enum Accuracy {
298
- Lowest = 1,
299
- Low = 2,
300
- Balanced = 3,
301
- High = 4,
302
- Highest = 5,
303
- BestForNavigation = 6
304
- }
305
- declare const getCurrentLocation: ((_options?: {
306
- accuracy: Accuracy;
307
- }) => Promise<MockLocation>) & {
308
- getPermission: () => Promise<PermissionStatus>;
309
- openPermissionDialog: () => Promise<"allowed" | "denied">;
310
- };
311
- interface StartUpdateLocationEventParams {
312
- onEvent: (response: MockLocation) => void;
313
- onError: (error: unknown) => void;
314
- options: {
315
- accuracy: Accuracy;
316
- timeInterval: number;
317
- distanceInterval: number;
318
- };
319
- }
320
- declare const startUpdateLocation: ((eventParams: StartUpdateLocationEventParams) => () => void) & {
321
- getPermission: () => Promise<PermissionStatus>;
322
- openPermissionDialog: () => Promise<"allowed" | "denied">;
323
- };
324
- //#endregion
325
- //#region src/mock/device/camera.d.ts
326
- /**
327
- * Camera & Album Photos mock
328
- * mock/web/prompt 모드 지원
329
- */
330
- declare const openCamera: ((_options?: {
331
- base64?: boolean;
332
- maxWidth?: number;
333
- }) => Promise<{
334
- id: string;
335
- dataUri: string;
336
- }>) & {
337
- getPermission: () => Promise<PermissionStatus>;
338
- openPermissionDialog: () => Promise<"allowed" | "denied">;
339
- };
340
- declare const fetchAlbumPhotos: ((options?: {
341
- maxCount?: number;
342
- maxWidth?: number;
343
- base64?: boolean;
344
- }) => Promise<Array<{
345
- id: string;
346
- dataUri: string;
347
- }>>) & {
348
- getPermission: () => Promise<PermissionStatus>;
349
- openPermissionDialog: () => Promise<"allowed" | "denied">;
350
- };
351
- //#endregion
352
- //#region src/mock/device/clipboard.d.ts
353
- /**
354
- * Clipboard mock
355
- * mock/web 모드 지원
356
- */
357
- declare const getClipboardText: (() => Promise<string>) & {
358
- getPermission: () => Promise<PermissionStatus>;
359
- openPermissionDialog: () => Promise<"allowed" | "denied">;
360
- };
361
- declare const setClipboardText: ((text: string) => Promise<void>) & {
362
- getPermission: () => Promise<PermissionStatus>;
363
- openPermissionDialog: () => Promise<"allowed" | "denied">;
364
- };
365
- //#endregion
366
- //#region src/mock/device/contacts.d.ts
367
- /**
368
- * Contacts mock
369
- */
370
- declare const fetchContacts: ((options: {
371
- size: number;
372
- offset: number;
373
- query?: {
374
- contains?: string;
375
- };
376
- }) => Promise<{
377
- result: MockContact[];
378
- nextOffset: number | null;
379
- done: boolean;
380
- }>) & {
381
- getPermission: () => Promise<PermissionStatus>;
382
- openPermissionDialog: () => Promise<"allowed" | "denied">;
383
- };
384
- //#endregion
385
- //#region src/mock/device/haptic.d.ts
386
- /**
387
- * Haptic Feedback & saveBase64Data mock
388
- */
389
- declare function generateHapticFeedback(options: {
390
- type: string;
391
- }): Promise<void>;
392
- declare function saveBase64Data(params: {
393
- data: string;
394
- fileName: string;
395
- mimeType: string;
396
- }): Promise<void>;
575
+ //#region src/mock/permissions.d.ts
576
+ declare function getPermission(name: PermissionName): Promise<PermissionStatus>;
577
+ declare function openPermissionDialog(name: PermissionName): Promise<'allowed' | 'denied'>;
578
+ declare function requestPermission(permission: {
579
+ name: PermissionName;
580
+ access: string;
581
+ }): Promise<'allowed' | 'denied'>;
397
582
  //#endregion
398
- //#region src/mock/iap/index.d.ts
399
- /**
400
- * IAP (인앱결제) mock
401
- */
402
- interface IapCreateOneTimePurchaseOrderOptions {
403
- options: {
404
- sku?: string;
405
- productId?: string;
406
- processProductGrant: (params: {
407
- orderId: string;
408
- }) => boolean | Promise<boolean>;
409
- };
410
- onEvent: (event: {
411
- type: 'success';
412
- data: IapOrderResult;
413
- }) => void | Promise<void>;
414
- onError: (error: unknown) => void | Promise<void>;
415
- }
416
- interface CreateSubscriptionPurchaseOrderOptions {
417
- options: {
418
- sku: string;
419
- offerId?: string | null;
420
- processProductGrant: (params: {
421
- orderId: string;
422
- subscriptionId?: string;
423
- }) => boolean | Promise<boolean>;
583
+ //#region src/mock/state.d.ts
584
+ type Listener = () => void;
585
+ interface AitDevtoolsState {
586
+ platform: PlatformOS;
587
+ environment: OperationalEnvironment;
588
+ appVersion: string;
589
+ locale: string;
590
+ schemeUri: string;
591
+ groupId: string;
592
+ deploymentId: string;
593
+ deviceId: string;
594
+ brand: {
595
+ displayName: string;
596
+ icon: string;
597
+ primaryColor: string;
424
598
  };
425
- onEvent: (event: {
426
- type: 'success';
427
- data: IapOrderResult;
428
- }) => void | Promise<void>;
429
- onError: (error: unknown) => void | Promise<void>;
430
- }
431
- interface IapOrderResult {
432
- orderId: string;
433
- displayName: string;
434
- displayAmount: string;
435
- amount: number;
436
- currency: string;
437
- fraction: number;
438
- miniAppIconUrl: string | null;
439
- }
440
- declare const IAP: {
441
- createOneTimePurchaseOrder(params: IapCreateOneTimePurchaseOrderOptions): () => void;
442
- createSubscriptionPurchaseOrder(params: CreateSubscriptionPurchaseOrderOptions): () => void;
443
- getProductItemList(): Promise<{
444
- products: unknown[];
445
- }>;
446
- getPendingOrders(): Promise<{
447
- orders: Array<{
599
+ networkStatus: NetworkStatus;
600
+ permissions: Record<PermissionName, PermissionStatus>;
601
+ location: MockLocation;
602
+ safeAreaInsets: SafeAreaInsets$1;
603
+ contacts: MockContact[];
604
+ iap: {
605
+ products: MockIapProduct[];
606
+ nextResult: IapNextResult;
607
+ pendingOrders: Array<{
448
608
  orderId: string;
449
609
  sku: string;
450
610
  paymentCompletedDate: string;
451
611
  }>;
452
- }>;
453
- getCompletedOrRefundedOrders(): Promise<{
454
- hasNext: boolean;
455
- nextKey?: string | null;
456
- orders: Array<{
612
+ completedOrders: Array<{
457
613
  orderId: string;
458
614
  sku: string;
459
- status: "COMPLETED" | "REFUNDED";
615
+ status: 'COMPLETED' | 'REFUNDED';
460
616
  date: string;
461
617
  }>;
462
- }>;
463
- completeProductGrant(args: {
464
- params: {
465
- orderId: string;
466
- };
467
- }): Promise<boolean>;
468
- getSubscriptionInfo(_args: {
469
- params: {
470
- orderId: string;
471
- };
472
- }): Promise<{
473
- subscription: {
474
- catalogId: number;
475
- status: string;
476
- expiresAt: string;
477
- isAutoRenew: boolean;
478
- gracePeriodExpiresAt: null;
479
- isAccessible: boolean;
480
- };
481
- }>;
482
- };
483
- declare function checkoutPayment(options: {
484
- params: {
485
- payToken: string;
486
- };
487
- }): Promise<{
488
- success: boolean;
489
- reason?: string;
490
- }>;
491
- //#endregion
492
- //#region src/mock/ads/index.d.ts
493
- /**
494
- * 광고 mock (GoogleAdMob, TossAds, FullScreenAd)
495
- */
496
- declare const GoogleAdMob: {
497
- loadAppsInTossAdMob: ((args: {
498
- onEvent: (data: {
499
- type: string;
500
- data?: unknown;
501
- }) => void;
502
- onError: (error: Error) => void;
503
- options?: {
504
- adGroupId?: string;
505
- };
506
- }) => (() => void)) & {
507
- isSupported: () => boolean;
508
- };
509
- showAppsInTossAdMob: ((args: {
510
- onEvent: (data: {
511
- type: string;
512
- data?: unknown;
513
- }) => void;
514
- onError: (error: Error) => void;
515
- options?: {
516
- adGroupId?: string;
517
- };
518
- }) => (() => void)) & {
519
- isSupported: () => boolean;
520
- };
521
- isAppsInTossAdMobLoaded: ((_options: {
522
- adGroupId?: string;
523
- }) => Promise<boolean>) & {
524
- isSupported: () => boolean;
525
- };
526
- };
527
- declare const TossAds: {
528
- initialize: ((_options: unknown) => void) & {
529
- isSupported: () => boolean;
530
618
  };
531
- attach: ((_adGroupId: string, target: string | HTMLElement, _options?: unknown) => void) & {
532
- isSupported: () => boolean;
533
- };
534
- attachBanner: ((_adGroupId: string, target: string | HTMLElement, _options?: unknown) => {
535
- destroy: () => void;
536
- }) & {
537
- isSupported: () => boolean;
538
- };
539
- destroy: ((_slotId: string) => void) & {
540
- isSupported: () => boolean;
541
- };
542
- destroyAll: (() => void) & {
543
- isSupported: () => boolean;
544
- };
545
- };
546
- declare const loadFullScreenAd: ((args: {
547
- onEvent: (data: {
548
- type: string;
549
- data?: unknown;
550
- }) => void;
551
- onError: (error: Error) => void;
552
- options?: {
553
- adGroupId?: string;
619
+ payment: {
620
+ nextResult: 'success' | 'fail';
621
+ failReason: string;
554
622
  };
555
- }) => (() => void)) & {
556
- isSupported: () => boolean;
557
- };
558
- declare const showFullScreenAd: ((args: {
559
- onEvent: (data: {
560
- type: string;
561
- data?: unknown;
562
- }) => void;
563
- onError: (error: Error) => void;
564
- options?: {
565
- adGroupId?: string;
623
+ auth: {
624
+ isLoggedIn: boolean;
625
+ isTossLoginIntegrated: boolean;
626
+ userKeyHash: string;
566
627
  };
567
- }) => (() => void)) & {
568
- isSupported: () => boolean;
569
- };
570
- //#endregion
571
- //#region src/mock/game/index.d.ts
572
- /**
573
- * 게임/프로모션 mock
574
- */
575
- declare function grantPromotionReward(params: {
576
- params: {
577
- promotionCode: string;
578
- amount: number;
628
+ ads: {
629
+ isLoaded: boolean;
630
+ nextEvent: 'loaded' | 'clicked' | 'dismissed' | 'failedToShow' | 'impression' | 'userEarnedReward';
579
631
  };
580
- }): Promise<{
581
- key: string;
582
- } | {
583
- errorCode: string;
584
- message: string;
585
- } | 'ERROR' | undefined>;
586
- declare function grantPromotionRewardForGame(params: {
587
- params: {
588
- promotionCode: string;
589
- amount: number;
632
+ game: {
633
+ profile: {
634
+ nickname: string;
635
+ profileImageUri: string;
636
+ } | null;
637
+ leaderboardScores: Array<{
638
+ score: string;
639
+ timestamp: number;
640
+ }>;
590
641
  };
591
- }): Promise<{
592
- key: string;
593
- } | {
594
- errorCode: string;
595
- message: string;
596
- } | 'ERROR' | undefined>;
597
- declare function submitGameCenterLeaderBoardScore(params: {
598
- score: string;
599
- }): Promise<{
600
- statusCode: 'SUCCESS' | 'LEADERBOARD_NOT_FOUND' | 'PROFILE_NOT_FOUND' | 'UNPARSABLE_SCORE';
601
- } | undefined>;
602
- declare function getGameCenterGameProfile(): Promise<{
603
- statusCode: 'SUCCESS';
604
- nickname: string;
605
- profileImageUri: string;
606
- } | {
607
- statusCode: 'PROFILE_NOT_FOUND';
608
- } | undefined>;
609
- declare function openGameCenterLeaderboard(): Promise<void>;
610
- interface ContactsViralEvent {
611
- type: string;
612
- data: Record<string, unknown>;
642
+ analyticsLog: AnalyticsLogEntry[];
643
+ deviceModes: DeviceModes;
644
+ mockData: MockData;
645
+ panelEditable: boolean;
613
646
  }
614
- declare function contactsViral(params: {
615
- options: {
616
- moduleId: string;
617
- };
618
- onEvent: (event: ContactsViralEvent) => void;
619
- onError: (error: unknown) => void;
620
- }): () => void;
621
- //#endregion
622
- //#region src/mock/analytics/index.d.ts
623
- /**
624
- * Analytics mock
625
- */
626
- type Primitive$1 = string | number | boolean | null | undefined | symbol;
627
- type LoggerParams = {
628
- log_name?: string;
629
- } & Record<string, Primitive$1>;
630
- declare const Analytics: {
631
- screen: (params?: LoggerParams) => Promise<void> | undefined;
632
- impression: (params?: LoggerParams) => Promise<void> | undefined;
633
- click: (params?: LoggerParams) => Promise<void> | undefined;
634
- };
635
- declare function eventLog(params: {
636
- log_name: string;
637
- log_type: 'debug' | 'info' | 'warn' | 'error' | 'event' | 'screen' | 'impression' | 'click';
638
- params: Record<string, Primitive$1>;
639
- }): Promise<void>;
640
- //#endregion
641
- //#region src/mock/partner/index.d.ts
642
- /**
643
- * Partner / TDS mock
644
- */
645
- interface AddAccessoryButtonOptions {
646
- id: string;
647
- title: string;
648
- icon: {
649
- name: string;
650
- };
647
+ declare class AitStateManager {
648
+ private _state;
649
+ private _listeners;
650
+ constructor();
651
+ get state(): AitDevtoolsState;
652
+ update(partial: Partial<AitDevtoolsState>): void;
653
+ /** 중첩 객체 업데이트용 */
654
+ patch<K extends keyof AitDevtoolsState>(key: K, partial: Partial<AitDevtoolsState[K]>): void;
655
+ subscribe(listener: Listener): () => void;
656
+ /** 분석 로그 추가 */
657
+ logAnalytics(entry: Omit<AnalyticsLogEntry, 'timestamp'>): void;
658
+ /** 이벤트 트리거 (backEvent, homeEvent 등) */
659
+ trigger(event: string): void;
660
+ reset(): void;
661
+ private _notify;
651
662
  }
652
- declare const partner: {
653
- addAccessoryButton(options: AddAccessoryButtonOptions): Promise<void>;
654
- removeAccessoryButton(): Promise<void>;
655
- };
656
- //#endregion
657
- //#region src/mock/permissions.d.ts
658
- declare function getPermission(name: PermissionName): Promise<PermissionStatus>;
659
- declare function openPermissionDialog(name: PermissionName): Promise<'allowed' | 'denied'>;
660
- declare function requestPermission(permission: {
661
- name: PermissionName;
662
- access: string;
663
- }): Promise<'allowed' | 'denied'>;
663
+ declare const aitState: AitStateManager;
664
664
  //#endregion
665
665
  export { Accuracy, type AitDevtoolsState, Analytics, type AnalyticsLogEntry, type DeviceApiMode, type DeviceModes, GoogleAdMob, type HapticFeedbackType, IAP, type IapNextResult, type LocationCoords, type MockContact, type MockData, type MockIapProduct, type MockLocation, type NetworkStatus, type OperationalEnvironment, type PermissionName, type PermissionStatus, type PlatformOS, type Primitive, type SafeAreaInsets, type SafeAreaInsets$1 as SafeAreaInsetsType, Storage, TossAds, aitState, appLogin, appsInTossEvent, appsInTossSignTossCert, checkoutPayment, closeView, contactsViral, env, eventLog, fetchAlbumPhotos, fetchContacts, generateHapticFeedback, getAppsInTossGlobals, getClipboardText, getCurrentLocation, getDefaultPlaceholderImages, getDeviceId, getGameCenterGameProfile, getGroupId, getIsTossLoginIntegratedService, getLocale, getNetworkStatus, getOperationalEnvironment, getPermission, getPlatformOS, getSafeAreaInsets, getSchemeUri, getServerTime, getTossAppVersion, getTossShareLink, getUserKeyForGame, graniteEvent, grantPromotionReward, grantPromotionRewardForGame, isMinVersionSupported, loadFullScreenAd, onVisibilityChangedByTransparentServiceWeb, openCamera, openGameCenterLeaderboard, openPermissionDialog, openURL, partner, requestPermission, requestReview, saveBase64Data, setClipboardText, setDeviceOrientation, setIosSwipeGestureEnabled, setScreenAwakeMode, setSecureScreen, share, showFullScreenAd, startUpdateLocation, submitGameCenterLeaderBoardScore, tdsEvent };
666
666
  //# sourceMappingURL=index.d.ts.map