@evefrontier/dapp-kit 0.1.1 → 0.1.3
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 +12 -0
- package/README.md +2 -2
- package/docs/api/assets/hierarchy.js +1 -1
- package/docs/api/assets/navigation.js +1 -1
- package/docs/api/assets/search.js +1 -1
- package/docs/api/classes/WalletNoAccountSelectedError.html +3 -3
- package/docs/api/classes/WalletNotConnectedError.html +3 -3
- package/docs/api/classes/WalletSponsoredTransactionNotSupportedError.html +3 -3
- package/docs/api/enums/ActionTypes.html +2 -2
- package/docs/api/enums/Assemblies.html +3 -2
- package/docs/api/enums/QueryParams.html +2 -2
- package/docs/api/enums/Severity.html +2 -2
- package/docs/api/enums/SponsoredTransactionActions.html +3 -3
- package/docs/api/enums/State.html +2 -2
- package/docs/api/enums/SupportedWallets.html +2 -2
- package/docs/api/enums/TYPEIDS.html +3 -3
- package/docs/api/functions/EveFrontierProvider.html +2 -2
- package/docs/api/functions/NotificationProvider.html +2 -2
- package/docs/api/functions/SmartObjectProvider.html +4 -4
- package/docs/api/functions/VaultProvider.html +1 -1
- package/docs/api/functions/abbreviateAddress.html +2 -2
- package/docs/api/functions/assertAssemblyType.html +2 -2
- package/docs/api/functions/clickToCopy.html +1 -1
- package/docs/api/functions/executeGraphQLQuery.html +2 -2
- package/docs/api/functions/findOwnerByAddress.html +2 -2
- package/docs/api/functions/formatDuration.html +2 -2
- package/docs/api/functions/formatM3.html +2 -2
- package/docs/api/functions/getAdjustedBurnRate.html +6 -0
- package/docs/api/functions/getAssemblyType.html +2 -2
- package/docs/api/functions/getAssemblyTypeApiString.html +2 -2
- package/docs/api/functions/getAssemblyWithOwner.html +3 -3
- package/docs/api/functions/getCharacterAndOwnedObjects.html +3 -0
- package/docs/api/functions/getCharacterOwnedObjects.html +5 -0
- package/docs/api/functions/getCharacterOwnedObjectsJson.html +5 -0
- package/docs/api/functions/getCharacterOwnerCapType.html +2 -2
- package/docs/api/functions/getCharacterPlayerProfileType.html +3 -0
- package/docs/api/functions/getCommonItems.html +1 -1
- package/docs/api/functions/getDappUrl.html +2 -2
- package/docs/api/functions/getDatahubGameInfo.html +2 -2
- package/docs/api/functions/getEnergyConfig.html +4 -0
- package/docs/api/functions/getEnergyConfigType.html +3 -0
- package/docs/api/functions/getEnergyUsageForType.html +5 -0
- package/docs/api/functions/getEnv.html +1 -1
- package/docs/api/functions/getEveWorldPackageId.html +2 -2
- package/docs/api/functions/getFuelEfficiencyConfig.html +4 -0
- package/docs/api/functions/getFuelEfficiencyConfigType.html +3 -0
- package/docs/api/functions/getFuelEfficiencyForType.html +5 -0
- package/docs/api/functions/getObjectByAddress.html +2 -2
- package/docs/api/functions/getObjectId.html +2 -2
- package/docs/api/functions/getObjectOwnerAndOwnedObjectsByType.html +2 -2
- package/docs/api/functions/getObjectOwnerAndOwnedObjectsWithJson.html +7 -0
- package/docs/api/functions/getObjectRegistryType.html +2 -2
- package/docs/api/functions/getObjectWithDynamicFields.html +2 -2
- package/docs/api/functions/getObjectWithJson.html +2 -2
- package/docs/api/functions/getObjectsByType.html +2 -2
- package/docs/api/functions/getOwnedObjectsByPackage.html +2 -2
- package/docs/api/functions/getOwnedObjectsByType.html +2 -2
- package/docs/api/functions/getRegistryAddress.html +2 -2
- package/docs/api/functions/getSingletonObjectByType.html +2 -2
- package/docs/api/functions/getSponsoredTransactionFeature.html +2 -2
- package/docs/api/functions/getSuiGraphqlEndpoint.html +2 -2
- package/docs/api/functions/getTxUrl.html +2 -2
- package/docs/api/functions/getVolumeM3.html +2 -2
- package/docs/api/functions/getWalletCharacters.html +3 -0
- package/docs/api/functions/hasSponsoredTransactionFeature.html +2 -2
- package/docs/api/functions/isOwner.html +3 -3
- package/docs/api/functions/parseCharacterFromJson.html +5 -0
- package/docs/api/functions/parseErrorFromMessage.html +1 -1
- package/docs/api/functions/parseStatus.html +2 -2
- package/docs/api/functions/parseURL.html +1 -1
- package/docs/api/functions/removeTrailingZeros.html +1 -1
- package/docs/api/functions/transformToAssembly.html +2 -2
- package/docs/api/functions/transformToCharacter.html +2 -2
- package/docs/api/functions/useConnection.html +2 -2
- package/docs/api/functions/useNotification.html +2 -2
- package/docs/api/functions/useSmartObject.html +4 -9
- package/docs/api/functions/useSponsoredTransaction.html +5 -5
- package/docs/api/functions/walletSupportsSponsoredTransaction.html +2 -2
- package/docs/api/hierarchy.html +1 -1
- package/docs/api/index.html +3 -5
- package/docs/api/interfaces/AddressOwner.html +2 -2
- package/docs/api/interfaces/AddressOwnerWithJson.html +2 -2
- package/docs/api/interfaces/AddressWithObjects.html +3 -0
- package/docs/api/interfaces/AdjustedBurnRate.html +8 -0
- package/docs/api/interfaces/AsMoveObjectRef.html +3 -0
- package/docs/api/interfaces/AssemblyProperties.html +6 -3
- package/docs/api/interfaces/CharacterAndOwnedObjectsNode.html +2 -0
- package/docs/api/interfaces/CharacterInfo.html +3 -3
- package/docs/api/interfaces/CharacterOwnerNode.html +3 -0
- package/docs/api/interfaces/ConfigExtractDynamicFieldNode.html +3 -0
- package/docs/api/interfaces/ContentsBcs.html +2 -0
- package/docs/api/interfaces/ContentsJsonAndBcs.html +3 -0
- package/docs/api/interfaces/ContentsJsonOnly.html +3 -0
- package/docs/api/interfaces/ContentsTypeAndBcs.html +3 -0
- package/docs/api/interfaces/ContentsTypeJsonAndBcs.html +4 -0
- package/docs/api/interfaces/DatahubGameInfo.html +14 -16
- package/docs/api/interfaces/DetailedAssemblyResponse.html +6 -3
- package/docs/api/interfaces/DetailedSmartCharacterResponse.html +2 -2
- package/docs/api/interfaces/DynamicFieldNode.html +2 -2
- package/docs/api/interfaces/EphemeralInventory.html +2 -2
- package/docs/api/interfaces/EveFrontierSponsoredTransactionFeature.html +3 -3
- package/docs/api/interfaces/ExtractAsMoveObjectNode.html +4 -0
- package/docs/api/interfaces/GateModule.html +2 -5
- package/docs/api/interfaces/GetCharacterAndOwnedObjectsResponse.html +2 -0
- package/docs/api/interfaces/GetObjectAndCharacterOwnerResponse.html +2 -0
- package/docs/api/interfaces/GetObjectByAddressResponse.html +2 -2
- package/docs/api/interfaces/GetObjectOwnerAndOwnedObjectsResponse.html +2 -2
- package/docs/api/interfaces/GetObjectOwnerAndOwnedObjectsWithJsonResponse.html +2 -2
- package/docs/api/interfaces/GetObjectResponse.html +2 -2
- package/docs/api/interfaces/GetObjectWithJsonResponse.html +2 -2
- package/docs/api/interfaces/GetObjectsByTypeResponse.html +2 -2
- package/docs/api/interfaces/GetOwnedObjectsByPackageResponse.html +2 -2
- package/docs/api/interfaces/GetOwnedObjectsByTypeResponse.html +2 -2
- package/docs/api/interfaces/GetSingletonConfigObjectByTypeResponse.html +2 -0
- package/docs/api/interfaces/GetSingletonObjectByTypeResponse.html +2 -2
- package/docs/api/interfaces/GetWalletCharactersResponse.html +2 -0
- package/docs/api/interfaces/GraphQLResponse.html +2 -2
- package/docs/api/interfaces/InventoryItem.html +2 -2
- package/docs/api/interfaces/ManufacturingModule.html +1 -2
- package/docs/api/interfaces/MoveObjectContents.html +2 -2
- package/docs/api/interfaces/MoveObjectData.html +2 -2
- package/docs/api/interfaces/NetworkNodeModule.html +2 -2
- package/docs/api/interfaces/NotificationContextType.html +2 -2
- package/docs/api/interfaces/NotificationState.html +2 -2
- package/docs/api/interfaces/Notify.html +2 -2
- package/docs/api/interfaces/ObjectNodes.html +2 -0
- package/docs/api/interfaces/ObjectWithContentsNode.html +2 -2
- package/docs/api/interfaces/OwnedObjectAddressNode.html +2 -2
- package/docs/api/interfaces/OwnedObjectFullNode.html +2 -2
- package/docs/api/interfaces/OwnedObjectNode.html +2 -2
- package/docs/api/interfaces/OwnedObjectNodeWithJson.html +2 -2
- package/docs/api/interfaces/OwnerCapData.html +3 -3
- package/docs/api/interfaces/PageInfo.html +2 -2
- package/docs/api/interfaces/PreviousTransaction.html +2 -0
- package/docs/api/interfaces/RawCharacterData.html +3 -3
- package/docs/api/interfaces/RawSuiObjectData.html +10 -6
- package/docs/api/interfaces/RefineryModule.html +1 -2
- package/docs/api/interfaces/SmartAssemblyResponse.html +6 -2
- package/docs/api/interfaces/SmartObjectContextType.html +4 -6
- package/docs/api/interfaces/SponsoredTransactionInput.html +6 -7
- package/docs/api/interfaces/SponsoredTransactionOutput.html +5 -5
- package/docs/api/interfaces/StorageModule.html +2 -3
- package/docs/api/interfaces/SuiObjectResponse.html +2 -2
- package/docs/api/interfaces/TransformOptions.html +8 -4
- package/docs/api/interfaces/TurretModule.html +1 -2
- package/docs/api/interfaces/TypeRepr.html +2 -0
- package/docs/api/interfaces/TypeReprWithLayout.html +3 -0
- package/docs/api/interfaces/VaultContextType.html +3 -3
- package/docs/api/modules.html +1 -1
- package/docs/api/types/AssemblyType.html +1 -1
- package/docs/api/types/ContentsTypeAndJson.html +2 -0
- package/docs/api/types/ErrorType.html +2 -2
- package/docs/api/types/MoveObjectRefWithJson.html +2 -0
- package/docs/api/types/SendSponsoredTransactionFn.html +1 -1
- package/docs/api/types/SponsoredTransactionArgs.html +2 -2
- package/docs/api/types/SponsoredTransactionAssemblyType.html +2 -2
- package/docs/api/types/SponsoredTransactionMethod.html +2 -2
- package/docs/api/types/UseSponsoredTransactionArgs.html +2 -2
- package/docs/api/types/UseSponsoredTransactionError.html +2 -2
- package/docs/api/types/UseSponsoredTransactionMutationOptions.html +2 -2
- package/docs/api/variables/ASSEMBLY_TYPE_API_STRING.html +2 -2
- package/docs/api/variables/ERRORS.html +1 -1
- package/docs/api/variables/ERROR_MESSAGES.html +1 -1
- package/docs/api/variables/EVEFRONTIER_SPONSORED_TRANSACTION.html +2 -2
- package/docs/api/variables/EXCLUDED_TYPEIDS.html +1 -1
- package/docs/api/variables/GET_OBJECTS_BY_TYPE.html +2 -2
- package/docs/api/variables/GET_OBJECT_BY_ADDRESS.html +2 -2
- package/docs/api/variables/GET_OBJECT_OWNER_AND_OWNED_OBJECTS_BY_TYPE.html +2 -2
- package/docs/api/variables/GET_OBJECT_OWNER_AND_OWNED_OBJECTS_WITH_JSON.html +2 -2
- package/docs/api/variables/GET_OBJECT_WITH_DYNAMIC_FIELDS.html +2 -2
- package/docs/api/variables/GET_OBJECT_WITH_JSON.html +2 -2
- package/docs/api/variables/GET_OWNED_OBJECTS_BY_PACKAGE.html +2 -2
- package/docs/api/variables/GET_OWNED_OBJECTS_BY_TYPE.html +2 -2
- package/docs/api/variables/GET_SINGLETON_CONFIG_OBJECT_BY_TYPE.html +2 -0
- package/docs/api/variables/GET_SINGLETON_OBJECT_BY_TYPE.html +2 -2
- package/docs/api/variables/GET_WALLET_CHARACTERS.html +3 -0
- package/docs/api/variables/NotificationContext.html +1 -1
- package/docs/api/variables/ONE_M3.html +2 -2
- package/docs/api/variables/POLLING_INTERVAL.html +2 -2
- package/docs/api/variables/STORAGE_KEYS.html +2 -2
- package/docs/api/variables/SmartObjectContext.html +1 -1
- package/docs/api/variables/VaultContext.html +1 -1
- package/docs/api/variables/dAppKit.html +2 -2
- package/graphql/client.ts +119 -24
- package/graphql/index.ts +5 -39
- package/graphql/queries.ts +166 -1
- package/graphql/types.ts +192 -167
- package/hooks/index.ts +1 -0
- package/hooks/useSmartObject.ts +2 -12
- package/hooks/useSponsoredTransaction.ts +60 -9
- package/index.ts +7 -71
- package/package.json +1 -1
- package/providers/SmartObjectProvider.tsx +84 -57
- package/types/contexts.ts +1 -3
- package/types/sponsoredTransaction.ts +1 -0
- package/types/types.ts +52 -10
- package/types/worldApiReturnTypes.ts +13 -37
- package/utils/__tests__/burnRate.test.ts +121 -0
- package/utils/__tests__/character.test.ts +112 -0
- package/utils/__tests__/characterOwnedObjects.test.ts +222 -0
- package/utils/__tests__/config.test.ts +424 -0
- package/utils/__tests__/mapping.test.ts +2 -2
- package/utils/burnRate.ts +46 -0
- package/utils/character.ts +46 -0
- package/utils/characterOwnedObjects.ts +52 -0
- package/utils/config.ts +151 -0
- package/utils/constants.ts +39 -5
- package/utils/datahub.ts +3 -41
- package/utils/errors.ts +1 -1
- package/utils/index.ts +10 -1
- package/utils/mapping.ts +5 -2
- package/utils/transforms.ts +34 -31
- package/vite-env.d.ts +2 -2
- package/wallet/features.ts +7 -2
- package/docs/api/interfaces/GameTypeResponse.html +0 -13
package/utils/config.ts
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { getSingletonConfigObjectByType } from "../graphql/client";
|
|
2
|
+
import { getEnergyConfigType, getFuelEfficiencyConfigType } from "./constants";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Cached energy config: type_id -> energy usage (e.g. energy_constant).
|
|
6
|
+
* Populated from the on-chain EnergyConfig singleton.
|
|
7
|
+
*/
|
|
8
|
+
let energyConfigCache: Record<number, number> | null = null;
|
|
9
|
+
let fuelEfficiencyConfigCache: Record<number, number> | null = null;
|
|
10
|
+
|
|
11
|
+
/** In-flight promise for energy config so concurrent callers share one fetch. */
|
|
12
|
+
let energyConfigInFlight: Promise<Record<number, number>> | null = null;
|
|
13
|
+
/** In-flight promise for fuel efficiency config so concurrent callers share one fetch. */
|
|
14
|
+
let fuelEfficiencyConfigInFlight: Promise<Record<number, number>> | null = null;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Resets in-memory and in-flight caches. Only for use in tests.
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
export function resetConfigCachesForTesting(): void {
|
|
21
|
+
energyConfigCache = null;
|
|
22
|
+
fuelEfficiencyConfigCache = null;
|
|
23
|
+
energyConfigInFlight = null;
|
|
24
|
+
fuelEfficiencyConfigInFlight = null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Parses EnergyConfig or FuelConfig object JSON (contents + dynamic fields) into a map of typeId -> value (e.g. energy_constant or fuel_efficiency).
|
|
29
|
+
* Supports:
|
|
30
|
+
* - Dynamic fields where name is type_id (string/number) and contents.json has value
|
|
31
|
+
* - contents.json with a table/map of type_id -> value
|
|
32
|
+
*/
|
|
33
|
+
function parseConfig(
|
|
34
|
+
configJson: Record<string, unknown> | undefined,
|
|
35
|
+
): Record<number, number> {
|
|
36
|
+
const byTypeId: Record<number, number> = {};
|
|
37
|
+
const nodes = configJson as unknown as
|
|
38
|
+
| Array<{ key: { json: string }; value: { json: string } }>
|
|
39
|
+
| undefined;
|
|
40
|
+
if (!Array.isArray(nodes) || !nodes.length) return byTypeId;
|
|
41
|
+
for (const node of nodes) {
|
|
42
|
+
const typeId = parseInt(node.key?.json ?? "", 10);
|
|
43
|
+
if (Number.isNaN(typeId)) continue;
|
|
44
|
+
const energy = parseInt(node.value?.json ?? "", 10);
|
|
45
|
+
byTypeId[typeId] = Number.isNaN(energy) ? 0 : energy;
|
|
46
|
+
}
|
|
47
|
+
return byTypeId;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Fetches the EnergyConfig singleton via GraphQL (using getEnergyConfigType), parses it,
|
|
52
|
+
* caches the result, and returns the map of type_id -> energy usage.
|
|
53
|
+
* Subsequent calls return the cached map.
|
|
54
|
+
*
|
|
55
|
+
* @category Utilities
|
|
56
|
+
*/
|
|
57
|
+
export async function getEnergyConfig(): Promise<Record<number, number>> {
|
|
58
|
+
if (energyConfigCache) {
|
|
59
|
+
return energyConfigCache;
|
|
60
|
+
}
|
|
61
|
+
if (energyConfigInFlight) {
|
|
62
|
+
return energyConfigInFlight;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
energyConfigInFlight = (async () => {
|
|
66
|
+
const result = await getSingletonConfigObjectByType(
|
|
67
|
+
getEnergyConfigType(),
|
|
68
|
+
"assembly_energy",
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
const energyConfigJson = result.data?.objects?.nodes[0]?.asMoveObject
|
|
72
|
+
?.contents?.extract?.extract?.asAddress?.addressAt?.dynamicFields
|
|
73
|
+
?.nodes as Record<string, unknown> | undefined;
|
|
74
|
+
|
|
75
|
+
energyConfigCache = parseConfig(energyConfigJson);
|
|
76
|
+
return energyConfigCache;
|
|
77
|
+
})();
|
|
78
|
+
|
|
79
|
+
try {
|
|
80
|
+
return await energyConfigInFlight;
|
|
81
|
+
} finally {
|
|
82
|
+
energyConfigInFlight = null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Fetches the Fuel Efficiency Config singleton via GraphQL (using getFuelEfficiencyConfigType), parses it,
|
|
88
|
+
* caches the result, and returns the map of type_id -> fuel efficiency.
|
|
89
|
+
* Subsequent calls return the cached map.
|
|
90
|
+
*
|
|
91
|
+
* @category Utilities
|
|
92
|
+
*/
|
|
93
|
+
export async function getFuelEfficiencyConfig(): Promise<
|
|
94
|
+
Record<number, number>
|
|
95
|
+
> {
|
|
96
|
+
if (fuelEfficiencyConfigCache) {
|
|
97
|
+
return fuelEfficiencyConfigCache;
|
|
98
|
+
}
|
|
99
|
+
if (fuelEfficiencyConfigInFlight) {
|
|
100
|
+
return fuelEfficiencyConfigInFlight;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
fuelEfficiencyConfigInFlight = (async () => {
|
|
104
|
+
const result = await getSingletonConfigObjectByType(
|
|
105
|
+
getFuelEfficiencyConfigType(),
|
|
106
|
+
"fuel_efficiency",
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
const fuelEfficiencyConfigJson = result.data?.objects?.nodes[0]
|
|
110
|
+
?.asMoveObject?.contents?.extract?.extract?.asAddress?.addressAt
|
|
111
|
+
?.dynamicFields?.nodes as Record<string, unknown> | undefined;
|
|
112
|
+
|
|
113
|
+
fuelEfficiencyConfigCache = parseConfig(fuelEfficiencyConfigJson);
|
|
114
|
+
return fuelEfficiencyConfigCache;
|
|
115
|
+
})();
|
|
116
|
+
|
|
117
|
+
try {
|
|
118
|
+
return await fuelEfficiencyConfigInFlight;
|
|
119
|
+
} finally {
|
|
120
|
+
fuelEfficiencyConfigInFlight = null;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Returns the energy usage for a given assembly type ID from the on-chain EnergyConfig.
|
|
126
|
+
* Uses cached EnergyConfig data after the first fetch.
|
|
127
|
+
*
|
|
128
|
+
* @param typeId - In-game type ID (e.g. from rawData.type_id)
|
|
129
|
+
* @returns Energy usage (e.g. energy_constant), or 0 if not found or not yet loaded
|
|
130
|
+
* @category Utilities
|
|
131
|
+
*/
|
|
132
|
+
export async function getEnergyUsageForType(typeId: number): Promise<number> {
|
|
133
|
+
const config = await getEnergyConfig();
|
|
134
|
+
|
|
135
|
+
return config[typeId] ?? 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Returns the fuel efficiency for a given assembly type ID from the on-chain Fuel Efficiency Config.
|
|
140
|
+
* Uses cached Fuel Efficiency Config data after the first fetch.
|
|
141
|
+
*
|
|
142
|
+
* @param typeId - In-game type ID (e.g. from rawData.type_id)
|
|
143
|
+
* @returns Fuel efficiency (e.g. fuel_efficiency), or 0 if not found or not yet loaded
|
|
144
|
+
* @category Utilities
|
|
145
|
+
*/
|
|
146
|
+
export async function getFuelEfficiencyForType(
|
|
147
|
+
typeId: number,
|
|
148
|
+
): Promise<number> {
|
|
149
|
+
const config = await getFuelEfficiencyConfig();
|
|
150
|
+
return config[typeId] ?? 0;
|
|
151
|
+
}
|
package/utils/constants.ts
CHANGED
|
@@ -50,6 +50,16 @@ export const getCharacterOwnerCapType = (): string => {
|
|
|
50
50
|
return `${pkg}::access::OwnerCap<${pkg}::character::Character>`;
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
/**
|
|
54
|
+
* Get the Character PlayerProfile type string (derived from package ID).
|
|
55
|
+
* @returns The fully qualified type string for Character PlayerProfile
|
|
56
|
+
* @category Utilities
|
|
57
|
+
*/
|
|
58
|
+
export const getCharacterPlayerProfileType = (): string => {
|
|
59
|
+
const pkg = getEveWorldPackageId();
|
|
60
|
+
return `${pkg}::character::PlayerProfile`;
|
|
61
|
+
};
|
|
62
|
+
|
|
53
63
|
/**
|
|
54
64
|
* Get the ObjectRegistry type string (derived from package ID).
|
|
55
65
|
* @returns The fully qualified type string for ObjectRegistry
|
|
@@ -58,15 +68,37 @@ export const getCharacterOwnerCapType = (): string => {
|
|
|
58
68
|
export const getObjectRegistryType = (): string =>
|
|
59
69
|
`${getEveWorldPackageId()}::object_registry::ObjectRegistry`;
|
|
60
70
|
|
|
61
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Get the EnergyConfig type string (derived from package ID).
|
|
73
|
+
* @returns The fully qualified type string for Energy Config
|
|
74
|
+
* @category Utilities
|
|
75
|
+
*/
|
|
76
|
+
export const getEnergyConfigType = (): string =>
|
|
77
|
+
`${getEveWorldPackageId()}::energy::EnergyConfig`;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Get the Fuel Efficiency Config type string (derived from package ID).
|
|
81
|
+
* @returns The fully qualified type string for Fuel Efficiency Config
|
|
82
|
+
* @category Utilities
|
|
83
|
+
*/
|
|
84
|
+
export const getFuelEfficiencyConfigType = (): string =>
|
|
85
|
+
`${getEveWorldPackageId()}::fuel::FuelConfig`;
|
|
86
|
+
|
|
87
|
+
/** Polling interval in milliseconds (10 seconds).
|
|
88
|
+
* @category Constants
|
|
89
|
+
*/
|
|
62
90
|
export const POLLING_INTERVAL = 10000;
|
|
63
91
|
|
|
64
|
-
/** Local storage keys.
|
|
92
|
+
/** Local storage keys.
|
|
93
|
+
* @category Constants
|
|
94
|
+
*/
|
|
65
95
|
export const STORAGE_KEYS = {
|
|
66
96
|
CONNECTED: "eve-dapp-connected",
|
|
67
97
|
} as const;
|
|
68
98
|
|
|
69
|
-
/** Type IDs for in-game items.
|
|
99
|
+
/** Type IDs for in-game items.
|
|
100
|
+
* @category Constants
|
|
101
|
+
*/
|
|
70
102
|
/* eslint-disable @typescript-eslint/no-loss-of-precision */
|
|
71
103
|
export enum TYPEIDS {
|
|
72
104
|
LENS = 77518,
|
|
@@ -84,7 +116,7 @@ export enum TYPEIDS {
|
|
|
84
116
|
REFUGE = 87160,
|
|
85
117
|
}
|
|
86
118
|
|
|
87
|
-
/** @category
|
|
119
|
+
/** @category Constants */
|
|
88
120
|
export const EXCLUDED_TYPEIDS = [
|
|
89
121
|
TYPEIDS.PORTABLE_REFINERY,
|
|
90
122
|
TYPEIDS.PORTABLE_PRINTER,
|
|
@@ -92,5 +124,7 @@ export const EXCLUDED_TYPEIDS = [
|
|
|
92
124
|
TYPEIDS.REFUGE,
|
|
93
125
|
];
|
|
94
126
|
|
|
95
|
-
/** Volume - from wei units to m3.
|
|
127
|
+
/** Volume - from wei units to m3.
|
|
128
|
+
* @category Constants
|
|
129
|
+
*/
|
|
96
130
|
export const ONE_M3 = 1000000000000000000;
|
package/utils/datahub.ts
CHANGED
|
@@ -1,42 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Game item/type information from the EVE Frontier Datahub API.
|
|
3
|
-
*
|
|
4
|
-
* Contains metadata about items, assemblies, and other game objects
|
|
5
|
-
* including display names, descriptions, icons, and physical properties.
|
|
6
|
-
*
|
|
7
|
-
* @category Types
|
|
8
|
-
*/
|
|
9
|
-
export interface DatahubGameInfo {
|
|
10
|
-
/** The type ID (matches on-chain type_id) */
|
|
11
|
-
id: number;
|
|
12
|
-
/** Display name of the item/type */
|
|
13
|
-
name: string;
|
|
14
|
-
/** Description text */
|
|
15
|
-
description: string;
|
|
16
|
-
/** Mass in kg */
|
|
17
|
-
mass: number;
|
|
18
|
-
/** Radius in meters */
|
|
19
|
-
radius: number;
|
|
20
|
-
/** Volume in cubic meters */
|
|
21
|
-
volume: number;
|
|
22
|
-
/** Portion size for stacking */
|
|
23
|
-
portionSize: number;
|
|
24
|
-
/** Category group name (e.g., "Structures") */
|
|
25
|
-
groupName: string;
|
|
26
|
-
/** Category group ID */
|
|
27
|
-
groupId: number;
|
|
28
|
-
/** Top-level category name */
|
|
29
|
-
categoryName: string;
|
|
30
|
-
/** Top-level category ID */
|
|
31
|
-
categoryId: number;
|
|
32
|
-
/** URL to the item's icon image */
|
|
33
|
-
iconUrl: string;
|
|
34
|
-
/** Additional type-specific attributes */
|
|
35
|
-
attributes?: {
|
|
36
|
-
energyConstant?: number;
|
|
37
|
-
[key: string]: unknown;
|
|
38
|
-
};
|
|
39
|
-
}
|
|
1
|
+
import { DatahubGameInfo } from "../types";
|
|
40
2
|
|
|
41
3
|
/**
|
|
42
4
|
* Fetch game type information from the EVE Frontier Datahub API.
|
|
@@ -65,10 +27,10 @@ export interface DatahubGameInfo {
|
|
|
65
27
|
* ```
|
|
66
28
|
*/
|
|
67
29
|
export async function getDatahubGameInfo(
|
|
68
|
-
typeId: number
|
|
30
|
+
typeId: number,
|
|
69
31
|
): Promise<DatahubGameInfo> {
|
|
70
32
|
const response = await fetch(
|
|
71
|
-
`https://world-api-stillness.live.tech.evefrontier.com/v2/types/${typeId}
|
|
33
|
+
`https://world-api-stillness.live.tech.evefrontier.com/v2/types/${typeId}`,
|
|
72
34
|
);
|
|
73
35
|
const data = await response.json();
|
|
74
36
|
|
package/utils/errors.ts
CHANGED
|
@@ -137,7 +137,7 @@ ERRORS.CALLFROM_NOT_FOUND = ERRORS[2006];
|
|
|
137
137
|
ERRORS.INSUFFICIENT_EVE = ERRORS[3002];
|
|
138
138
|
ERRORS.LENS_UNAVAILABLE = ERRORS[5001];
|
|
139
139
|
|
|
140
|
-
/** @category
|
|
140
|
+
/** @category Constants */
|
|
141
141
|
export const ERROR_MESSAGES: Record<number, string> = Object.fromEntries(
|
|
142
142
|
Object.entries(ERRORS)
|
|
143
143
|
.filter(([key]) => /^\d+$/.test(key))
|
package/utils/index.ts
CHANGED
|
@@ -5,12 +5,21 @@ export {
|
|
|
5
5
|
getObjectId,
|
|
6
6
|
getRegistryAddress,
|
|
7
7
|
} from "./mapping";
|
|
8
|
+
export { getEnergyUsageForType, getFuelEfficiencyForType } from "./config";
|
|
9
|
+
export {
|
|
10
|
+
getAdjustedBurnRate,
|
|
11
|
+
type AdjustedBurnRate,
|
|
12
|
+
} from "./burnRate";
|
|
13
|
+
export { parseCharacterFromJson } from "./character";
|
|
14
|
+
export {
|
|
15
|
+
getCharacterOwnedObjectsJson,
|
|
16
|
+
getCharacterOwnedObjects,
|
|
17
|
+
} from "./characterOwnedObjects";
|
|
8
18
|
export { transformToAssembly, transformToCharacter } from "./transforms";
|
|
9
19
|
export type { TransformOptions } from "./transforms";
|
|
10
20
|
|
|
11
21
|
// Datahub utilities
|
|
12
22
|
export { getDatahubGameInfo } from "./datahub";
|
|
13
|
-
export type { DatahubGameInfo } from "./datahub";
|
|
14
23
|
|
|
15
24
|
// General utilities
|
|
16
25
|
export {
|
package/utils/mapping.ts
CHANGED
|
@@ -54,9 +54,12 @@ export function getAssemblyType(typeRepr: string): Assemblies {
|
|
|
54
54
|
if (typeRepr.includes("::refinery::Refinery")) {
|
|
55
55
|
return Assemblies.Refinery;
|
|
56
56
|
}
|
|
57
|
+
if (typeRepr.includes("::assembly::Assembly")) {
|
|
58
|
+
return Assemblies.Assembly;
|
|
59
|
+
}
|
|
57
60
|
|
|
58
|
-
// Assembly type not found, return default
|
|
59
|
-
return Assemblies.
|
|
61
|
+
// Assembly type not found, return default Assembly
|
|
62
|
+
return Assemblies.Assembly;
|
|
60
63
|
}
|
|
61
64
|
|
|
62
65
|
// Cache for the Registry address
|
package/utils/transforms.ts
CHANGED
|
@@ -5,6 +5,8 @@ import {
|
|
|
5
5
|
DetailedSmartCharacterResponse,
|
|
6
6
|
SmartAssemblyResponse,
|
|
7
7
|
InventoryItem,
|
|
8
|
+
DatahubGameInfo,
|
|
9
|
+
DetailedAssemblyResponse,
|
|
8
10
|
} from "../types";
|
|
9
11
|
import type {
|
|
10
12
|
MoveObjectData,
|
|
@@ -12,7 +14,8 @@ import type {
|
|
|
12
14
|
CharacterInfo,
|
|
13
15
|
} from "../graphql/types";
|
|
14
16
|
import { getAssemblyType, parseStatus } from "./mapping";
|
|
15
|
-
import { getDatahubGameInfo
|
|
17
|
+
import { getDatahubGameInfo } from "./datahub";
|
|
18
|
+
import { getEnergyConfig, getEnergyUsageForType } from "./config";
|
|
16
19
|
import { getObjectWithJson } from "../graphql";
|
|
17
20
|
|
|
18
21
|
/**
|
|
@@ -41,6 +44,10 @@ export interface TransformOptions {
|
|
|
41
44
|
character?: CharacterInfo | null;
|
|
42
45
|
/** Pre-fetched datahub game info (name, description, image) */
|
|
43
46
|
datahubInfo?: DatahubGameInfo | null;
|
|
47
|
+
/** Energy source information */
|
|
48
|
+
energySource?: RawSuiObjectData | null;
|
|
49
|
+
/** Destination gate information, if Smart Gate */
|
|
50
|
+
destinationGate?: RawSuiObjectData | null;
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
/**
|
|
@@ -84,8 +91,12 @@ export async function transformToAssembly(
|
|
|
84
91
|
// Build base assembly properties
|
|
85
92
|
const state = parseStatus(rawData.status?.status?.["@variant"]);
|
|
86
93
|
|
|
87
|
-
// Use pre-fetched datahub info for defaults
|
|
94
|
+
// Use pre-fetched datahub info for defaults (name, description, image); energy from on-chain EnergyConfig
|
|
88
95
|
const datahubInfo = options?.datahubInfo;
|
|
96
|
+
const energySource = options?.energySource;
|
|
97
|
+
const energyUsage = await getEnergyUsageForType(parseInt(typeId, 10) || 0);
|
|
98
|
+
|
|
99
|
+
const parentState = parseStatus(energySource?.status?.status?.["@variant"]);
|
|
89
100
|
|
|
90
101
|
const baseAssembly = {
|
|
91
102
|
id: rawData.id || objectId,
|
|
@@ -94,20 +105,24 @@ export async function transformToAssembly(
|
|
|
94
105
|
name: rawData.metadata?.name || "",
|
|
95
106
|
description: rawData.metadata?.description || "",
|
|
96
107
|
dappURL: rawData.metadata?.url || "",
|
|
108
|
+
energySourceId:
|
|
109
|
+
assemblyType === Assemblies.NetworkNode
|
|
110
|
+
? undefined
|
|
111
|
+
: energySource?.id || rawData.energy_source_id || "", // Parent network node ID
|
|
112
|
+
isParentNodeOnline:
|
|
113
|
+
assemblyType === Assemblies.NetworkNode
|
|
114
|
+
? undefined
|
|
115
|
+
: parentState === State.ONLINE, // Defined in all cases except network nodes
|
|
97
116
|
state,
|
|
98
117
|
typeId: parseInt(typeId, 10) || 0,
|
|
99
|
-
energyUsage
|
|
100
|
-
location: {
|
|
101
|
-
x: 0,
|
|
102
|
-
y: 0,
|
|
103
|
-
z: 0,
|
|
104
|
-
},
|
|
118
|
+
energyUsage,
|
|
105
119
|
typeDetails: datahubInfo,
|
|
106
120
|
// Owner information
|
|
107
121
|
character: options?.character || undefined,
|
|
108
122
|
// Include raw data for debugging/extension
|
|
109
123
|
_raw: moveObject,
|
|
110
|
-
|
|
124
|
+
_options: options,
|
|
125
|
+
} as DetailedAssemblyResponse;
|
|
111
126
|
|
|
112
127
|
// Add module-specific data based on assembly type
|
|
113
128
|
switch (assemblyType) {
|
|
@@ -141,30 +156,26 @@ export async function transformToAssembly(
|
|
|
141
156
|
items: inventoryItems,
|
|
142
157
|
},
|
|
143
158
|
ephemeralInventories: [],
|
|
144
|
-
isParentNodeOnline: state === State.ONLINE,
|
|
145
159
|
},
|
|
146
160
|
} as AssemblyType<Assemblies.SmartStorageUnit>;
|
|
147
161
|
|
|
148
162
|
case Assemblies.SmartTurret:
|
|
149
163
|
return {
|
|
150
164
|
...baseAssembly,
|
|
151
|
-
turret: {
|
|
152
|
-
isParentNodeOnline: state === State.ONLINE,
|
|
153
|
-
},
|
|
165
|
+
turret: {},
|
|
154
166
|
} as AssemblyType<Assemblies.SmartTurret>;
|
|
155
167
|
|
|
156
168
|
case Assemblies.SmartGate:
|
|
157
169
|
return {
|
|
158
170
|
...baseAssembly,
|
|
159
171
|
gate: {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
inRange: [],
|
|
163
|
-
isParentNodeOnline: state === State.ONLINE,
|
|
172
|
+
destinationId: rawData.linked_gate_id,
|
|
173
|
+
destinationGate: options?.destinationGate,
|
|
164
174
|
},
|
|
165
175
|
} as AssemblyType<Assemblies.SmartGate>;
|
|
166
176
|
|
|
167
177
|
case Assemblies.NetworkNode:
|
|
178
|
+
const energyConfig = await getEnergyConfig();
|
|
168
179
|
// TODO: Batch this call so that it can fetch all assemblies at once
|
|
169
180
|
const linkedAssemblies: SmartAssemblyResponse[] = await Promise.all(
|
|
170
181
|
(rawData.connected_assembly_ids || []).map(async (id) => {
|
|
@@ -177,12 +188,13 @@ export async function transformToAssembly(
|
|
|
177
188
|
parseInt(assemblyJson?.type_id || "0", 10),
|
|
178
189
|
);
|
|
179
190
|
|
|
191
|
+
const linkedTypeId = parseInt(assemblyJson?.type_id || "0", 10);
|
|
180
192
|
return {
|
|
181
193
|
id,
|
|
182
194
|
item_id: parseInt(assemblyJson?.key?.item_id || "0", 10),
|
|
183
195
|
state: parseStatus(assemblyJson?.status?.status?.["@variant"]),
|
|
184
|
-
energyUsage: 0,
|
|
185
|
-
typeId:
|
|
196
|
+
energyUsage: energyConfig[linkedTypeId] ?? 0,
|
|
197
|
+
typeId: linkedTypeId,
|
|
186
198
|
name: assemblyJson?.metadata?.name || "",
|
|
187
199
|
type: getAssemblyType(assemblyJson?.type_id || ""),
|
|
188
200
|
typeDetails: typeDetails,
|
|
@@ -194,7 +206,7 @@ export async function transformToAssembly(
|
|
|
194
206
|
...baseAssembly,
|
|
195
207
|
networkNode: {
|
|
196
208
|
fuel: {
|
|
197
|
-
|
|
209
|
+
burnTimeInMs: parseInt(rawData.fuel?.burn_rate_in_ms || "0", 10),
|
|
198
210
|
burnStartTime: parseInt(rawData.fuel?.burn_start_time || "0", 10),
|
|
199
211
|
isBurning: rawData.fuel?.is_burning || false,
|
|
200
212
|
lastUpdated: parseInt(rawData.fuel?.last_updated || "0", 10),
|
|
@@ -240,18 +252,9 @@ export async function transformToAssembly(
|
|
|
240
252
|
} as AssemblyType<Assemblies.Refinery>;
|
|
241
253
|
|
|
242
254
|
default:
|
|
243
|
-
// Default to
|
|
255
|
+
// Default to Assembly
|
|
244
256
|
return {
|
|
245
257
|
...baseAssembly,
|
|
246
|
-
|
|
247
|
-
mainInventory: {
|
|
248
|
-
capacity: "0",
|
|
249
|
-
usedCapacity: "0",
|
|
250
|
-
items: [],
|
|
251
|
-
},
|
|
252
|
-
ephemeralInventories: [],
|
|
253
|
-
isParentNodeOnline: state === State.ONLINE,
|
|
254
|
-
},
|
|
255
|
-
} as AssemblyType<Assemblies.SmartStorageUnit>;
|
|
258
|
+
} as AssemblyType<Assemblies.Assembly>;
|
|
256
259
|
}
|
|
257
260
|
}
|
package/vite-env.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ interface ImportMetaEnv {
|
|
|
5
5
|
readonly VITE_SUI_GRAPHQL_ENDPOINT: string;
|
|
6
6
|
/** EVE World package ID on Sui (required) */
|
|
7
7
|
readonly VITE_EVE_WORLD_PACKAGE_ID: string;
|
|
8
|
-
/** Optional smart assembly
|
|
9
|
-
readonly
|
|
8
|
+
/** Optional smart assembly Sui object ID override */
|
|
9
|
+
readonly VITE_OBJECT_ID?: string;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
interface ImportMeta {
|
package/wallet/features.ts
CHANGED
|
@@ -42,8 +42,6 @@ export interface SponsoredTransactionInput {
|
|
|
42
42
|
assemblyType: SponsoredTransactionAssemblyType;
|
|
43
43
|
/** The Sui chain to execute on (e.g., "sui:testnet", "sui:mainnet") */
|
|
44
44
|
chain: `sui:${string}`;
|
|
45
|
-
/** Additional properties */
|
|
46
|
-
[key: string]: unknown;
|
|
47
45
|
}
|
|
48
46
|
|
|
49
47
|
/** Sponsored tx args with assembly object; id and assemblyType are derived. Tenant is optional; the hook resolves it from args, URL query param, or default. */
|
|
@@ -54,6 +52,13 @@ export type SponsoredTransactionArgs = Omit<
|
|
|
54
52
|
assembly: AssemblyType<Assemblies>;
|
|
55
53
|
account?: string;
|
|
56
54
|
tenant?: string;
|
|
55
|
+
txAction: SponsoredTransactionActions;
|
|
56
|
+
metadata?: {
|
|
57
|
+
name: string;
|
|
58
|
+
description: string;
|
|
59
|
+
dappURL: string;
|
|
60
|
+
};
|
|
61
|
+
chain: `sui:${string}`;
|
|
57
62
|
};
|
|
58
63
|
|
|
59
64
|
/**
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>GameTypeResponse | @evefrontier/dapp-kit - v0.1.1</title><meta name="description" content="Documentation for @evefrontier/dapp-kit"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@evefrontier/dapp-kit - v0.1.1</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">GameTypeResponse</a></li></ul><h1>Interface GameTypeResponse</h1></div><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">GameTypeResponse</span> <span class="tsd-signature-symbol">{</span><br/> <a class="tsd-kind-property" href="#categoryid">categoryId</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#categoryname">categoryName</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#description">description</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#groupid">groupId</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#groupname">groupName</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#iconurl">iconUrl</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#id">id</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#mass">mass</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#name">name</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#portionsize">portionSize</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#radius">radius</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/> <a class="tsd-kind-property" href="#volume">volume</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L155">types/worldApiReturnTypes.ts:155</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Properties</h3><div class="tsd-index-list"><a href="#categoryid" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>category<wbr/>Id</span></a>
|
|
2
|
-
<a href="#categoryname" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>category<wbr/>Name</span></a>
|
|
3
|
-
<a href="#description" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>description</span></a>
|
|
4
|
-
<a href="#groupid" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>group<wbr/>Id</span></a>
|
|
5
|
-
<a href="#groupname" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>group<wbr/>Name</span></a>
|
|
6
|
-
<a href="#iconurl" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>icon<wbr/>Url</span></a>
|
|
7
|
-
<a href="#id" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>id</span></a>
|
|
8
|
-
<a href="#mass" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mass</span></a>
|
|
9
|
-
<a href="#name" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>name</span></a>
|
|
10
|
-
<a href="#portionsize" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>portion<wbr/>Size</span></a>
|
|
11
|
-
<a href="#radius" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>radius</span></a>
|
|
12
|
-
<a href="#volume" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>volume</span></a>
|
|
13
|
-
</div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h2>Properties</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="categoryid"><span>category<wbr/>Id</span><a href="#categoryid" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">categoryId</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L156">types/worldApiReturnTypes.ts:156</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="categoryname"><span>category<wbr/>Name</span><a href="#categoryname" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">categoryName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L157">types/worldApiReturnTypes.ts:157</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="description"><span>description</span><a href="#description" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">description</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L158">types/worldApiReturnTypes.ts:158</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="groupid"><span>group<wbr/>Id</span><a href="#groupid" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">groupId</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L159">types/worldApiReturnTypes.ts:159</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="groupname"><span>group<wbr/>Name</span><a href="#groupname" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">groupName</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L160">types/worldApiReturnTypes.ts:160</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="iconurl"><span>icon<wbr/>Url</span><a href="#iconurl" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">iconUrl</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L161">types/worldApiReturnTypes.ts:161</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="id"><span>id</span><a href="#id" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">id</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L162">types/worldApiReturnTypes.ts:162</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="mass"><span>mass</span><a href="#mass" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">mass</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L163">types/worldApiReturnTypes.ts:163</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="name"><span>name</span><a href="#name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">name</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L164">types/worldApiReturnTypes.ts:164</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="portionsize"><span>portion<wbr/>Size</span><a href="#portionsize" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">portionSize</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L165">types/worldApiReturnTypes.ts:165</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="radius"><span>radius</span><a href="#radius" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">radius</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L166">types/worldApiReturnTypes.ts:166</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="volume"><span>volume</span><a href="#volume" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">volume</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">number</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/evefrontier/eve-frontier-dapps/blob/c9a9e7b2be3286aab0f8dd4a613f019466e59829/packages/libs/dapp-kit/types/worldApiReturnTypes.ts#L167">types/worldApiReturnTypes.ts:167</a></li></ul></aside></section></section></details></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Properties"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>Properties</summary><div><a href="#categoryid"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>category<wbr/>Id</span></a><a href="#categoryname"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>category<wbr/>Name</span></a><a href="#description"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>description</span></a><a href="#groupid"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>group<wbr/>Id</span></a><a href="#groupname"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>group<wbr/>Name</span></a><a href="#iconurl"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>icon<wbr/>Url</span></a><a href="#id"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>id</span></a><a href="#mass"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>mass</span></a><a href="#name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>name</span></a><a href="#portionsize"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>portion<wbr/>Size</span></a><a href="#radius"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>radius</span></a><a href="#volume"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../assets/icons.svg#icon-1024"></use></svg><span>volume</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">@evefrontier/dapp-kit - v0.1.1</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|