@haneullabs/kiosk 0.1.0 → 1.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/CHANGELOG.md +271 -137
- package/README.md +3 -3
- package/dist/client/kiosk-client.d.mts +126 -0
- package/dist/client/kiosk-client.d.mts.map +1 -0
- package/dist/client/kiosk-client.mjs +124 -0
- package/dist/client/kiosk-client.mjs.map +1 -0
- package/dist/client/kiosk-transaction.d.mts +236 -0
- package/dist/client/kiosk-transaction.d.mts.map +1 -0
- package/dist/client/kiosk-transaction.mjs +472 -0
- package/dist/client/kiosk-transaction.mjs.map +1 -0
- package/dist/client/tp-transaction.d.mts +139 -0
- package/dist/client/tp-transaction.d.mts.map +1 -0
- package/dist/client/tp-transaction.mjs +273 -0
- package/dist/client/tp-transaction.mjs.map +1 -0
- package/dist/constants.d.mts +42 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/constants.mjs +62 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/contracts/0x2/bag.mjs +19 -0
- package/dist/contracts/0x2/bag.mjs.map +1 -0
- package/dist/contracts/0x2/balance.mjs +16 -0
- package/dist/contracts/0x2/balance.mjs.map +1 -0
- package/dist/contracts/0x2/deps/0x0000000000000000000000000000000000000000000000000000000000000001/type_name.mjs +16 -0
- package/dist/contracts/0x2/deps/0x0000000000000000000000000000000000000000000000000000000000000001/type_name.mjs.map +1 -0
- package/dist/contracts/0x2/kiosk.mjs +244 -0
- package/dist/contracts/0x2/kiosk.mjs.map +1 -0
- package/dist/contracts/0x2/kiosk_extension.mjs +25 -0
- package/dist/contracts/0x2/kiosk_extension.mjs.map +1 -0
- package/dist/contracts/0x2/transfer_policy.mjs +99 -0
- package/dist/contracts/0x2/transfer_policy.mjs.map +1 -0
- package/dist/contracts/0x2/vec_set.mjs +18 -0
- package/dist/contracts/0x2/vec_set.mjs.map +1 -0
- package/dist/contracts/kiosk/deps/haneul/kiosk.mjs +98 -0
- package/dist/contracts/kiosk/deps/haneul/kiosk.mjs.map +1 -0
- package/dist/contracts/kiosk/floor_price_rule.mjs +70 -0
- package/dist/contracts/kiosk/floor_price_rule.mjs.map +1 -0
- package/dist/contracts/kiosk/kiosk_lock_rule.mjs +72 -0
- package/dist/contracts/kiosk/kiosk_lock_rule.mjs.map +1 -0
- package/dist/contracts/kiosk/personal_kiosk.mjs +102 -0
- package/dist/contracts/kiosk/personal_kiosk.mjs.map +1 -0
- package/dist/contracts/kiosk/personal_kiosk_rule.mjs +66 -0
- package/dist/contracts/kiosk/personal_kiosk_rule.mjs.map +1 -0
- package/dist/contracts/kiosk/royalty_rule.mjs +115 -0
- package/dist/contracts/kiosk/royalty_rule.mjs.map +1 -0
- package/dist/contracts/utils/index.mjs +118 -0
- package/dist/contracts/utils/index.mjs.map +1 -0
- package/dist/index.d.mts +9 -0
- package/dist/index.mjs +9 -0
- package/dist/query/client-utils.mjs +215 -0
- package/dist/query/client-utils.mjs.map +1 -0
- package/dist/query/kiosk.mjs +155 -0
- package/dist/query/kiosk.mjs.map +1 -0
- package/dist/query/transfer-policy.mjs +110 -0
- package/dist/query/transfer-policy.mjs.map +1 -0
- package/dist/tx/kiosk.mjs +20 -0
- package/dist/tx/kiosk.mjs.map +1 -0
- package/dist/tx/rules/resolve.mjs +114 -0
- package/dist/tx/rules/resolve.mjs.map +1 -0
- package/dist/tx/transfer-policy.mjs +38 -0
- package/dist/tx/transfer-policy.mjs.map +1 -0
- package/dist/types/index.d.mts +26 -0
- package/dist/types/index.d.mts.map +1 -0
- package/dist/types/kiosk.d.mts +175 -0
- package/dist/types/kiosk.d.mts.map +1 -0
- package/dist/types/kiosk.mjs +21 -0
- package/dist/types/kiosk.mjs.map +1 -0
- package/dist/types/transfer-policy.d.mts +56 -0
- package/dist/types/transfer-policy.d.mts.map +1 -0
- package/dist/types/transfer-policy.mjs +19 -0
- package/dist/types/transfer-policy.mjs.map +1 -0
- package/dist/utils.d.mts +39 -0
- package/dist/utils.d.mts.map +1 -0
- package/dist/utils.mjs +137 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +25 -20
- package/src/client/kiosk-client.ts +43 -5
- package/src/client/kiosk-transaction.ts +144 -65
- package/src/client/tp-transaction.ts +149 -95
- package/src/constants.ts +19 -24
- package/src/contracts/0x2/bag.ts +13 -0
- package/src/contracts/0x2/balance.ts +12 -0
- package/src/contracts/0x2/deps/0x0000000000000000000000000000000000000000000000000000000000000001/type_name.ts +12 -0
- package/src/contracts/0x2/kiosk.ts +797 -0
- package/src/contracts/0x2/kiosk_extension.ts +270 -0
- package/src/contracts/0x2/transfer_policy.ts +400 -0
- package/src/contracts/0x2/vec_set.ts +14 -0
- package/src/contracts/kiosk/deps/haneul/kiosk.ts +94 -0
- package/src/contracts/kiosk/floor_price_rule.ts +92 -0
- package/src/contracts/kiosk/kiosk_lock_rule.ts +97 -0
- package/src/contracts/kiosk/personal_kiosk.ts +295 -0
- package/src/contracts/kiosk/personal_kiosk_rule.ts +89 -0
- package/src/contracts/kiosk/royalty_rule.ts +144 -0
- package/src/contracts/kiosk/witness_rule.ts +92 -0
- package/src/contracts/utils/index.ts +234 -0
- package/src/query/client-utils.ts +302 -0
- package/src/query/kiosk.ts +130 -101
- package/src/query/transfer-policy.ts +112 -79
- package/src/tx/kiosk.ts +7 -231
- package/src/tx/rules/resolve.ts +97 -48
- package/src/tx/transfer-policy.ts +25 -86
- package/src/types/index.ts +7 -14
- package/src/types/kiosk.ts +22 -12
- package/src/types/transfer-policy.ts +4 -4
- package/src/utils.ts +79 -147
- package/dist/cjs/bcs.d.ts +0 -23
- package/dist/cjs/bcs.js +0 -50
- package/dist/cjs/bcs.js.map +0 -7
- package/dist/cjs/client/kiosk-client.d.ts +0 -76
- package/dist/cjs/client/kiosk-client.js +0 -123
- package/dist/cjs/client/kiosk-client.js.map +0 -7
- package/dist/cjs/client/kiosk-transaction.d.ts +0 -186
- package/dist/cjs/client/kiosk-transaction.js +0 -462
- package/dist/cjs/client/kiosk-transaction.js.map +0 -7
- package/dist/cjs/client/tp-transaction.d.ts +0 -114
- package/dist/cjs/client/tp-transaction.js +0 -307
- package/dist/cjs/client/tp-transaction.js.map +0 -7
- package/dist/cjs/constants.d.ts +0 -31
- package/dist/cjs/constants.js +0 -102
- package/dist/cjs/constants.js.map +0 -7
- package/dist/cjs/index.d.ts +0 -6
- package/dist/cjs/index.js +0 -24
- package/dist/cjs/index.js.map +0 -7
- package/dist/cjs/package.json +0 -5
- package/dist/cjs/query/kiosk.d.ts +0 -8
- package/dist/cjs/query/kiosk.js +0 -181
- package/dist/cjs/query/kiosk.js.map +0 -7
- package/dist/cjs/query/transfer-policy.d.ts +0 -29
- package/dist/cjs/query/transfer-policy.js +0 -92
- package/dist/cjs/query/transfer-policy.js.map +0 -7
- package/dist/cjs/tx/kiosk.d.ts +0 -71
- package/dist/cjs/tx/kiosk.js +0 -130
- package/dist/cjs/tx/kiosk.js.map +0 -7
- package/dist/cjs/tx/personal-kiosk.d.ts +0 -7
- package/dist/cjs/tx/personal-kiosk.js +0 -38
- package/dist/cjs/tx/personal-kiosk.js.map +0 -7
- package/dist/cjs/tx/rules/attach.d.ts +0 -7
- package/dist/cjs/tx/rules/attach.js +0 -62
- package/dist/cjs/tx/rules/attach.js.map +0 -7
- package/dist/cjs/tx/rules/resolve.d.ts +0 -15
- package/dist/cjs/tx/rules/resolve.js +0 -109
- package/dist/cjs/tx/rules/resolve.js.map +0 -7
- package/dist/cjs/tx/transfer-policy.d.ts +0 -29
- package/dist/cjs/tx/transfer-policy.js +0 -78
- package/dist/cjs/tx/transfer-policy.js.map +0 -7
- package/dist/cjs/types/index.d.ts +0 -27
- package/dist/cjs/types/index.js +0 -33
- package/dist/cjs/types/index.js.map +0 -7
- package/dist/cjs/types/kiosk.d.ts +0 -160
- package/dist/cjs/types/kiosk.js +0 -37
- package/dist/cjs/types/kiosk.js.map +0 -7
- package/dist/cjs/types/transfer-policy.d.ts +0 -53
- package/dist/cjs/types/transfer-policy.js +0 -35
- package/dist/cjs/types/transfer-policy.js.map +0 -7
- package/dist/cjs/utils.d.ts +0 -51
- package/dist/cjs/utils.js +0 -198
- package/dist/cjs/utils.js.map +0 -7
- package/dist/esm/bcs.d.ts +0 -23
- package/dist/esm/bcs.js +0 -35
- package/dist/esm/bcs.js.map +0 -7
- package/dist/esm/client/kiosk-client.d.ts +0 -76
- package/dist/esm/client/kiosk-client.js +0 -114
- package/dist/esm/client/kiosk-client.js.map +0 -7
- package/dist/esm/client/kiosk-transaction.d.ts +0 -186
- package/dist/esm/client/kiosk-transaction.js +0 -432
- package/dist/esm/client/kiosk-transaction.js.map +0 -7
- package/dist/esm/client/tp-transaction.d.ts +0 -114
- package/dist/esm/client/tp-transaction.js +0 -298
- package/dist/esm/client/tp-transaction.js.map +0 -7
- package/dist/esm/constants.d.ts +0 -31
- package/dist/esm/constants.js +0 -87
- package/dist/esm/constants.js.map +0 -7
- package/dist/esm/index.d.ts +0 -6
- package/dist/esm/index.js +0 -7
- package/dist/esm/index.js.map +0 -7
- package/dist/esm/package.json +0 -5
- package/dist/esm/query/kiosk.d.ts +0 -8
- package/dist/esm/query/kiosk.js +0 -169
- package/dist/esm/query/kiosk.js.map +0 -7
- package/dist/esm/query/transfer-policy.d.ts +0 -29
- package/dist/esm/query/transfer-policy.js +0 -76
- package/dist/esm/query/transfer-policy.js.map +0 -7
- package/dist/esm/tx/kiosk.d.ts +0 -71
- package/dist/esm/tx/kiosk.js +0 -110
- package/dist/esm/tx/kiosk.js.map +0 -7
- package/dist/esm/tx/personal-kiosk.d.ts +0 -7
- package/dist/esm/tx/personal-kiosk.js +0 -18
- package/dist/esm/tx/personal-kiosk.js.map +0 -7
- package/dist/esm/tx/rules/attach.d.ts +0 -7
- package/dist/esm/tx/rules/attach.js +0 -42
- package/dist/esm/tx/rules/attach.js.map +0 -7
- package/dist/esm/tx/rules/resolve.d.ts +0 -15
- package/dist/esm/tx/rules/resolve.js +0 -89
- package/dist/esm/tx/rules/resolve.js.map +0 -7
- package/dist/esm/tx/transfer-policy.d.ts +0 -29
- package/dist/esm/tx/transfer-policy.js +0 -58
- package/dist/esm/tx/transfer-policy.js.map +0 -7
- package/dist/esm/types/index.d.ts +0 -27
- package/dist/esm/types/index.js +0 -12
- package/dist/esm/types/index.js.map +0 -7
- package/dist/esm/types/kiosk.d.ts +0 -160
- package/dist/esm/types/kiosk.js +0 -17
- package/dist/esm/types/kiosk.js.map +0 -7
- package/dist/esm/types/transfer-policy.d.ts +0 -53
- package/dist/esm/types/transfer-policy.js +0 -15
- package/dist/esm/types/transfer-policy.js.map +0 -7
- package/dist/esm/utils.d.ts +0 -51
- package/dist/esm/utils.js +0 -183
- package/dist/esm/utils.js.map +0 -7
- package/dist/tsconfig.esm.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/src/bcs.ts +0 -39
- package/src/tx/personal-kiosk.ts +0 -34
- package/src/tx/rules/attach.ts +0 -73
package/src/utils.ts
CHANGED
|
@@ -1,41 +1,35 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
fromBase64,
|
|
15
|
-
normalizeStructTag,
|
|
16
|
-
normalizeHaneulAddress,
|
|
17
|
-
parseStructTag,
|
|
18
|
-
} from '@haneullabs/haneul/utils';
|
|
19
|
-
|
|
20
|
-
import { KioskType } from './bcs.js';
|
|
21
|
-
import type { Kiosk, KioskData, KioskListing, TransferPolicyCap } from './types/index.js';
|
|
22
|
-
import { TRANSFER_POLICY_CAP_TYPE } from './types/index.js';
|
|
23
|
-
import { chunk } from '@haneullabs/utils';
|
|
24
|
-
|
|
25
|
-
const DEFAULT_QUERY_LIMIT = 50;
|
|
26
|
-
|
|
27
|
-
export async function getKioskObject(client: HaneulClient, id: string): Promise<Kiosk> {
|
|
28
|
-
const queryRes = await client.getObject({ id, options: { showBcs: true } });
|
|
29
|
-
|
|
30
|
-
if (!queryRes || queryRes.error || !queryRes.data) {
|
|
31
|
-
throw new Error(`Kiosk ${id} not found; ${queryRes.error}`);
|
|
32
|
-
}
|
|
4
|
+
import { bcs } from '@haneullabs/haneul/bcs';
|
|
5
|
+
import { PaginationArguments } from '@haneullabs/haneul/jsonRpc';
|
|
6
|
+
import type { ClientWithCoreApi, HaneulClientTypes } from '@haneullabs/haneul/client';
|
|
7
|
+
import { normalizeStructTag, normalizeHaneulAddress, parseStructTag } from '@haneullabs/haneul/utils';
|
|
8
|
+
|
|
9
|
+
import { Item, Listing, Lock, Kiosk as KioskStruct } from './contracts/0x2/kiosk.js';
|
|
10
|
+
import type { Kiosk, KioskData, KioskListing, ObjectWithDisplay } from './types/index.js';
|
|
11
|
+
|
|
12
|
+
export type DynamicFieldInfo = HaneulClientTypes.ListDynamicFieldsResponse['dynamicFields'][number];
|
|
33
13
|
|
|
34
|
-
|
|
35
|
-
|
|
14
|
+
export async function getKioskObject(client: ClientWithCoreApi, id: string): Promise<Kiosk> {
|
|
15
|
+
const { object } = await client.core.getObject({
|
|
16
|
+
objectId: id,
|
|
17
|
+
include: { content: true },
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
if (!object.content) {
|
|
21
|
+
throw new Error(`Kiosk ${id} not found or has no content`);
|
|
36
22
|
}
|
|
37
23
|
|
|
38
|
-
|
|
24
|
+
const parsed = KioskStruct.parse(object.content);
|
|
25
|
+
|
|
26
|
+
return {
|
|
27
|
+
id: parsed.id,
|
|
28
|
+
profits: parsed.profits.value.toString(),
|
|
29
|
+
owner: parsed.owner,
|
|
30
|
+
itemCount: parsed.item_count,
|
|
31
|
+
allowExtensions: parsed.allow_extensions,
|
|
32
|
+
};
|
|
39
33
|
}
|
|
40
34
|
|
|
41
35
|
// helper to extract kiosk data from dynamic fields.
|
|
@@ -49,31 +43,52 @@ export function extractKioskData(
|
|
|
49
43
|
(acc: KioskData, val: DynamicFieldInfo) => {
|
|
50
44
|
const type = val.name.type;
|
|
51
45
|
|
|
52
|
-
|
|
53
|
-
|
|
46
|
+
const parsedType = parseStructTag(type);
|
|
47
|
+
const baseType = `${normalizeHaneulAddress(parsedType.address)}::${parsedType.module}::${parsedType.name}`;
|
|
48
|
+
|
|
49
|
+
if (
|
|
50
|
+
baseType ===
|
|
51
|
+
'0x0000000000000000000000000000000000000000000000000000000000000002::kiosk::Item'
|
|
52
|
+
) {
|
|
53
|
+
const parsed = Item.parse(val.name.bcs);
|
|
54
|
+
acc.itemIds.push(parsed.id);
|
|
54
55
|
acc.items.push({
|
|
55
|
-
objectId:
|
|
56
|
-
type: val.
|
|
56
|
+
objectId: parsed.id,
|
|
57
|
+
type: val.valueType,
|
|
57
58
|
isLocked: false,
|
|
58
59
|
kioskId,
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
|
|
63
|
+
if (
|
|
64
|
+
baseType ===
|
|
65
|
+
'0x0000000000000000000000000000000000000000000000000000000000000002::kiosk::Listing'
|
|
66
|
+
) {
|
|
67
|
+
const parsed = Listing.parse(val.name.bcs);
|
|
68
|
+
|
|
69
|
+
acc.listingIds.push(val.fieldId);
|
|
63
70
|
listings.push({
|
|
64
|
-
objectId:
|
|
65
|
-
listingId: val.
|
|
66
|
-
isExclusive:
|
|
71
|
+
objectId: parsed.id,
|
|
72
|
+
listingId: val.fieldId,
|
|
73
|
+
isExclusive: parsed.is_exclusive,
|
|
67
74
|
});
|
|
68
75
|
}
|
|
69
|
-
|
|
70
|
-
|
|
76
|
+
|
|
77
|
+
if (
|
|
78
|
+
baseType ===
|
|
79
|
+
'0x0000000000000000000000000000000000000000000000000000000000000002::kiosk::Lock'
|
|
80
|
+
) {
|
|
81
|
+
lockedItemIds?.push(Lock.parse(val.name.bcs).id);
|
|
71
82
|
}
|
|
72
83
|
|
|
73
|
-
|
|
84
|
+
// Check for ExtensionKey type
|
|
85
|
+
if (
|
|
86
|
+
baseType ===
|
|
87
|
+
'0x0000000000000000000000000000000000000000000000000000000000000002::kiosk_extension::ExtensionKey'
|
|
88
|
+
) {
|
|
74
89
|
acc.extensions.push({
|
|
75
|
-
objectId: val.
|
|
76
|
-
type: normalizeStructTag(
|
|
90
|
+
objectId: val.fieldId,
|
|
91
|
+
type: normalizeStructTag(parsedType.typeParams[0]),
|
|
77
92
|
});
|
|
78
93
|
}
|
|
79
94
|
|
|
@@ -89,10 +104,8 @@ export function extractKioskData(
|
|
|
89
104
|
export function attachListingsAndPrices(
|
|
90
105
|
kioskData: KioskData,
|
|
91
106
|
listings: KioskListing[],
|
|
92
|
-
listingObjects:
|
|
107
|
+
listingObjects: HaneulClientTypes.Object[],
|
|
93
108
|
) {
|
|
94
|
-
// map item listings as {item_id: KioskListing}
|
|
95
|
-
// for easier mapping on the nex
|
|
96
109
|
const itemListings = listings.reduce<Record<string, KioskListing>>(
|
|
97
110
|
(acc: Record<string, KioskListing>, item, idx) => {
|
|
98
111
|
acc[item.objectId] = { ...item };
|
|
@@ -101,12 +114,13 @@ export function attachListingsAndPrices(
|
|
|
101
114
|
// that's the case when we don't have the `listingPrices` included.
|
|
102
115
|
if (listingObjects.length === 0) return acc;
|
|
103
116
|
|
|
104
|
-
const
|
|
105
|
-
const data = content?.dataType === 'moveObject' ? content?.fields : null;
|
|
117
|
+
const obj = listingObjects[idx];
|
|
106
118
|
|
|
107
|
-
|
|
119
|
+
// Parse BCS content to extract the price (u64 value)
|
|
120
|
+
if (obj.content) {
|
|
121
|
+
acc[item.objectId].price = bcs.u64().parse(obj.content).toString();
|
|
122
|
+
}
|
|
108
123
|
|
|
109
|
-
acc[item.objectId].price = (data as { value: string }).value;
|
|
110
124
|
return acc;
|
|
111
125
|
},
|
|
112
126
|
{},
|
|
@@ -118,11 +132,12 @@ export function attachListingsAndPrices(
|
|
|
118
132
|
}
|
|
119
133
|
|
|
120
134
|
/**
|
|
121
|
-
* A helper that attaches
|
|
135
|
+
* A helper that attaches object data to kiosk items.
|
|
136
|
+
* Works with core API objects that contain BCS content.
|
|
122
137
|
*/
|
|
123
|
-
export function attachObjects(kioskData: KioskData, objects:
|
|
124
|
-
const mapping = objects.reduce<Record<string,
|
|
125
|
-
(acc: Record<string,
|
|
138
|
+
export function attachObjects(kioskData: KioskData, objects: ObjectWithDisplay[]) {
|
|
139
|
+
const mapping = objects.reduce<Record<string, ObjectWithDisplay>>(
|
|
140
|
+
(acc: Record<string, ObjectWithDisplay>, obj) => {
|
|
126
141
|
acc[obj.objectId] = obj;
|
|
127
142
|
return acc;
|
|
128
143
|
},
|
|
@@ -154,90 +169,30 @@ export function attachLockedItems(kioskData: KioskData, lockedItemIds: string[])
|
|
|
154
169
|
}
|
|
155
170
|
|
|
156
171
|
/**
|
|
157
|
-
* A helper to fetch all
|
|
172
|
+
* A helper to fetch all dynamic field pages.
|
|
158
173
|
* We need that to fetch the kiosk DFs consistently, until we have
|
|
159
174
|
* RPC calls that allow filtering of Type / batch fetching of spec
|
|
160
175
|
*/
|
|
161
176
|
export async function getAllDynamicFields(
|
|
162
|
-
client:
|
|
177
|
+
client: ClientWithCoreApi,
|
|
163
178
|
parentId: string,
|
|
164
179
|
pagination: PaginationArguments<string>,
|
|
165
|
-
) {
|
|
180
|
+
): Promise<DynamicFieldInfo[]> {
|
|
166
181
|
let hasNextPage = true;
|
|
167
|
-
let cursor =
|
|
182
|
+
let cursor: string | null = null;
|
|
168
183
|
const data: DynamicFieldInfo[] = [];
|
|
169
184
|
|
|
170
185
|
while (hasNextPage) {
|
|
171
|
-
const result = await client.
|
|
186
|
+
const result = await client.core.listDynamicFields({
|
|
172
187
|
parentId,
|
|
173
188
|
limit: pagination.limit || undefined,
|
|
174
189
|
cursor,
|
|
175
190
|
});
|
|
176
|
-
data.push(...result.data);
|
|
177
|
-
hasNextPage = result.hasNextPage;
|
|
178
|
-
cursor = result.nextCursor;
|
|
179
|
-
}
|
|
180
191
|
|
|
181
|
-
|
|
182
|
-
}
|
|
192
|
+
data.push(...result.dynamicFields);
|
|
183
193
|
|
|
184
|
-
/**
|
|
185
|
-
* A helper to fetch all objects that works with pagination.
|
|
186
|
-
* It will fetch all objects in the array, and limit it to 50/request.
|
|
187
|
-
* Requests are sent using `Promise.all`.
|
|
188
|
-
*/
|
|
189
|
-
export async function getAllObjects(
|
|
190
|
-
client: HaneulClient,
|
|
191
|
-
ids: string[],
|
|
192
|
-
options: HaneulObjectDataOptions,
|
|
193
|
-
limit: number = DEFAULT_QUERY_LIMIT,
|
|
194
|
-
) {
|
|
195
|
-
const chunks = chunk(ids, limit);
|
|
196
|
-
|
|
197
|
-
const results = await Promise.all(
|
|
198
|
-
chunks.map((chunk) => {
|
|
199
|
-
return client.multiGetObjects({
|
|
200
|
-
ids: chunk,
|
|
201
|
-
options,
|
|
202
|
-
});
|
|
203
|
-
}),
|
|
204
|
-
);
|
|
205
|
-
|
|
206
|
-
return results.flat();
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* A helper to return all owned objects, with an optional filter.
|
|
211
|
-
* It parses all the pages and returns the data.
|
|
212
|
-
*/
|
|
213
|
-
export async function getAllOwnedObjects({
|
|
214
|
-
client,
|
|
215
|
-
owner,
|
|
216
|
-
filter,
|
|
217
|
-
limit = DEFAULT_QUERY_LIMIT,
|
|
218
|
-
options = { showType: true, showContent: true },
|
|
219
|
-
}: {
|
|
220
|
-
client: HaneulClient;
|
|
221
|
-
owner: string;
|
|
222
|
-
filter?: HaneulObjectDataFilter;
|
|
223
|
-
options?: HaneulObjectDataOptions;
|
|
224
|
-
limit?: number;
|
|
225
|
-
}) {
|
|
226
|
-
let hasNextPage = true;
|
|
227
|
-
let cursor = undefined;
|
|
228
|
-
const data: HaneulObjectResponse[] = [];
|
|
229
|
-
|
|
230
|
-
while (hasNextPage) {
|
|
231
|
-
const result = await client.getOwnedObjects({
|
|
232
|
-
owner,
|
|
233
|
-
filter,
|
|
234
|
-
limit,
|
|
235
|
-
cursor,
|
|
236
|
-
options,
|
|
237
|
-
});
|
|
238
|
-
data.push(...result.data);
|
|
239
194
|
hasNextPage = result.hasNextPage;
|
|
240
|
-
cursor = result.
|
|
195
|
+
cursor = result.cursor;
|
|
241
196
|
}
|
|
242
197
|
|
|
243
198
|
return data;
|
|
@@ -255,29 +210,6 @@ export function percentageToBasisPoints(percentage: number) {
|
|
|
255
210
|
return Math.ceil(percentage * 100);
|
|
256
211
|
}
|
|
257
212
|
|
|
258
|
-
/**
|
|
259
|
-
* A helper to parse a transfer policy Cap into a usable object.
|
|
260
|
-
*/
|
|
261
|
-
export function parseTransferPolicyCapObject(
|
|
262
|
-
item: HaneulObjectResponse,
|
|
263
|
-
): TransferPolicyCap | undefined {
|
|
264
|
-
const type = (item?.data?.content as { type: string })?.type;
|
|
265
|
-
|
|
266
|
-
//@ts-ignore-next-line
|
|
267
|
-
const policy = item?.data?.content?.fields?.policy_id as string;
|
|
268
|
-
|
|
269
|
-
if (!type.includes(TRANSFER_POLICY_CAP_TYPE)) return undefined;
|
|
270
|
-
|
|
271
|
-
// Transform 0x2::transfer_policy::TransferPolicyCap<itemType> -> itemType
|
|
272
|
-
const objectType = type.replace(TRANSFER_POLICY_CAP_TYPE + '<', '').slice(0, -1);
|
|
273
|
-
|
|
274
|
-
return {
|
|
275
|
-
policyId: policy,
|
|
276
|
-
policyCapId: item.data?.objectId!,
|
|
277
|
-
type: objectType,
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
|
|
281
213
|
// Normalizes the packageId part of a rule's type.
|
|
282
214
|
export function getNormalizedRuleType(rule: string) {
|
|
283
215
|
const normalizedRuleAddress = rule.split('::');
|
package/dist/cjs/bcs.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export declare const KioskType: import("@haneullabs/haneul/bcs").BcsStruct<{
|
|
2
|
-
id: import("@haneullabs/haneul/bcs").BcsType<string, string | Uint8Array<ArrayBufferLike>, "bytes[32]">;
|
|
3
|
-
profits: import("@haneullabs/haneul/bcs").BcsType<string, string | number | bigint, "u64">;
|
|
4
|
-
owner: import("@haneullabs/haneul/bcs").BcsType<string, string | Uint8Array<ArrayBufferLike>, "bytes[32]">;
|
|
5
|
-
itemCount: import("@haneullabs/haneul/bcs").BcsType<number, number, "u32">;
|
|
6
|
-
allowExtensions: import("@haneullabs/haneul/bcs").BcsType<boolean, boolean, "bool">;
|
|
7
|
-
}, string>;
|
|
8
|
-
export declare const KioskPurchaseCap: import("@haneullabs/haneul/bcs").BcsStruct<{
|
|
9
|
-
id: import("@haneullabs/haneul/bcs").BcsType<string, string | Uint8Array<ArrayBufferLike>, "bytes[32]">;
|
|
10
|
-
kioskId: import("@haneullabs/haneul/bcs").BcsType<string, string | Uint8Array<ArrayBufferLike>, "bytes[32]">;
|
|
11
|
-
itemId: import("@haneullabs/haneul/bcs").BcsType<string, string | Uint8Array<ArrayBufferLike>, "bytes[32]">;
|
|
12
|
-
minPrice: import("@haneullabs/haneul/bcs").BcsType<string, string | number | bigint, "u64">;
|
|
13
|
-
}, string>;
|
|
14
|
-
export declare const TransferPolicyCreatedEvent: import("@haneullabs/haneul/bcs").BcsStruct<{
|
|
15
|
-
id: import("@haneullabs/haneul/bcs").BcsType<string, string | Uint8Array<ArrayBufferLike>, "bytes[32]">;
|
|
16
|
-
}, string>;
|
|
17
|
-
export declare const TransferPolicyType: import("@haneullabs/haneul/bcs").BcsStruct<{
|
|
18
|
-
id: import("@haneullabs/haneul/bcs").BcsType<string, string | Uint8Array<ArrayBufferLike>, "bytes[32]">;
|
|
19
|
-
balance: import("@haneullabs/haneul/bcs").BcsType<string, string | number | bigint, "u64">;
|
|
20
|
-
rules: import("@haneullabs/haneul/bcs").BcsType<string[], Iterable<string> & {
|
|
21
|
-
length: number;
|
|
22
|
-
}, string>;
|
|
23
|
-
}, string>;
|
package/dist/cjs/bcs.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var bcs_exports = {};
|
|
20
|
-
__export(bcs_exports, {
|
|
21
|
-
KioskPurchaseCap: () => KioskPurchaseCap,
|
|
22
|
-
KioskType: () => KioskType,
|
|
23
|
-
TransferPolicyCreatedEvent: () => TransferPolicyCreatedEvent,
|
|
24
|
-
TransferPolicyType: () => TransferPolicyType
|
|
25
|
-
});
|
|
26
|
-
module.exports = __toCommonJS(bcs_exports);
|
|
27
|
-
var import_bcs = require("@haneullabs/haneul/bcs");
|
|
28
|
-
var import_types = require("./types/index.js");
|
|
29
|
-
const KioskType = import_bcs.bcs.struct(import_types.KIOSK_TYPE, {
|
|
30
|
-
id: import_bcs.bcs.Address,
|
|
31
|
-
profits: import_bcs.bcs.u64(),
|
|
32
|
-
owner: import_bcs.bcs.Address,
|
|
33
|
-
itemCount: import_bcs.bcs.u32(),
|
|
34
|
-
allowExtensions: import_bcs.bcs.bool()
|
|
35
|
-
});
|
|
36
|
-
const KioskPurchaseCap = import_bcs.bcs.struct(import_types.KIOSK_PURCHASE_CAP, {
|
|
37
|
-
id: import_bcs.bcs.Address,
|
|
38
|
-
kioskId: import_bcs.bcs.Address,
|
|
39
|
-
itemId: import_bcs.bcs.Address,
|
|
40
|
-
minPrice: import_bcs.bcs.u64()
|
|
41
|
-
});
|
|
42
|
-
const TransferPolicyCreatedEvent = import_bcs.bcs.struct(import_types.TRANSFER_POLICY_CREATED_EVENT, {
|
|
43
|
-
id: import_bcs.bcs.Address
|
|
44
|
-
});
|
|
45
|
-
const TransferPolicyType = import_bcs.bcs.struct(import_types.TRANSFER_POLICY_TYPE, {
|
|
46
|
-
id: import_bcs.bcs.Address,
|
|
47
|
-
balance: import_bcs.bcs.u64(),
|
|
48
|
-
rules: import_bcs.bcs.vector(import_bcs.bcs.string())
|
|
49
|
-
});
|
|
50
|
-
//# sourceMappingURL=bcs.js.map
|
package/dist/cjs/bcs.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/bcs.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\n\nimport {\n\tKIOSK_PURCHASE_CAP,\n\tKIOSK_TYPE,\n\tTRANSFER_POLICY_CREATED_EVENT,\n\tTRANSFER_POLICY_TYPE,\n} from './types/index.js';\n\n// Register the `Kiosk` struct for faster queries.\nexport const KioskType = bcs.struct(KIOSK_TYPE, {\n\tid: bcs.Address,\n\tprofits: bcs.u64(),\n\towner: bcs.Address,\n\titemCount: bcs.u32(),\n\tallowExtensions: bcs.bool(),\n});\n\n// Register the `PurchaseCap` for faster queries.\nexport const KioskPurchaseCap = bcs.struct(KIOSK_PURCHASE_CAP, {\n\tid: bcs.Address,\n\tkioskId: bcs.Address,\n\titemId: bcs.Address,\n\tminPrice: bcs.u64(),\n});\n\n// Register the `TransferPolicyCreated` event data.\nexport const TransferPolicyCreatedEvent = bcs.struct(TRANSFER_POLICY_CREATED_EVENT, {\n\tid: bcs.Address,\n});\n\nexport const TransferPolicyType = bcs.struct(TRANSFER_POLICY_TYPE, {\n\tid: bcs.Address,\n\tbalance: bcs.u64(),\n\trules: bcs.vector(bcs.string()),\n});\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAoB;AAEpB,mBAKO;AAGA,MAAM,YAAY,eAAI,OAAO,yBAAY;AAAA,EAC/C,IAAI,eAAI;AAAA,EACR,SAAS,eAAI,IAAI;AAAA,EACjB,OAAO,eAAI;AAAA,EACX,WAAW,eAAI,IAAI;AAAA,EACnB,iBAAiB,eAAI,KAAK;AAC3B,CAAC;AAGM,MAAM,mBAAmB,eAAI,OAAO,iCAAoB;AAAA,EAC9D,IAAI,eAAI;AAAA,EACR,SAAS,eAAI;AAAA,EACb,QAAQ,eAAI;AAAA,EACZ,UAAU,eAAI,IAAI;AACnB,CAAC;AAGM,MAAM,6BAA6B,eAAI,OAAO,4CAA+B;AAAA,EACnF,IAAI,eAAI;AACT,CAAC;AAEM,MAAM,qBAAqB,eAAI,OAAO,mCAAsB;AAAA,EAClE,IAAI,eAAI;AAAA,EACR,SAAS,eAAI,IAAI;AAAA,EACjB,OAAO,eAAI,OAAO,eAAI,OAAO,CAAC;AAC/B,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import type { PaginationArguments, HaneulClient } from '@haneullabs/haneul/client';
|
|
2
|
-
import type { BaseRulePackageIds, TransferPolicyRule } from '../constants.js';
|
|
3
|
-
import { Network } from '../types/index.js';
|
|
4
|
-
import type { FetchKioskOptions, KioskClientOptions, KioskData, OwnedKiosks } from '../types/index.js';
|
|
5
|
-
/**
|
|
6
|
-
* A Client that allows you to interact with kiosk.
|
|
7
|
-
* Offers utilities to query kiosk, craft transactions to edit your own kiosk,
|
|
8
|
-
* purchase, manage transfer policies, create new kiosks etc.
|
|
9
|
-
* If you pass packageIds, all functionality will be managed using these packages.
|
|
10
|
-
*/
|
|
11
|
-
export declare class KioskClient {
|
|
12
|
-
client: HaneulClient;
|
|
13
|
-
network: Network;
|
|
14
|
-
rules: TransferPolicyRule[];
|
|
15
|
-
packageIds?: BaseRulePackageIds;
|
|
16
|
-
constructor(options: KioskClientOptions);
|
|
17
|
-
/**
|
|
18
|
-
* Get an addresses's owned kiosks.
|
|
19
|
-
* @param address The address for which we want to retrieve the kiosks.
|
|
20
|
-
* @param pagination Optional pagination arguments.
|
|
21
|
-
* @returns An Object containing all the `kioskOwnerCap` objects as well as the kioskIds.
|
|
22
|
-
*/
|
|
23
|
-
getOwnedKiosks({ address, pagination, }: {
|
|
24
|
-
address: string;
|
|
25
|
-
pagination?: PaginationArguments<string>;
|
|
26
|
-
}): Promise<OwnedKiosks>;
|
|
27
|
-
/**
|
|
28
|
-
* Fetches the kiosk contents.
|
|
29
|
-
* @param id The ID of the kiosk to fetch.
|
|
30
|
-
* @param options Optional to control the fetch behavior.
|
|
31
|
-
* @returns
|
|
32
|
-
*/
|
|
33
|
-
getKiosk({ id, options }: {
|
|
34
|
-
id: string;
|
|
35
|
-
options?: FetchKioskOptions;
|
|
36
|
-
}): Promise<KioskData>;
|
|
37
|
-
/**
|
|
38
|
-
* Fetch the extension data (if any) for a kiosk, by type
|
|
39
|
-
* @param kioskId The ID of the kiosk to lookup
|
|
40
|
-
* @param extensionType The Type of the extension (can be used from by using the type returned by `getKiosk()`)
|
|
41
|
-
*/
|
|
42
|
-
getKioskExtension({ kioskId, type }: {
|
|
43
|
-
kioskId: string;
|
|
44
|
-
type: string;
|
|
45
|
-
}): Promise<import("../types/kiosk.js").KioskExtension | null>;
|
|
46
|
-
/**
|
|
47
|
-
* Query the Transfer Policy(ies) for type `T`.
|
|
48
|
-
* @param type The Type we're querying for (E.g `0xMyAddress::hero::Hero`)
|
|
49
|
-
*/
|
|
50
|
-
getTransferPolicies({ type }: {
|
|
51
|
-
type: string;
|
|
52
|
-
}): Promise<import("../types/transfer-policy.js").TransferPolicy[]>;
|
|
53
|
-
/**
|
|
54
|
-
* Query all the owned transfer policies for an address.
|
|
55
|
-
* Returns `TransferPolicyCap` which uncludes `policyId, policyCapId, type`.
|
|
56
|
-
* @param address The address we're searching the owned transfer policies for.
|
|
57
|
-
*/
|
|
58
|
-
getOwnedTransferPolicies({ address }: {
|
|
59
|
-
address: string;
|
|
60
|
-
}): Promise<import("../types/transfer-policy.js").TransferPolicyCap[] | undefined>;
|
|
61
|
-
/**
|
|
62
|
-
* Query the Transfer Policy Cap for type `T`, owned by `address`
|
|
63
|
-
* @param type The Type `T` for the object
|
|
64
|
-
* @param address The address that owns the cap.
|
|
65
|
-
*/
|
|
66
|
-
getOwnedTransferPoliciesByType({ type, address }: {
|
|
67
|
-
type: string;
|
|
68
|
-
address: string;
|
|
69
|
-
}): Promise<import("../types/transfer-policy.js").TransferPolicyCap[]>;
|
|
70
|
-
addRuleResolver(rule: TransferPolicyRule): void;
|
|
71
|
-
/**
|
|
72
|
-
* A convenient helper to get the packageIds for our supported ruleset,
|
|
73
|
-
* based on `kioskClient` configuration.
|
|
74
|
-
*/
|
|
75
|
-
getRulePackageId(rule: 'kioskLockRulePackageId' | 'royaltyRulePackageId' | 'personalKioskRulePackageId' | 'floorPriceRulePackageId'): string;
|
|
76
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var kiosk_client_exports = {};
|
|
20
|
-
__export(kiosk_client_exports, {
|
|
21
|
-
KioskClient: () => KioskClient
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(kiosk_client_exports);
|
|
24
|
-
var import_constants = require("../constants.js");
|
|
25
|
-
var import_kiosk = require("../query/kiosk.js");
|
|
26
|
-
var import_transfer_policy = require("../query/transfer-policy.js");
|
|
27
|
-
var import_types = require("../types/index.js");
|
|
28
|
-
class KioskClient {
|
|
29
|
-
constructor(options) {
|
|
30
|
-
this.client = options.client;
|
|
31
|
-
this.network = options.network;
|
|
32
|
-
this.rules = import_constants.rules;
|
|
33
|
-
this.packageIds = options.packageIds;
|
|
34
|
-
if (options.packageIds) this.rules.push(...(0, import_constants.getBaseRules)(options.packageIds));
|
|
35
|
-
}
|
|
36
|
-
/// Querying
|
|
37
|
-
/**
|
|
38
|
-
* Get an addresses's owned kiosks.
|
|
39
|
-
* @param address The address for which we want to retrieve the kiosks.
|
|
40
|
-
* @param pagination Optional pagination arguments.
|
|
41
|
-
* @returns An Object containing all the `kioskOwnerCap` objects as well as the kioskIds.
|
|
42
|
-
*/
|
|
43
|
-
async getOwnedKiosks({
|
|
44
|
-
address,
|
|
45
|
-
pagination
|
|
46
|
-
}) {
|
|
47
|
-
const personalPackageId = this.packageIds?.personalKioskRulePackageId || import_constants.PERSONAL_KIOSK_RULE_ADDRESS[this.network];
|
|
48
|
-
return (0, import_kiosk.getOwnedKiosks)(this.client, address, {
|
|
49
|
-
pagination,
|
|
50
|
-
personalKioskType: personalPackageId ? `${personalPackageId}::personal_kiosk::PersonalKioskCap` : ""
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Fetches the kiosk contents.
|
|
55
|
-
* @param id The ID of the kiosk to fetch.
|
|
56
|
-
* @param options Optional to control the fetch behavior.
|
|
57
|
-
* @returns
|
|
58
|
-
*/
|
|
59
|
-
async getKiosk({ id, options }) {
|
|
60
|
-
return (await (0, import_kiosk.fetchKiosk)(this.client, id, {}, options || {})).data;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Fetch the extension data (if any) for a kiosk, by type
|
|
64
|
-
* @param kioskId The ID of the kiosk to lookup
|
|
65
|
-
* @param extensionType The Type of the extension (can be used from by using the type returned by `getKiosk()`)
|
|
66
|
-
*/
|
|
67
|
-
async getKioskExtension({ kioskId, type }) {
|
|
68
|
-
return (0, import_kiosk.fetchKioskExtension)(this.client, kioskId, type);
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Query the Transfer Policy(ies) for type `T`.
|
|
72
|
-
* @param type The Type we're querying for (E.g `0xMyAddress::hero::Hero`)
|
|
73
|
-
*/
|
|
74
|
-
async getTransferPolicies({ type }) {
|
|
75
|
-
return (0, import_transfer_policy.queryTransferPolicy)(this.client, type);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Query all the owned transfer policies for an address.
|
|
79
|
-
* Returns `TransferPolicyCap` which uncludes `policyId, policyCapId, type`.
|
|
80
|
-
* @param address The address we're searching the owned transfer policies for.
|
|
81
|
-
*/
|
|
82
|
-
async getOwnedTransferPolicies({ address }) {
|
|
83
|
-
return (0, import_transfer_policy.queryOwnedTransferPolicies)(this.client, address);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Query the Transfer Policy Cap for type `T`, owned by `address`
|
|
87
|
-
* @param type The Type `T` for the object
|
|
88
|
-
* @param address The address that owns the cap.
|
|
89
|
-
*/
|
|
90
|
-
async getOwnedTransferPoliciesByType({ type, address }) {
|
|
91
|
-
return (0, import_transfer_policy.queryTransferPolicyCapsByType)(this.client, address, type);
|
|
92
|
-
}
|
|
93
|
-
// Someone would just have to create a `kiosk-client.ts` file in their project, initialize a KioskClient
|
|
94
|
-
// and call the `addRuleResolver` function. Each rule has a `resolve` function.
|
|
95
|
-
// The resolve function is automatically called on `purchaseAndResolve` function call.
|
|
96
|
-
addRuleResolver(rule) {
|
|
97
|
-
if (this.rules.find((x) => x.rule === rule.rule))
|
|
98
|
-
throw new Error(`Rule ${rule.rule} resolver already exists.`);
|
|
99
|
-
this.rules.push(rule);
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* A convenient helper to get the packageIds for our supported ruleset,
|
|
103
|
-
* based on `kioskClient` configuration.
|
|
104
|
-
*/
|
|
105
|
-
getRulePackageId(rule) {
|
|
106
|
-
const rules2 = this.packageIds || {};
|
|
107
|
-
const network = this.network;
|
|
108
|
-
if (!rules2[rule] && network !== import_types.Network.MAINNET && network !== import_types.Network.TESTNET) {
|
|
109
|
-
throw new Error(`Missing packageId for rule ${rule}`);
|
|
110
|
-
}
|
|
111
|
-
switch (rule) {
|
|
112
|
-
case "kioskLockRulePackageId":
|
|
113
|
-
return rules2[rule] || import_constants.KIOSK_LOCK_RULE_ADDRESS[network];
|
|
114
|
-
case "royaltyRulePackageId":
|
|
115
|
-
return rules2[rule] || import_constants.ROYALTY_RULE_ADDRESS[network];
|
|
116
|
-
case "personalKioskRulePackageId":
|
|
117
|
-
return rules2[rule] || import_constants.PERSONAL_KIOSK_RULE_ADDRESS[network];
|
|
118
|
-
case "floorPriceRulePackageId":
|
|
119
|
-
return rules2[rule] || import_constants.FLOOR_PRICE_RULE_ADDRESS[network];
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=kiosk-client.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/client/kiosk-client.ts"],
|
|
4
|
-
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PaginationArguments, HaneulClient } from '@haneullabs/haneul/client';\n\nimport {\n\tFLOOR_PRICE_RULE_ADDRESS,\n\tgetBaseRules,\n\tKIOSK_LOCK_RULE_ADDRESS,\n\tPERSONAL_KIOSK_RULE_ADDRESS,\n\tROYALTY_RULE_ADDRESS,\n\trules,\n} from '../constants.js';\nimport type { BaseRulePackageIds, TransferPolicyRule } from '../constants.js';\nimport { fetchKiosk, fetchKioskExtension, getOwnedKiosks } from '../query/kiosk.js';\nimport {\n\tqueryOwnedTransferPolicies,\n\tqueryTransferPolicy,\n\tqueryTransferPolicyCapsByType,\n} from '../query/transfer-policy.js';\nimport { Network } from '../types/index.js';\nimport type {\n\tFetchKioskOptions,\n\tKioskClientOptions,\n\tKioskData,\n\tOwnedKiosks,\n} from '../types/index.js';\n\n/**\n * A Client that allows you to interact with kiosk.\n * Offers utilities to query kiosk, craft transactions to edit your own kiosk,\n * purchase, manage transfer policies, create new kiosks etc.\n * If you pass packageIds, all functionality will be managed using these packages.\n */\nexport class KioskClient {\n\tclient: HaneulClient;\n\tnetwork: Network;\n\trules: TransferPolicyRule[];\n\tpackageIds?: BaseRulePackageIds;\n\n\tconstructor(options: KioskClientOptions) {\n\t\tthis.client = options.client;\n\t\tthis.network = options.network;\n\t\tthis.rules = rules; // add all the default rules.\n\t\tthis.packageIds = options.packageIds;\n\n\t\t// Add the custom Package Ids too on the rule list.\n\t\t// Only adds the rules that are passed in the packageId object.\n\t\tif (options.packageIds) this.rules.push(...getBaseRules(options.packageIds));\n\t}\n\n\t/// Querying\n\n\t/**\n\t * Get an addresses's owned kiosks.\n\t * @param address The address for which we want to retrieve the kiosks.\n\t * @param pagination Optional pagination arguments.\n\t * @returns An Object containing all the `kioskOwnerCap` objects as well as the kioskIds.\n\t */\n\tasync getOwnedKiosks({\n\t\taddress,\n\t\tpagination,\n\t}: {\n\t\taddress: string;\n\t\tpagination?: PaginationArguments<string>;\n\t}): Promise<OwnedKiosks> {\n\t\tconst personalPackageId =\n\t\t\tthis.packageIds?.personalKioskRulePackageId || PERSONAL_KIOSK_RULE_ADDRESS[this.network];\n\n\t\treturn getOwnedKiosks(this.client, address, {\n\t\t\tpagination,\n\t\t\tpersonalKioskType: personalPackageId\n\t\t\t\t? `${personalPackageId}::personal_kiosk::PersonalKioskCap`\n\t\t\t\t: '',\n\t\t});\n\t}\n\n\t/**\n\t * Fetches the kiosk contents.\n\t * @param id The ID of the kiosk to fetch.\n\t * @param options Optional to control the fetch behavior.\n\t * @returns\n\t */\n\tasync getKiosk({ id, options }: { id: string; options?: FetchKioskOptions }): Promise<KioskData> {\n\t\treturn (await fetchKiosk(this.client, id, {}, options || {})).data;\n\t}\n\n\t/**\n\t * Fetch the extension data (if any) for a kiosk, by type\n\t * @param kioskId The ID of the kiosk to lookup\n\t * @param extensionType The Type of the extension (can be used from by using the type returned by `getKiosk()`)\n\t */\n\tasync getKioskExtension({ kioskId, type }: { kioskId: string; type: string }) {\n\t\treturn fetchKioskExtension(this.client, kioskId, type);\n\t}\n\n\t/**\n\t * Query the Transfer Policy(ies) for type `T`.\n\t * @param type The Type we're querying for (E.g `0xMyAddress::hero::Hero`)\n\t */\n\tasync getTransferPolicies({ type }: { type: string }) {\n\t\treturn queryTransferPolicy(this.client, type);\n\t}\n\n\t/**\n\t * Query all the owned transfer policies for an address.\n\t * Returns `TransferPolicyCap` which uncludes `policyId, policyCapId, type`.\n\t * @param address The address we're searching the owned transfer policies for.\n\t */\n\tasync getOwnedTransferPolicies({ address }: { address: string }) {\n\t\treturn queryOwnedTransferPolicies(this.client, address);\n\t}\n\n\t/**\n\t * Query the Transfer Policy Cap for type `T`, owned by `address`\n\t * @param type The Type `T` for the object\n\t * @param address The address that owns the cap.\n\t */\n\tasync getOwnedTransferPoliciesByType({ type, address }: { type: string; address: string }) {\n\t\treturn queryTransferPolicyCapsByType(this.client, address, type);\n\t}\n\n\t// Someone would just have to create a `kiosk-client.ts` file in their project, initialize a KioskClient\n\t// and call the `addRuleResolver` function. Each rule has a `resolve` function.\n\t// The resolve function is automatically called on `purchaseAndResolve` function call.\n\taddRuleResolver(rule: TransferPolicyRule) {\n\t\tif (this.rules.find((x) => x.rule === rule.rule))\n\t\t\tthrow new Error(`Rule ${rule.rule} resolver already exists.`);\n\t\tthis.rules.push(rule);\n\t}\n\n\t/**\n\t * A convenient helper to get the packageIds for our supported ruleset,\n\t * based on `kioskClient` configuration.\n\t */\n\tgetRulePackageId(\n\t\trule:\n\t\t\t| 'kioskLockRulePackageId'\n\t\t\t| 'royaltyRulePackageId'\n\t\t\t| 'personalKioskRulePackageId'\n\t\t\t| 'floorPriceRulePackageId',\n\t) {\n\t\tconst rules = this.packageIds || {};\n\t\tconst network = this.network;\n\n\t\t/// Check existence of rule based on network and throw an error if it's not found.\n\t\t/// We always have a fallback for testnet or mainnet.\n\t\tif (!rules[rule] && network !== Network.MAINNET && network !== Network.TESTNET) {\n\t\t\tthrow new Error(`Missing packageId for rule ${rule}`);\n\t\t}\n\n\t\tswitch (rule) {\n\t\t\tcase 'kioskLockRulePackageId':\n\t\t\t\treturn rules[rule] || KIOSK_LOCK_RULE_ADDRESS[network];\n\t\t\tcase 'royaltyRulePackageId':\n\t\t\t\treturn rules[rule] || ROYALTY_RULE_ADDRESS[network];\n\t\t\tcase 'personalKioskRulePackageId':\n\t\t\t\treturn rules[rule] || PERSONAL_KIOSK_RULE_ADDRESS[network];\n\t\t\tcase 'floorPriceRulePackageId':\n\t\t\t\treturn rules[rule] || FLOOR_PRICE_RULE_ADDRESS[network];\n\t\t}\n\t}\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,uBAOO;AAEP,mBAAgE;AAChE,6BAIO;AACP,mBAAwB;AAcjB,MAAM,YAAY;AAAA,EAMxB,YAAY,SAA6B;AACxC,SAAK,SAAS,QAAQ;AACtB,SAAK,UAAU,QAAQ;AACvB,SAAK,QAAQ;AACb,SAAK,aAAa,QAAQ;AAI1B,QAAI,QAAQ,WAAY,MAAK,MAAM,KAAK,OAAG,+BAAa,QAAQ,UAAU,CAAC;AAAA,EAC5E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,eAAe;AAAA,IACpB;AAAA,IACA;AAAA,EACD,GAGyB;AACxB,UAAM,oBACL,KAAK,YAAY,8BAA8B,6CAA4B,KAAK,OAAO;AAExF,eAAO,6BAAe,KAAK,QAAQ,SAAS;AAAA,MAC3C;AAAA,MACA,mBAAmB,oBAChB,GAAG,iBAAiB,uCACpB;AAAA,IACJ,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,SAAS,EAAE,IAAI,QAAQ,GAAoE;AAChG,YAAQ,UAAM,yBAAW,KAAK,QAAQ,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,kBAAkB,EAAE,SAAS,KAAK,GAAsC;AAC7E,eAAO,kCAAoB,KAAK,QAAQ,SAAS,IAAI;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAoB,EAAE,KAAK,GAAqB;AACrD,eAAO,4CAAoB,KAAK,QAAQ,IAAI;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,yBAAyB,EAAE,QAAQ,GAAwB;AAChE,eAAO,mDAA2B,KAAK,QAAQ,OAAO;AAAA,EACvD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,+BAA+B,EAAE,MAAM,QAAQ,GAAsC;AAC1F,eAAO,sDAA8B,KAAK,QAAQ,SAAS,IAAI;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,MAA0B;AACzC,QAAI,KAAK,MAAM,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI;AAC9C,YAAM,IAAI,MAAM,QAAQ,KAAK,IAAI,2BAA2B;AAC7D,SAAK,MAAM,KAAK,IAAI;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,iBACC,MAKC;AACD,UAAMA,SAAQ,KAAK,cAAc,CAAC;AAClC,UAAM,UAAU,KAAK;AAIrB,QAAI,CAACA,OAAM,IAAI,KAAK,YAAY,qBAAQ,WAAW,YAAY,qBAAQ,SAAS;AAC/E,YAAM,IAAI,MAAM,8BAA8B,IAAI,EAAE;AAAA,IACrD;AAEA,YAAQ,MAAM;AAAA,MACb,KAAK;AACJ,eAAOA,OAAM,IAAI,KAAK,yCAAwB,OAAO;AAAA,MACtD,KAAK;AACJ,eAAOA,OAAM,IAAI,KAAK,sCAAqB,OAAO;AAAA,MACnD,KAAK;AACJ,eAAOA,OAAM,IAAI,KAAK,6CAA4B,OAAO;AAAA,MAC1D,KAAK;AACJ,eAAOA,OAAM,IAAI,KAAK,0CAAyB,OAAO;AAAA,IACxD;AAAA,EACD;AACD;",
|
|
6
|
-
"names": ["rules"]
|
|
7
|
-
}
|