sui-explorer-local
Version:
Local Sui Explorer
37 lines (31 loc) • 1.3 kB
text/typescript
// Copyright (c) Mysten Labs, Inc.
// SPDX-License-Identifier: Apache-2.0
import { KIOSK_OWNER_CAP, Network, PERSONAL_KIOSK_RULE_ADDRESS } from '@mysten/kiosk';
import { SuiObjectData, SuiObjectResponse } from '@mysten/sui.js/client';
export const ORIGINBYTE_KIOSK_MODULE =
'0x95a441d389b07437d00dd07e0b6f05f513d7659b13fd7c5d3923c7d9d847199b::ob_kiosk';
export const ORIGINBYTE_KIOSK_OWNER_TOKEN = `${ORIGINBYTE_KIOSK_MODULE}::OwnerToken`;
export function isKioskOwnerToken(
network: Network,
object?: SuiObjectResponse | SuiObjectData | null,
) {
if (!object) return false;
const objectData = 'data' in object && object.data ? object.data : (object as SuiObjectData);
return [
KIOSK_OWNER_CAP,
`${PERSONAL_KIOSK_RULE_ADDRESS[network]}::personal_kiosk::PersonalKioskCap`,
ORIGINBYTE_KIOSK_OWNER_TOKEN,
].includes(objectData?.type ?? '');
}
export function getKioskIdFromOwnerCap(object: SuiObjectResponse | SuiObjectData) {
const objectData = 'data' in object && object.data ? object.data : (object as SuiObjectData);
const fields =
objectData.content?.dataType === 'moveObject'
? (objectData.content.fields as {
for?: string;
kiosk?: string;
cap?: { fields: { for: string } };
})
: null;
return fields?.for ?? fields?.kiosk ?? fields?.cap?.fields.for!;
}