UNPKG

@gwigz/homunculus-core

Version:

A third-party framework for interacting with Linden Lab's virtual world "Second Life"

260 lines (259 loc) 10.7 kB
import { AsyncEventEmitter } from "@vladfrangu/async_event_emitter"; import { type AuthenticatorOptions, type ProxyOptions, Vector3 } from "./network"; import { Friends, Nearby, Region } from "./structures"; import { InstantMessages } from "./structures/instant-messages"; import { Regions } from "./structures/regions"; import { Self } from "./structures/self"; import { Constants } from "./utilities"; interface DebugHandlers { debug?: (message: string) => void; warn?: (warn: string) => void; error?: (error: Error) => void; } export interface ClientEvents { [Constants.ClientEvents.READY]: []; [Constants.ClientEvents.DEBUG]: [message: string]; [Constants.ClientEvents.ERROR]: [error: Error]; [Constants.ClientEvents.WARN]: [warning: string]; [Constants.ClientEvents.CONNECTING]: []; [Constants.ClientEvents.RECONNECTING]: []; [Constants.ClientEvents.DISCONNECTING]: []; [Constants.ClientEvents.DISCONNECTED]: []; } /** * The starting point for the Homunculus client. */ export declare class Client extends AsyncEventEmitter<ClientEvents> { /** * Contains values relating to your own avatar. */ get self(): Self; set self(value: Self); /** * Regions we are currently connected to, or recently have been. */ readonly regions: Regions; /** * Friends interface. */ readonly friends: Friends; /** * Instant messaging interface. */ readonly instantMessages: InstantMessages; /** * Local communication interface. */ readonly nearby: Nearby; /** * The Region representing the current region, as in the region that this * agent is standing within. * * @note Once teleporting is functional this value will be overwritten with a * new object. Always use `client.region` rather than storing a reference to * this value. */ get region(): Region; /** * The Parcel representing the current parcel, as in the parcel that this * agent is standing within. * * @note This value changes with movement or parcel updates. Always use * `client.parcel` rather than storing a reference to this value. */ get parcel(): import("./types").Parcel | undefined; get status(): number; private readonly _core; private _self?; constructor(options?: { logger?: DebugHandlers | false; proxy?: ProxyOptions; } | undefined); /** * The Parcel representing the current parcel, as in the parcel that this * agent is standing within. */ /** * @param [options.login.start] `home`, `last`, or alternatively use `uri:Region Name&x&y&z`. */ connect(options?: AuthenticatorOptions): Promise<{ login: true; circuitCode: number; simIp: string; simPort: number; regionX: number; regionY: number; agentId: string; sessionId: string; firstName: string; lastName: string; agentAccess?: string | undefined; message?: string | undefined; maxAgentGroups?: number | undefined; openidUrl?: string | undefined; openidToken?: string | undefined; cofVersion?: number | undefined; agentAppearanceService?: string | undefined; inventoryRoot?: { folderId?: string | undefined; }[] | undefined; inventorySkeleton?: { name?: string | undefined; folderId?: string | undefined; parentId?: string | undefined; typeDefault?: number | undefined; version?: number | undefined; }[] | undefined; agentAccessMax?: string | undefined; agentRegionAccess?: string | undefined; premiumPackages?: Record<string, { benefits: { animatedObjectLimit?: number | undefined; animationUploadCost?: number | undefined; attachmentLimit?: number | undefined; betaGridLand?: number | undefined; createGroupCost?: number | undefined; createRepeatingEvents?: number | undefined; estateAccessToken?: string | undefined; gridwideExperienceLimit?: number | undefined; groupMembershipLimit?: number | undefined; landAuctionsAllowed?: number | undefined; lastnameChangeAllowed?: number | undefined; lastnameChangeCost?: number | undefined; lastnameChangeRate?: number | undefined; lindenBuyFee?: number | undefined; lindenHomes?: string[] | undefined; liveChat?: number | undefined; localExperiences?: number | undefined; mainlandTier?: number | undefined; marketplaceConciergeSupport?: number | undefined; marketplaceListingLimit?: number | undefined; marketplacePleLimit?: number | undefined; meshUploadCost?: number | undefined; objectAccountLevel?: number | undefined; oneTimeEventAllowed?: number | undefined; oneTimeEventCost?: number | undefined; partnerFee?: number | undefined; phoneSupport?: number | undefined; picksLimit?: number | undefined; placePages?: { additionalListingCost?: number | undefined; numFreeListings?: number | undefined; } | undefined; premiumAccess?: number | undefined; premiumAlts?: number | undefined; premiumGifts?: number | undefined; priorityEntry?: number | undefined; repeatingEventsCost?: number | undefined; scriptLimit?: number | undefined; signupBonus?: number | undefined; soundUploadCost?: number | undefined; stipend?: number | undefined; storedImLimit?: number | undefined; largeTextureUploadCost?: number[] | undefined; textureUploadCost?: number | undefined; transactionHistoryLimit?: number | undefined; unpartnerFee?: number | undefined; useAnimesh?: number | undefined; voiceMorphing?: number | undefined; }; description: { name?: Record<string, string> | undefined; }; }> | undefined; buddyList?: { buddyId?: string | undefined; buddyRightsHas?: number | undefined; buddyRightsGiven?: number | undefined; }[] | undefined; mapServerUrl?: string | undefined; loginFlags?: { stipendSinceLogin?: string | undefined; everLoggedIn?: string | undefined; gendered?: string | undefined; daylightSavings?: string | undefined; }[] | undefined; udpBlacklist?: string[] | undefined; accountLevelBenefits?: { animatedObjectLimit?: number | undefined; animationUploadCost?: number | undefined; attachmentLimit?: number | undefined; betaGridLand?: number | undefined; createGroupCost?: number | undefined; createRepeatingEvents?: number | undefined; estateAccessToken?: string | undefined; gridwideExperienceLimit?: number | undefined; groupMembershipLimit?: number | undefined; landAuctionsAllowed?: number | undefined; lastnameChangeAllowed?: number | undefined; lastnameChangeCost?: number | undefined; lastnameChangeRate?: number | undefined; lindenBuyFee?: number | undefined; lindenHomes?: string[] | undefined; liveChat?: number | undefined; localExperiences?: number | undefined; mainlandTier?: number | undefined; marketplaceConciergeSupport?: number | undefined; marketplaceListingLimit?: number | undefined; marketplacePleLimit?: number | undefined; meshUploadCost?: number | undefined; objectAccountLevel?: number | undefined; oneTimeEventAllowed?: number | undefined; oneTimeEventCost?: number | undefined; partnerFee?: number | undefined; phoneSupport?: number | undefined; picksLimit?: number | undefined; placePages?: { additionalListingCost?: number | undefined; numFreeListings?: number | undefined; } | undefined; premiumAccess?: number | undefined; premiumAlts?: number | undefined; premiumGifts?: number | undefined; priorityEntry?: number | undefined; repeatingEventsCost?: number | undefined; scriptLimit?: number | undefined; signupBonus?: number | undefined; soundUploadCost?: number | undefined; stipend?: number | undefined; storedImLimit?: number | undefined; largeTextureUploadCost?: number[] | undefined; textureUploadCost?: number | undefined; transactionHistoryLimit?: number | undefined; unpartnerFee?: number | undefined; useAnimesh?: number | undefined; voiceMorphing?: number | undefined; } | undefined; accountType?: string | undefined; lindenStatusCode?: string | undefined; agentFlags?: number | undefined; maxGodLevel?: number | undefined; godLevel?: number | undefined; lookAt?: Vector3 | undefined; homeInfo?: { regionHandle?: string | undefined; position?: Vector3 | undefined; lookAt?: Vector3 | undefined; } | undefined; home?: string | undefined; secondsSinceEpoch?: number | undefined; secureSessionId?: string | undefined; seedCapability?: string | undefined; startLocation?: string | undefined; }>; /** * Sends Packet (or multiple) to currently active Circuit. * * @param packets Packets to send */ send(...args: Parameters<NonNullable<typeof this._core.circuit>["send"]>): void; /** * Sends Packet (or multiple) to currently active Circuit. * * @param packets Packets to send * @param timeout Timeout for reliable packets */ sendReliable(...args: Parameters<NonNullable<typeof this._core.circuit>["sendReliable"]>): Promise<void[]>; disconnect(): Promise<void>; } export {};