UNPKG

@pelican.ts/sdk

Version:

Pelican panel SDK for TypeScript

827 lines (787 loc) 27.9 kB
import { AxiosInstance } from 'axios'; import WebSocket from 'isomorphic-ws'; type FileObject = { name: string; mode: string; mode_bits: string; size: number; is_file: boolean; is_symlink: boolean; mimetype: string; created_at: string; modified_at: string; }; type GenericResponse<T, N extends string = string, M = undefined> = { object: N; attributes: T; meta?: M; }; type PaginationMeta = { total: number; count: number; per_page: number; current_page: number; total_pages: number; links: any; }; type GenericListResponse<T> = { object: "list"; data: T[]; meta?: { pagination: PaginationMeta; }; }; type CustomListResponse<T, M> = { object: "list"; data: T[]; meta?: M; }; type ServerDatabase$1 = { id: string; host: { address: string; port: number; }; name: string; username: string; connections_from: string; max_connections: number; relationships?: { password: GenericResponse<{ password: string; }, "database_password">; }; }; type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>; type Nullable<T> = T | null; type ServerBackup$1 = { uuid: string; is_successful: boolean; is_locked: boolean; name: string; ignored_files: string[]; checksum: Nullable<string>; bytes: number; created_at: string; completed_at: Nullable<string>; }; type ServerSignalOption = "start" | "stop" | "restart" | "kill"; type ServerLimits = { memory: number; swap: number; disk: number; io: number; cpu: number; threads: Nullable<number | string>; oom_disabled: boolean; oom_killer: boolean; }; type FeatureLimits = { databases: number; allocations: number; backups: number; }; type StartupParams = { name: string; description: string; env_variables: string; default_value: string; server_value: string; is_editable: boolean; rules: string; }; type StartupMeta = { startup_command: string; raw_startup_command: string; }; type Schedule = { id: number; name: string; cron: { day_of_week: string; day_of_month: string; hour: string; minute: string; }; is_active: boolean; is_processing: boolean; only_when_online: boolean; last_run_at: Nullable<string>; next_run_at: string; created_at: string; updated_at: string; relationships: { tasks: GenericListResponse<GenericResponse<ScheduleTask, "schedule_task">>; }; }; type ScheduleTask = { id: number; sequence_id: number; action: "command" | "power" | "backup" | "delete_files"; payload: string; time_offset: number; is_queued: boolean; continue_on_failure: boolean; created_at: string; updated_at: Nullable<string>; }; type EggVariable = { name: string; description: string; env_variable: string; default_value: string; server_value: string; is_editable: boolean; rules: string; }; type ServerSubuser = { uuid: string; username: string; email: string; language: string; image: string; admin: false; root_admin: false; "2fa_enabled": boolean; created_at: string; permissions: SubuserPermission[] | string[]; }; type SubuserPermission = "activity.read" | "allocation.create" | "allocation.delete" | "allocation.read" | "allocation.update" | "backup.create" | "backup.delete" | "backup.download" | "backup.read" | "backup.restore" | "control.console" | "control.restart" | "control.start" | "control.stop" | "database.create" | "database.delete" | "database.read" | "database.update" | "database.view-password" | "file.archive" | "file.create" | "file.delete" | "file.read" | "file.read-content" | "file.sftp" | "file.update" | "schedule.create" | "schedule.delete" | "schedule.read" | "schedule.update" | "settings.description" | "settings.reinstall" | "settings.rename" | "startup.docker-image" | "startup.read" | "startup.update" | "user.create" | "user.delete" | "user.read" | "user.update" | "websocket.connect"; type ServerAllocation$1 = { id: number; ip: string; ip_alias: Nullable<string>; port: number; notes: Nullable<string>; is_default: boolean; }; type Server$1 = { server_owner: boolean; identifier: string; internal_id?: number; uuid: string; name: string; node: string; is_node_under_maintenance: boolean; sftp_details: { ip: string; alias: Nullable<string>; port: number; }; description: string; limits: ServerLimits; invocation: string; docker_image: string; egg_features: Nullable<string[]>; feature_limits: FeatureLimits; status: Nullable<unknown>; is_suspended: boolean; is_installing: boolean; is_transferring: boolean; relationships: { allocations: GenericListResponse<GenericResponse<ServerAllocation$1, "allocation">>; variables: GenericListResponse<GenericResponse<EggVariable, "egg_variable">>; egg?: GenericResponse<{ uuid: string; name: string; }, "egg">; subusers?: GenericListResponse<GenericResponse<ServerSubuser, "server_subuser">>; }; }; type ServerStats = { current_state: "installing" | "install_failed" | "reinstall_failed" | "suspended" | "restoring_backup" | "running" | "stopped" | "offline"; is_suspended: boolean; resources: ServerResources; }; type ServerResources = { memory_bytes: number; cpu_absolute: number; disk_bytes: number; network_tx_bytes: number; network_rx_bytes: number; uptime: number; }; type ServerActivityLog = { id: string; event: string; is_api: boolean; ip: string; description: Nullable<string>; properties: Record<string, string>; has_additional_metadata: boolean; timestamp: string; }; type User = { uuid: string; username: string; email: string; language: string; image: string; admin: boolean; root_admin: boolean; "2fa_enabled": boolean; created_at: string; updated_at: string; }; type APIKey = { identifier: string; description: string; allowed_ips: string[]; last_used_at: Nullable<string>; created_at: string; }; type SSHKey = { name: string; fingerprint: string; pubic_key: string; created_at: string; }; type Permission = { description: string; keys: Record<string, string>; }; type SocketEventPayloadMap = { [SOCKET_EVENT.AUTH_SUCCESS]: undefined; [SOCKET_EVENT.STATUS]: PowerState; [SOCKET_EVENT.CONSOLE_OUTPUT]: string; [SOCKET_EVENT.STATS]: StatsWsJson; [SOCKET_EVENT.DAEMON_ERROR]: undefined; [SOCKET_EVENT.DAEMON_MESSAGE]: string; [SOCKET_EVENT.INSTALL_OUTPUT]: string; [SOCKET_EVENT.INSTALL_STARTED]: undefined; [SOCKET_EVENT.INSTALL_COMPLETED]: undefined; [SOCKET_EVENT.TRANSFER_LOGS]: string; [SOCKET_EVENT.TRANSFER_STATUS]: string; [SOCKET_EVENT.BACKUP_COMPLETED]: BackupCompletedJson; [SOCKET_EVENT.BACKUP_RESTORE_COMPLETED]: undefined; [SOCKET_EVENT.TOKEN_EXPIRING]: undefined; [SOCKET_EVENT.TOKEN_EXPIRED]: undefined; [SOCKET_EVENT.JWT_ERROR]: string; }; type Listener<E extends SOCKET_EVENT> = SocketEventPayloadMap[E] extends undefined ? () => void : (payload: SocketEventPayloadMap[E]) => void; type CloseEventLike = Parameters<NonNullable<WebSocket["onclose"]>>[0]; type ErrorEventLike = Parameters<NonNullable<WebSocket["onerror"]>>[0]; declare class ServerWebsocket { private readonly r; private readonly serverId; private socket?; private currentToken?; private readonly bus; private debugLogging; private stripColors; private detachMessageListener?; constructor(requester: AxiosInstance, id: string, stripColors?: boolean); on<E extends SOCKET_EVENT>(event: E, listener: Listener<E>): () => void; deregister<E extends SOCKET_EVENT>(event: E, listener: Listener<E>): void; private emit; connect(resumable?: boolean, debugLogging?: boolean): Promise<void>; onSocketDisconnect(handler: (event: CloseEventLike) => void): void; onSocketError(handler: (event: ErrorEventLike) => void): void; makeResumable(disconnectsToo: boolean): void; private attachMessageListener; private handleIncomingMessage; private parseMessage; private normalisePayload; private dispatchMessage; private refreshCredentials; private authenticate; disconnect(): void; requestStats(): void; requestLogs(): void; private send; getStats(): Promise<StatsWsJson>; getLogs(): Promise<string[]>; sendPoweraction(action: ServerSignalOption): void; sendCommand(cmd: string): void; } /** * Source: https://github.com/pterodactyl/panel/blob/1.0-develop/resources/scripts/components/server/events.ts */ declare enum SOCKET_EVENT { AUTH_SUCCESS = "auth success", DAEMON_MESSAGE = "daemon message", DAEMON_ERROR = "daemon error", INSTALL_OUTPUT = "install output", INSTALL_STARTED = "install started", INSTALL_COMPLETED = "install completed", CONSOLE_OUTPUT = "console output", STATUS = "status", STATS = "stats", TRANSFER_LOGS = "transfer logs", TRANSFER_STATUS = "transfer status", BACKUP_COMPLETED = "backup completed", BACKUP_RESTORE_COMPLETED = "backup restore completed", TOKEN_EXPIRING = "token expiring", TOKEN_EXPIRED = "token expired", JWT_ERROR = "jwt error" } type BackupCompletedJson = { checksum: string; checksum_type: "sha1"; file_size: number; is_successful: boolean; uuid: string; }; type PowerState = "starting" | "stopping" | "running" | "offline"; type StatsWsJson = { memory_bytes: number; memory_limit_bytes: number; cpu_absolute: number; network: { rx_bytes: number; tx_bytes: number; }; state: PowerState; uptime: number; disk_bytes: number; }; declare class Account$1 { private readonly r; constructor(requester: AxiosInstance); info: () => Promise<User>; updateEmail: (newEmail: string, password: string) => Promise<void>; updatePassword: (newPassword: string) => Promise<void>; apiKeys: { list: () => Promise<APIKey[]>; create: (description: string, allowed_ips?: string[]) => Promise<APIKey & { secret_token: string; }>; delete: (identifier: string) => Promise<void>; }; sshKeys: { list: () => Promise<SSHKey[]>; create: (name: string, public_key: string) => Promise<SSHKey>; delete: (fingerprint: string) => Promise<void>; }; } declare class ServerDatabases { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); list: (include?: "password"[], page?: number) => Promise<ServerDatabase$1[]>; create: (database: string, remote: string) => Promise<ServerDatabase$1>; rotatePassword: (database_id: string) => Promise<ServerDatabase$1>; delete: (database_id: string) => Promise<void>; } declare class ServerFiles { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); list: (path?: string) => Promise<FileObject[]>; /** * Return the contents of a file. To read binary file (non-editable) use {@link download} instead */ contents: (path: string) => Promise<string>; downloadGetUrl: (path: string) => Promise<string>; download: (path: string) => Promise<ArrayBuffer>; rename: (root: string | undefined, files: { from: string; to: string; }[]) => Promise<void>; copy: (location: string) => Promise<void>; write: (path: string, content: string) => Promise<void>; compress: (root: string | undefined, files: string[], archive_name?: string, extension?: "zip" | "tgz" | "tar.gz" | "txz" | "tar.xz" | "tbz2" | "tar.bz2") => Promise<FileObject>; decompress: (root: string | undefined, file: string) => Promise<void>; delete: (root: string | undefined, files: string[]) => Promise<void>; createFolder: (root: string | undefined, name: string) => Promise<void>; chmod: (root: string | undefined, files: Array<{ file: string; mode: number; }>) => Promise<void>; pullFromRemote: (url: string, directory?: string, filename?: string, // Unused use_header?: boolean, // Unused foreground?: boolean) => Promise<void>; uploadGetUrl: () => Promise<string>; upload: (file: File, root?: string) => Promise<void>; } declare class ServerSchedules { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); list: () => Promise<Schedule[]>; create: (params: ScheduleCreateParams) => Promise<Schedule>; control: (sched_id: number) => ScheduleControl; } type ScheduleCreateParams = { name: string; is_active?: boolean; only_when_online?: boolean; minute: string; hour: string; day_of_week: string; month: string; day_of_month: string; }; declare class ScheduleControl { private r; private readonly id; private readonly sched_id; constructor(requester: AxiosInstance, id: string, sched_id: number); info: () => Promise<Schedule>; update: (params: ScheduleCreateParams) => Promise<Schedule>; delete: () => Promise<void>; execute: () => Promise<void>; tasks: { create: (opts: PartialBy<Pick<ScheduleTask, "action" | "payload" | "time_offset" | "sequence_id" | "continue_on_failure">, "payload" | "sequence_id" | "continue_on_failure">) => Promise<ScheduleTask>; update: <T extends "command" | "power" | "backup" | "delete_files">(task_id: number, opts: PartialBy<Pick<ScheduleTask, "action" | "payload" | "time_offset" | "sequence_id" | "continue_on_failure">, "payload" | "sequence_id" | "continue_on_failure">) => Promise<ScheduleTask>; delete: (task_id: number) => Promise<void>; }; } declare class ServerAllocations { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); list: () => Promise<ServerAllocation$1[]>; autoAssign: () => Promise<ServerAllocation$1>; setNotes: (alloc_id: number, notes: string) => Promise<ServerAllocation$1>; setPrimary: (alloc_id: number) => Promise<ServerAllocation$1>; unassign: (alloc_id: number) => Promise<void>; } declare class ServerUsers { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); list: () => Promise<ServerSubuser[]>; create: (email: string, permissions: SubuserPermission[] | string[]) => Promise<ServerSubuser>; info: (user_uuid: string) => Promise<ServerSubuser>; update: (user_uuid: string, permissions: SubuserPermission[] | string[]) => Promise<ServerSubuser>; delete: (user_uuid: string) => Promise<void>; } declare class ServerBackups { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); list: (page?: number) => Promise<ServerBackup$1[]>; create: (args: { name?: string; is_locked: boolean; ignored_files: string[]; }) => Promise<ServerBackup$1>; info: (backup_uuid: string) => Promise<ServerBackup$1>; downloadGetUrl: (backup_uuid: string) => Promise<string>; download: (backup_uuid: string) => Promise<ArrayBuffer>; delete: (backup_uuid: string) => Promise<void>; rename: (backup_uuid: string, name: string) => Promise<void>; toggleLock: (backup_uuid: string) => Promise<void>; restore: (backup_uuid: string, truncate: boolean) => Promise<void>; } declare class ServerStartup { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); list: () => Promise<CustomListResponse<StartupParams, StartupMeta>>; set: (key: string, value: string) => Promise<StartupParams>; } declare class ServerSettings { private readonly r; private readonly id; constructor(requester: AxiosInstance, id: string); rename: (name: string) => Promise<void>; updateDescription: (description: Nullable<string>) => Promise<void>; reinstall: () => Promise<void>; changeDockerImage: (image: string) => Promise<void>; } declare class ServerActivity { private readonly r; private readonly id; constructor(r: AxiosInstance, id: string); list: (page?: number, per_page?: number) => Promise<ServerActivityLog[]>; } declare class ServerClient { private readonly r; private readonly id; activity: ServerActivity; databases: ServerDatabases; files: ServerFiles; schedules: ServerSchedules; allocations: ServerAllocations; users: ServerUsers; backups: ServerBackups; startup: ServerStartup; variables: ServerStartup; settings: ServerSettings; constructor(requester: AxiosInstance, id: string); info: (include?: ("egg" | "subusers")[]) => Promise<Server$1>; websocket: (stripColors?: boolean) => ServerWebsocket; resources: () => Promise<ServerStats>; command: (command: string) => Promise<void>; power: (signal: "start" | "stop" | "restart" | "kill") => Promise<void>; } declare class Client$1 { account: Account$1; private readonly r; constructor(requester: AxiosInstance); get $r(): AxiosInstance; listPermissions: () => Promise<Record<string, Permission>>; listServers: (type?: "accessible" | "mine" | "admin" | "admin-all", page?: number, per_page?: number, include?: ("egg" | "subusers")[]) => Promise<Server$1[]>; server: (uuid: string) => ServerClient; } declare class Account { private readonly client; readonly uuid: string; readonly username: string; private $email; get email(): string; readonly language: string; readonly image: string; readonly admin: boolean; readonly root_admin: boolean; private $has2faEnabled; get has2faEnabled(): boolean; readonly createdAt: Date; readonly updatedAt: Date; constructor(client: Client$1, user: User); updateEmail: (newEmail: string, password: string) => Promise<void>; updatePassword: (newPassword: string) => Promise<void>; listApiKeys: () => Promise<APIKey[]>; createApiKey: (description: string, allowed_ips?: string[]) => Promise<APIKey & { secret_token: string; }>; deleteApiKey: (identifier: string) => Promise<void>; listSshKeys: () => Promise<SSHKey[]>; createSshKey: (name: string, public_key: string) => Promise<SSHKey>; deleteSshKey: (fingerprint: string) => Promise<void>; } declare class ServerAllocation { private readonly client; readonly alias: Nullable<string>; readonly id: number; readonly ip: string; private $isDefault; get isDefault(): boolean; private $notes; get notes(): Nullable<string>; readonly port: number; constructor(client: ServerClient, alloc: ServerAllocation$1); setNotes: (notes: string) => Promise<void>; makeDefault: () => Promise<void>; unassign: () => Promise<void>; } declare class ServerBackup { private readonly client; readonly bytes: number; readonly checksum: Nullable<string>; readonly completedAt: Nullable<Date>; readonly createdAt: Date; readonly ignoredFiles: string[]; readonly isLocked: boolean; readonly isSuccessful: boolean; readonly name: string; readonly uuid: string; constructor(client: ServerClient, backup: ServerBackup$1); downloadGetUrl: () => Promise<string>; download: () => Promise<ArrayBuffer>; delete: () => Promise<void>; rename: (name: string) => Promise<void>; toggleLock: () => Promise<void>; restore: (truncate: boolean) => Promise<void>; } declare class ServerDatabase { private readonly client; readonly allowConnectionsFrom: string; readonly host: string; readonly port: number; readonly id: string; readonly maxConnections: number; readonly name: string; private $password?; get password(): string | undefined; readonly username: string; constructor(client: ServerClient, database: ServerDatabase$1); rotatePassword: () => Promise<void>; delete: () => Promise<void>; } declare class ServerFile { private readonly client; private readonly dir; private readonly path; readonly createdAt: Date; readonly isFile: boolean; readonly isSymlink: boolean; readonly mimetype: string; readonly mode: string; readonly modeBits: string; readonly modifiedAt: Date; readonly name: string; readonly size: number; constructor(client: ServerClient, file: FileObject, dir?: string); get isArchive(): boolean; /** * Return the contents of a file. To read binary file (non-editable) use {@link download} instead */ contents: () => Promise<string>; downloadGetUrl: () => Promise<string>; download: () => Promise<ArrayBuffer>; rename: (newName: string) => Promise<void>; copy: () => Promise<void>; write: (content: string) => Promise<void>; compress: (archive_name?: string, extension?: "zip" | "tgz" | "tar.gz" | "txz" | "tar.xz" | "tbz2" | "tar.bz2") => Promise<ServerFile>; decompress: () => Promise<void>; delete: () => Promise<void>; chmod: (mode: number) => Promise<void>; } declare class ServerSchedule { private readonly client; readonly createdAt: Date; private $cron; get cron(): { day_of_week: string; day_of_month: string; hour: string; minute: string; }; readonly id: number; private $isActive; get isActive(): boolean; private $isProcessing; get isProcessing(): boolean; readonly lastRunAt: Nullable<Date>; private $name; get name(): string; readonly nextRunAt: Date; private $onlyWhenOnline; get onlyWhenOnline(): boolean; readonly tasks: ServerScheduleTask[]; private $updatedAt; get updatedAt(): Date; constructor(client: ServerClient, schedule: Schedule); update: (opts: { name: string; is_active?: boolean; only_when_online?: boolean; minute: string; hour: string; day_of_week: string; month: string; day_of_month: string; }) => Promise<void>; delete: () => Promise<void>; execute: () => Promise<void>; } declare class ServerScheduleTask { private readonly client; private readonly scheduleId; private $action; get action(): "command" | "power" | "backup" | "delete_files"; private $continueOnFailure; get continueOnFailure(): boolean; readonly createdAt: Date; readonly id: number; private $isQueued; get isQueued(): boolean; private $payload; get payload(): string; private $sequenceId; get sequenceId(): number; private $timeOffset; get timeOffset(): number; private $updatedAt; get updatedAt(): Nullable<Date>; constructor(client: ServerClient, scheduleId: number, task: ScheduleTask); delete: () => Promise<void>; update: (opts: PartialBy<Pick<ScheduleTask, "action" | "payload" | "time_offset" | "sequence_id" | "continue_on_failure">, "payload" | "sequence_id" | "continue_on_failure">) => Promise<void>; } declare class ServerUser { private readonly client; readonly uuid: string; readonly username: string; readonly email: string; readonly language: string; readonly image: string; readonly admin: boolean; readonly root_admin: boolean; readonly has2faEnabled: boolean; readonly createdAt: Date; private $permissions; get permissions(): string[] | SubuserPermission[]; constructor(client: ServerClient, user: ServerSubuser); update: (permissions: SubuserPermission[] | string[]) => Promise<void>; delete: () => Promise<void>; } declare class Server { private readonly client; readonly ownsServer: boolean; readonly identifier: string; readonly internalId?: number; readonly uuid: string; private $name; get name(): string; readonly node: string; readonly isNodeUnderMaintenance: boolean; readonly sftp: { ip: string; alias: Nullable<string>; port: number; }; private $description; get description(): string; readonly limits: ServerLimits; readonly invocation: string; private $dockerImage; get dockerImage(): string; readonly eggFeatures: Nullable<string[]>; readonly featureLimits: FeatureLimits; readonly status: unknown; readonly isSuspended: boolean; readonly isInstalling: boolean; readonly isTransferring: boolean; readonly allocations: ServerAllocation[]; readonly variables: EggVariable[]; readonly egg?: { uuid: string; name: string; }; readonly subusers?: ServerUser[]; constructor(client: ServerClient, server: Server$1); rename: (name: string) => Promise<void>; updateDescription: (description: string) => Promise<void>; reinstall: () => Promise<void>; changeDockerImage: (image: string) => Promise<void>; getActivityLogs: (opts?: { page?: number; per_page?: number; }) => Promise<ServerActivityLog[]>; websocket: (stripColors?: boolean) => ServerWebsocket; getServerStats: () => Promise<ServerStats>; runCommand: (command: string) => Promise<void>; sendPowerSignal: (signal: "start" | "stop" | "restart" | "kill") => Promise<void>; getDatabases: (opts?: { include?: "password"[]; page?: number; }) => Promise<ServerDatabase[]>; createDatabase: (database: string, remote: string) => Promise<ServerDatabase>; getSchedules: () => Promise<ServerSchedule[]>; createSchedule: (...opts: Parameters<ServerSchedules["create"]>) => Promise<ServerSchedule>; getBackups: (page?: number) => Promise<ServerBackup[]>; createBackup: (...args: Parameters<ServerBackups["create"]>) => Promise<ServerBackup>; getAllocations: () => Promise<ServerAllocation[]>; createAllocation: () => Promise<ServerAllocation>; getFiles: (path?: string) => Promise<ServerFile[]>; createFolder: (...opts: Parameters<ServerFiles["createFolder"]>) => Promise<void>; uploadFile: (...opts: Parameters<ServerFiles["upload"]>) => Promise<void>; uploadFileGetUrl: (...opts: Parameters<ServerFiles["uploadGetUrl"]>) => Promise<string>; pullFileFromRemote: (...opts: Parameters<ServerFiles["pullFromRemote"]>) => Promise<void>; compressMultipleFiles: (...opts: Parameters<ServerFiles["compress"]>) => Promise<FileObject>; renameMultipleFiles: (...opts: Parameters<ServerFiles["rename"]>) => Promise<void>; deleteMultipleFiles: (...opts: Parameters<ServerFiles["delete"]>) => Promise<void>; getUsers: () => Promise<ServerUser[]>; createUser: (email: string, permissions: SubuserPermission[] | string[]) => Promise<ServerUser>; getStartupInfo: () => Promise<CustomListResponse<StartupParams, StartupMeta>>; setStartupVariable: (key: string, value: string) => Promise<StartupParams>; } declare class Client { private readonly client; constructor(client: Client$1); get $client(): Client$1; getAccount: () => Promise<Account>; listPermissions: () => Promise<Record<string, Permission>>; listServers: (opts?: { type?: "accessible" | "mine" | "admin" | "admin-all"; page?: number; per_page?: number; include?: ("egg" | "subusers")[]; }) => Promise<Server[]>; getServer: (uuid: string, include?: ("egg" | "subusers")[]) => Promise<Server>; } declare const createPelicanClient: (url: string, token: string, suffix?: string) => Client; export { Account, Client, Server, ServerAllocation, ServerBackup, ServerDatabase, ServerFile, ServerSchedule, ServerUser, createPelicanClient };