///
///
///
///
import { EventEmitter } from 'events';
import Web3Api from './generated/web3Api';
import SolanaApi from './generated/solanaApi';
declare enum ErrorCode {
OTHER_CAUSE = -1,
INTERNAL_SERVER_ERROR = 1,
CONNECTION_FAILED = 100,
OBJECT_NOT_FOUND = 101,
INVALID_QUERY = 102,
INVALID_CLASS_NAME = 103,
MISSING_OBJECT_ID = 104,
INVALID_KEY_NAME = 105,
INVALID_POINTER = 106,
INVALID_JSON = 107,
COMMAND_UNAVAILABLE = 108,
NOT_INITIALIZED = 109,
INCORRECT_TYPE = 111,
INVALID_CHANNEL_NAME = 112,
PUSH_MISCONFIGURED = 115,
OBJECT_TOO_LARGE = 116,
OPERATION_FORBIDDEN = 119,
CACHE_MISS = 120,
INVALID_NESTED_KEY = 121,
INVALID_FILE_NAME = 122,
INVALID_ACL = 123,
TIMEOUT = 124,
INVALID_EMAIL_ADDRESS = 125,
MISSING_CONTENT_TYPE = 126,
MISSING_CONTENT_LENGTH = 127,
INVALID_CONTENT_LENGTH = 128,
FILE_TOO_LARGE = 129,
FILE_SAVE_ERROR = 130,
DUPLICATE_VALUE = 137,
INVALID_ROLE_NAME = 139,
EXCEEDED_QUOTA = 140,
SCRIPT_FAILED = 141,
VALIDATION_ERROR = 142,
INVALID_IMAGE_DATA = 150,
UNSAVED_FILE_ERROR = 151,
INVALID_PUSH_TIME_ERROR = 152,
FILE_DELETE_ERROR = 153,
REQUEST_LIMIT_EXCEEDED = 155,
INVALID_EVENT_NAME = 160,
USERNAME_MISSING = 200,
PASSWORD_MISSING = 201,
USERNAME_TAKEN = 202,
EMAIL_TAKEN = 203,
EMAIL_MISSING = 204,
EMAIL_NOT_FOUND = 205,
SESSION_MISSING = 206,
MUST_CREATE_USER_THROUGH_SIGNUP = 207,
ACCOUNT_ALREADY_LINKED = 208,
INVALID_SESSION_TOKEN = 209,
LINKED_ID_MISSING = 250,
INVALID_LINKED_SESSION = 251,
UNSUPPORTED_SERVICE = 252,
AGGREGATE_ERROR = 600,
FILE_READ_ERROR = 601,
X_DOMAIN_REQUEST = 602,
}
declare enum EChains {
ETH_MAINNET = '0x1',
ETH_ROPSTEN = '0x3',
ETH_GOERLI = '0x5',
ETH_KOVAN = '0x2a',
ETH_RINKEBY = '0x4',
ETH_LOCALDEVCHAIN = '0x539',
POLYGON_MAINNET = '0x89',
POLYGON_MUMBAI = '0x13881',
BSC_MAINNET = '0x38',
BSC_TESTNET = '0x61',
AVAX_MAINNET = '0xa86a',
AVAX_TESTNET = '0xa869',
FANTOM_MAINNET = '0xfa',
CRONOS_MAINNET = '0x19',
CRONOS_TESTNET = '0x152',
}
export namespace Moralis {
type EthersWeb3Provider = import('ethers').providers.Web3Provider;
type EthersExternalProvider = import('ethers').providers.ExternalProvider;
type EthersTransaction = import('ethers').Transaction;
type EthersResult = import('ethers/lib/utils').Result;
type EthersLibrary = typeof import('ethers').ethers;
let applicationId: string;
let javaScriptKey: string | undefined;
let liveQueryServerURL: string;
let masterKey: string | undefined;
let serverAuthToken: string | undefined;
let serverAuthType: string | undefined;
let serverURL: string;
let secret: string;
let encryptedUser: boolean;
let isInitialized: boolean;
let Plugins: Record;
let Chains: IChains;
interface PluginSpecs {
name: string;
functions: string[];
}
interface StartOptions {
serverUrl?: string;
appId?: string;
moralisSecret?: string;
plugins?: PluginSpecs[];
javascriptKey?: string;
masterKey?: string;
disableVersionCheck?: boolean;
}
let start: (options: StartOptions) => Promise;
interface BatchSizeOption {
batchSize?: number;
}
interface CascadeSaveOption {
/** If `false`, nested objects will not be saved (default is `true`). */
cascadeSave?: boolean;
}
interface SuccessOption {
success?: Function;
}
interface ErrorOption {
error?: Function;
}
interface FullOptions {
success?: Function;
error?: Function;
useMasterKey?: boolean;
sessionToken?: string;
installationId?: string;
progress?: Function;
}
interface FileSaveOptions extends FullOptions {
ipfs?: boolean;
}
interface RequestOptions {
useMasterKey?: boolean;
sessionToken?: string;
installationId?: string;
batchSize?: number;
include?: string | string[];
progress?: Function;
}
interface SuccessFailureOptions extends SuccessOption, ErrorOption {}
interface SignUpOptions {
useMasterKey?: boolean;
installationId?: string;
}
interface SessionTokenOption {
sessionToken?: string;
}
interface WaitOption {
/**
* Set to true to wait for the server to confirm success
* before triggering an event.
*/
wait?: boolean;
}
interface UseMasterKeyOption {
/**
* In Cloud Code and Node only, causes the Master Key to be used for this request.
*/
useMasterKey?: boolean;
}
interface ScopeOptions extends SessionTokenOption, UseMasterKeyOption {}
interface SilentOption {
/**
* Set to true to avoid firing the event.
*/
silent?: boolean;
}
interface Pointer {
__type: string;
className: string;
objectId: string;
}
interface AuthData {
[key: string]: any;
}
/**
* Interface declaration for Authentication Providers
* https://docs.moralis.io/Moralis-SDK-JS/api/master/AuthProvider.html
*/
interface AuthProvider {
/**
* Called when _linkWith isn't passed authData. Handle your own authentication here.
*/
authenticate: () => void;
/**
* (Optional) Called when service is unlinked. Handle any cleanup here.
*/
deauthenticate?: () => void;
/**
* Unique identifier for this Auth Provider.
*/
getAuthType: () => string;
/**
* Called when auth data is syncronized. Can be used to determine if authData is still valid
*/
restoreAuthentication: () => boolean;
}
interface BaseAttributes {
createdAt: Date;
objectId: string;
updatedAt: Date;
ACL: ACL;
}
interface JSONBaseAttributes {
createdAt: string;
objectId: string;
updatedAt: string;
}
// MoralisWeb3 types
let on: (eventName: string, listener: (args?: any) => void) => () => EventEmitter;
let off: EventEmitter['off'];
let once: EventEmitter['once'];
let removeListener: EventEmitter['removeListener'];
let addListener: EventEmitter['addListener'];
let removeAllListeners: EventEmitter['removeAllListeners'];
let web3: null | MoralisWeb3Provider;
let chainId: string | null;
let account: string | null;
let network: string | null;
let provider: unknown | null;
let connectorType: string | null;
let connector: any | null;
let getChainId: () => string | null;
let web3Library: EthersLibrary;
// Core functions
let enableWeb3: (options?: EnableOptions) => Promise;
let cleanup: () => Promise;
let authenticate: (options?: AuthenticationOptions) => Promise;
let link: (account: string, options?: LinkOptions) => Promise;
let unlink: (account: string) => Promise;
let deactivateWeb3: () => Promise;
let isWeb3Enabled: () => boolean;
let switchNetwork: (chainId: string | number) => Promise;
let addNetwork: (
chainId: string | number,
chainName: string,
currencyName: string,
currencySymbol: string,
rpcUrl: string,
blockExplorerUrl: string | null
) => Promise;
let isMetaMaskInstalled: () => Promise;
let transfer: (options: TransferOptions) => Promise;
let executeFunction: (options: ExecuteFunctionOptions) => Promise;
// Plugins
let initPlugins: (installedPlugins?: PluginSpecs[]) => Promise;
// Helper functions
let getWeb3Provider: (options: Pick) => Web3Provider;
let isDotAuth: (options: Pick) => boolean;
let isElrondAuth: (options: Pick) => boolean;
// Convenience functions
/** @deprecated use the functions from Moralis.Web3API instead */
let getAllERC20: (options: CommonConvenienceOptions) => Promise;
/** @deprecated use the functions from Moralis.Web3API instead */
let getERC20: (
options: CommonConvenienceOptions & {
symbol?: string;
tokenAddress?: string;
}
) => Promise;
/** @deprecated use the functions from Moralis.Web3API instead */
let getNFTs: (options: CommonConvenienceOptions) => Promise;
/** @deprecated use the functions from Moralis.Web3API instead */
let getNFTsCount: (options: CommonConvenienceOptions) => Promise;
/** @deprecated use the functions from Moralis.Web3API instead */
let getTransactions: (
options: CommonConvenienceOptions & { order?: SortOrder }
) => Promise;
/** @deprecated use the functions from Moralis.Web3API instead */
let getTransactionsCount: (options: CommonConvenienceOptions) => Promise;
// Eth listeners
let getSigningData: () => string;
let onAccountChanged: (callback: Web3AccountChangedEventCallback) => () => EventEmitter;
let onChainChanged: (callback: Web3ChainChangedEventCallback) => () => EventEmitter;
let onConnect: (callback: Web3ConnectEventCallback) => () => EventEmitter;
let onDisconnect: (callback: Web3DisconnectEventCallback) => () => EventEmitter;
let onWeb3Enabled: (callback: Web3EnabledEventCallback) => () => EventEmitter;
let onWeb3Deactivated: (callback: Web3DeactivatedEventCallback) => () => EventEmitter;
class CommonWeb3Provider {
activate: () => Promise;
deactivate: () => Promise;
}
class MoralisInjectedProvider extends CommonWeb3Provider {
type: 'injected';
}
class MoralisWalletConnectProvider extends CommonWeb3Provider {
type: 'WalletConnect';
}
type Web3ProviderType =
| 'metamask'
| 'walletconnect'
| 'walletConnect'
| 'wc'
| 'magicLink'
| 'web3Auth';
type AuthenticationType = 'evm' | 'dot' | 'polkadot' | 'kusama' | 'erd' | 'elrond' | 'sol';
type Web3Provider = MoralisWalletConnectProvider | MoralisInjectedProvider;
interface CommonEnableOptions {
// TODO: include proidr in specified connector interfaces as tyoe guard
provider?: Web3ProviderType;
connector?: Connector;
anyNetwork?: boolean;
}
interface WalletConnectWeb3ConnectorEnableOptions extends CommonEnableOptions {
projectId: string;
chainId?: number;
/**
* @see https://docs.walletconnect.com/2.0/web3modal/options
*/
qrModalOptions?: object;
newSession?: boolean;
rpcMap?: {
[chainId: string]: string;
};
}
interface NetworkWeb3ConnectorEnableOptions extends CommonEnableOptions {
urls?: Record;
chainId?: number;
privateKey?: string;
}
interface MagicWeb3ConnectorEnableOptions extends CommonEnableOptions {
email: string;
apiKey: string;
network: string;
newSession?: string;
// Optional options passed to loginWithMagicLink
showUI?: boolean;
redirectURI?: string;
// Optional options passed to new Magic creation
locale?: string;
extensions?: any;
testMode?: boolean;
endpoint?: string;
}
interface Web3AuthWeb3ConnectorEnableOptions extends CommonEnableOptions {
chainId?: number;
clientId: string;
theme?: string;
appLogo?: string;
loginMethodsOrder?: string[];
rpcTarget?: string;
displayName?: string;
blockExplorer?: string;
ticker?: string;
tickerName?: string;
}
interface Web3InjectedConnectorEnableOptions extends CommonEnableOptions {}
type EnableOptions =
| Web3InjectedConnectorEnableOptions
| WalletConnectWeb3ConnectorEnableOptions
| NetworkWeb3ConnectorEnableOptions
| MagicWeb3ConnectorEnableOptions
| Web3AuthWeb3ConnectorEnableOptions;
type AuthenticationOptions = EnableOptions & {
type?: AuthenticationType;
signingMessage?: string;
};
// type EnableOptions = Omit;
type LinkOptions = Object.SaveOptions;
type EthChain = 'eth' | 'mainnet' | '0x1';
type RopstenChain = 'testnet' | 'ropsten' | '0x3';
type RinkebyChain = 'rinkeby' | '0x4';
type GoerliChain = 'goerli' | '0x5';
type KovanChain = 'kovan' | '0x2a';
type BscChain = 'bsc' | 'binance' | 'binance smart chain' | '0x38';
type BscTestChain = 'bsc testnet' | 'binance testnet' | 'binance smart chain testnet' | '0x61';
type PolygonChain = 'matic' | 'polygon' | '0x89';
type MumbaiChain = 'mumbai' | 'matic testnet' | 'polygon testnet' | '0x13881';
type FantomChain = 'fantom' | 'ftm' | '0xfa';
type AvalancheChain = 'avalanche' | 'avax' | '0xa86a';
type AvalancheTestChain = 'avalanche testnet' | 'avax testnet' | '0xa869' | 'fuji';
type ChronosChain = 'cro' | 'cronos' | 'cronos mainnet' | '0x19';
type ChronosTestChain = 'cro testnet' | 'cronos testnet' | 'cronos testnet' | '0x152';
type LocalDevChain = 'ganache' | 'hardhat' | 'localdevchain' | 'local devchain' | 'dev' | '0x539';
type Chain =
| EthChain
| RopstenChain
| RinkebyChain
| GoerliChain
| KovanChain
| BscChain
| BscTestChain
| PolygonChain
| MumbaiChain
| FantomChain
| AvalancheChain
| AvalancheTestChain
| ChronosChain
| ChronosTestChain
| LocalDevChain;
interface CommonConvenienceOptions {
chain?: Chain;
address?: string;
}
interface ERC20Result {
balance: string;
contractType?: 'ERC20';
decimals: number;
name: string | null;
symbol: string | null;
}
type SortOrder = 'asc' | 'desc';
type NFTContractType = 'ERC721' | 'ERC1155';
interface NFTResult {
amount: number;
contract_type: NFTContractType;
name: string | null;
symbol: string | null;
token_address: string;
token_id: string;
token_uri: string | null;
}
interface TransactionResult {
block_hash: string;
block_number: string;
block_timestamp: string;
from_address: string;
gas: string;
gas_price: string;
hash: string;
input: string;
nonce: string;
receipt_contract_address: string | null;
receipt_cumulative_gas_used: string;
receipt_gas_used: string;
receipt_root: string | null;
receipt_status: string;
to_address: string;
transaction_index: string;
value: string;
}
interface CountResult {
result: number;
}
type TransferType = 'native' | 'erc20' | 'erc721' | 'erc1155';
type TransferSystem = 'evm';
interface TransferOptions {
type?: TransferType;
receiver?: string;
contractAddress?: string;
/** @deprecated use contractAddress field instead */
contract_address?: string;
amount?: string;
tokenId?: number | string;
/** @deprecated use tokenId field instead */
token_id?: number | string;
system?: TransferSystem;
}
type TransferResult = EthersTransaction;
type ExecuteFunctionParams = Record;
interface ExecuteFunctionOptions {
contractAddress: string;
abi: object;
functionName: string;
msgValue?: string;
params?: ExecuteFunctionParams;
}
type ExecuteFunctionCallResult = EthersResult;
type ExecuteFunctionSendResult = EthersTransaction;
type ExecuteFunctionResult = ExecuteFunctionCallResult | ExecuteFunctionSendResult;
// ETH listeners
interface ConnectInfo {
chainId: string;
}
interface Connector {
type: string;
network: string;
account: null | string;
chainId: null | string;
activate: () => Promise<{
provider: Provider;
account?: string | null;
chainId?: string | null;
}>;
deactivate: () => Promise;
[key: string]: any;
}
type Provider = EthersExternalProvider;
interface EnableInfo {
chainId: null | string;
account: null | string;
connector: Connector;
provider: Provider;
web3: MoralisWeb3Provider;
}
interface DeactivateInfo {
connector: Connector;
provider: Provider;
}
interface ProviderRpcError extends Error {
message: string;
code: number;
data?: unknown;
}
interface ProviderMessage {
type: string;
data: unknown;
}
enum Web3Events {
CONNECT = 'connect',
DISCONNECT = 'disconnect',
ACCOUNTS_CHANGED = 'accountsChanged',
CHAIN_CHANGED = 'chainChanged',
MESSAGE = 'message',
}
enum EthereumEvents {
CONNECT = 'connect',
DISCONNECT = 'disconnect',
CHAIN_CHANGED = 'chainChanged',
ACCOUNTS_CHANGED = 'accountsChanged',
MESSAGE = 'message',
}
enum ConnectorEvents {
CONNECT = 'connect',
DISCONNECT = 'disconnect',
CHAIN_CHANGED = 'chainChanged',
ACCOUNT_CHANGED = 'accountChanged',
}
type Web3AccountChangedEventCallback = (account: string | null) => void;
type Web3ChainChangedEventCallback = (chainId: string | null) => void;
type Web3ConnectEventCallback = (connectInfo: ConnectInfo) => void;
type Web3DisconnectEventCallback = (error: ProviderRpcError) => void;
type Web3EnabledEventCallback = (enableInfo: EnableInfo) => void;
type Web3DeactivatedEventCallback = (chainId: DeactivateInfo) => void;
type MoralisWeb3Provider = EthersWeb3Provider;
/**
* The Moralis Web3 Provider.
*/
/** @deprecated Any function on Moralis.Web3.xx can also be called on Moralis.xx, use that one for proper type definitions */
let Web3: any;
/**
* The Moralis Web3API.
*/
class Web3API extends Web3Api {}
/**
* The Moralis SolanaAPI.
*/
class SolanaAPI extends SolanaApi {}
/**
* The Moralis Web3API.
*/
class Units {
static ETH: (value: number | string) => string;
static Token: (value: number | string, decimals?: number) => string;
static FromWei: (value: number | string, decimals?: number) => string;
}
/**
* Creates a new ACL.
* If no argument is given, the ACL has no permissions for anyone.
* If the argument is a Moralis.User, the ACL will have read and write
* permission for only that user.
* If the argument is any other JSON object, that object will be interpretted
* as a serialized ACL created with toJSON().
* @see Moralis.Object#setACL
*
*
An ACL, or Access Control List can be added to any
* Moralis.Object to restrict access to only a subset of users
* of your application.
*/
class ACL {
permissionsById: any;
constructor(arg1?: any);
setPublicReadAccess(allowed: boolean): void;
getPublicReadAccess(): boolean;
setPublicWriteAccess(allowed: boolean): void;
getPublicWriteAccess(): boolean;
setReadAccess(userId: User | string, allowed: boolean): void;
getReadAccess(userId: User | string): boolean;
setWriteAccess(userId: User | string, allowed: boolean): void;
getWriteAccess(userId: User | string): boolean;
setRoleReadAccess(role: Role | string, allowed: boolean): void;
getRoleReadAccess(role: Role | string): boolean;
setRoleWriteAccess(role: Role | string, allowed: boolean): void;
getRoleWriteAccess(role: Role | string): boolean;
toJSON(): any;
}
/**
* A Moralis.File is a local representation of a file that is saved to the Moralis
* cloud.
* @param name The file's name. This will be prefixed by a unique
* value once the file has finished saving. The file name must begin with
* an alphanumeric character, and consist of alphanumeric characters,
* periods, spaces, underscores, or dashes.
* @param data The data for the file, as either:
* 1. an Array of byte value Numbers, or
* 2. an Object like { base64: "..." } with a base64-encoded String.
* 3. a File object selected with a file upload control. (3) only works
* in Firefox 3.6+, Safari 6.0.2+, Chrome 7+, and IE 10+.
* For example:
* var fileUploadControl = $("#profilePhotoFileUpload")[0];
* if (fileUploadControl.files.length > 0) {
* var file = fileUploadControl.files[0];
* var name = "photo.jpg";
* var moralisFile = new Moralis.File(name, file);
* moralisFile.save().then(function() {
* // The file has been saved to Moralis.
* }, function(error) {
* // The file either could not be read, or could not be saved to Moralis.
* });
* }
* @param type Optional Content-Type header to use for the file. If
* this is omitted, the content type will be inferred from the name's
* extension.
*/
class File {
constructor(
name: string,
data: number[] | { base64: string } | { size: number; type: string } | { uri: string },
type?: string
);
/**
* Return the data for the file, downloading it if not already present.
* Data is present if initialized with Byte Array, Base64 or Saved with Uri.
* Data is cleared if saved with File object selected with a file upload control
*
* @returns Promise that is resolved with base64 data
*/
getData(): Promise;
url(options?: { forceSecure?: boolean }): string;
ipfs(): string;
hash(): string;
metadata(): Record;
tags(): Record;
name(): string;
save(options?: FileSaveOptions): Promise;
saveIPFS(options?: FileSaveOptions): Promise;
cancel(): void;
destroy(): Promise;
toJSON(): { __type: string; name: string; url: string };
equals(other: File): boolean;
setMetadata(metadata: Record): void;
addMetadata(key: string, value: any): void;
setTags(tags: Record): void;
addTag(key: string, value: any): void;
readonly _url: string;
}
/**
* Creates a new GeoPoint with any of the following forms:
*
* new GeoPoint(otherGeoPoint)
* new GeoPoint(30, 30)
* new GeoPoint([30, 30])
* new GeoPoint({latitude: 30, longitude: 30})
* new GeoPoint() // defaults to (0, 0)
*
*
*
Represents a latitude / longitude point that may be associated
* with a key in a MoralisObject or used as a reference point for geo queries.
* This allows proximity-based queries on the key.
*
*
Only one key in a class may contain a GeoPoint.
*
*
Example:
* var point = new Moralis.GeoPoint(30.0, -20.0);
* var object = new Moralis.Object("PlaceObject");
* object.set("location", point);
* object.save();
*/
class GeoPoint {
latitude: number;
longitude: number;
constructor(latitude: number, longitude: number);
constructor(coords?: { latitude: number; longitude: number } | [number, number]);
current(options?: SuccessFailureOptions): GeoPoint;
radiansTo(point: GeoPoint): number;
kilometersTo(point: GeoPoint): number;
milesTo(point: GeoPoint): number;
toJSON(): any;
}
/**
* A class that is used to access all of the children of a many-to-many relationship.
* Each instance of Moralis.Relation is associated with a particular parent object and key.
*/
class Relation {
parent: S;
key: string;
targetClassName: string;
constructor(parent?: S, key?: string);
// Adds a Moralis.Object or an array of Moralis.Objects to the relation.
add(object: T | T[]): void;
// Returns a Moralis.Query that is limited to objects in this relation.
query(): Query;
// Removes a Moralis.Object or an array of Moralis.Objects from this relation.
remove(object: T | T[]): void;
toJSON(): any;
}
interface Attributes {
[key: string]: any;
}
/**
* Creates a new model with defined attributes. A client id (cid) is
* automatically generated and assigned for you.
*
*
You won't normally call this method directly. It is recommended that
* you use a subclass of Moralis.Object instead, created by calling
* extend.
*
*
However, if you don't want to use a subclass, or aren't sure which
* subclass is appropriate, you can use this form:
* var object = new Moralis.Object("ClassName");
*
* That is basically equivalent to:
* var MyClass = Moralis.Object.extend("ClassName");
* var object = new MyClass();
*
Moralis.Query defines a query that is used to fetch Moralis.Objects. The
* most common use case is finding all objects that match a query through the
* find method. For example, this sample code fetches all objects
* of class MyClass. It calls a different function depending on
* whether the fetch succeeded or not.
*
*
* var query = new Moralis.Query(MyClass);
* query.find({
* success: function(results) {
* // results is an array of Moralis.Object.
* },
*
* error: function(error) {
* // error is an instance of Moralis.Error.
* }
* });
*
*
A Moralis.Query can also be used to retrieve a single object whose id is
* known, through the get method. For example, this sample code fetches an
* object of class MyClass and id myId. It calls a
* different function depending on whether the fetch succeeded or not.
*
*
* var query = new Moralis.Query(MyClass);
* query.get(myId, {
* success: function(object) {
* // object is an instance of Moralis.Object.
* },
*
* error: function(object, error) {
* // error is an instance of Moralis.Error.
* }
* });
*
*
A Moralis.Query can also be used to count the number of objects that match
* the query without retrieving all of those objects. For example, this
* sample code counts the number of objects of the class MyClass
*
* var query = new Moralis.Query(MyClass);
* query.count({
* success: function(number) {
* // There are number instances of MyClass.
* },
*
* error: function(error) {
* // error is an instance of Moralis.Error.
* }
* });
*/
class Query {
objectClass: any;
className: string;
constructor(objectClass: string | (new (...args: any[]) => T | Object));
static and(...args: Array>): Query;
static fromJSON(className: string | (new () => U), json: any): Query;
static nor(...args: Array>): Query;
static or(...var_args: Array>): Query;
addAscending(key: K | K[]): this;
addDescending(key: K | K[]): this;
ascending(key: K | K[]): this;
aggregate(pipeline: Query.AggregationOptions | Query.AggregationOptions[]): Promise;
containedBy(
key: K,
values: Array
): this;
containedIn(
key: K,
values: Array
): this;
contains(
key: K,
substring: string
): this;
containsAll(
key: K,
values: any[]
): this;
containsAllStartingWith(
key: K,
values: any[]
): this;
count(options?: Query.CountOptions): Promise;
descending(key: K | K[]): this;
doesNotExist(key: K): this;
doesNotMatchKeyInQuery<
U extends Object,
K extends keyof T['attributes'] | keyof BaseAttributes,
X extends Extract
>(key: K, queryKey: X, query: Query): this;
doesNotMatchQuery(
key: K,
query: Query
): this;
distinct(key: K): Promise;
eachBatch(
callback: (objs: T[]) => PromiseLike | void,
options?: Query.BatchOptions
): Promise;
each(
callback: (obj: T) => PromiseLike | void,
options?: Query.BatchOptions
): Promise;
hint(value: string | object): this;
explain(explain: boolean): this;
map(
callback: (currentObject: T, index: number, query: Query) => PromiseLike | U,
options?: Query.BatchOptions
): Promise;
reduce(
callback: (accumulator: T, currentObject: T, index: number) => PromiseLike | T,
initialValue?: undefined,
options?: Query.BatchOptions
): Promise;
reduce(
callback: (accumulator: U, currentObject: T, index: number) => PromiseLike | U,
initialValue: U,
options?: Query.BatchOptions
): Promise;
filter(
callback: (currentObject: T, index: number, query: Query) => PromiseLike | boolean,
options?: Query.BatchOptions
): Promise;
endsWith(key: K, suffix: string): this;
equalTo(
key: K,
value:
| T['attributes'][K]
| (T['attributes'][K] extends Object
? Pointer
: T['attributes'][K] extends Array
? E
: never)
): this;
exclude(...keys: K[]): this;
exists(key: K): this;
find(options?: Query.FindOptions): Promise;
first(options?: Query.FirstOptions): Promise;
fromNetwork(): this;
fromLocalDatastore(): this;
fromPin(): this;
fromPinWithName(name: string): this;
cancel(): this;
fullText(
key: K,
value: string,
options?: Query.FullTextOptions
): this;
get(objectId: string, options?: Query.GetOptions): Promise;
greaterThan(
key: K,
value: T['attributes'][K]
): this;
greaterThanOrEqualTo(
key: K,
value: T['attributes'][K]
): this;
include(...key: K[]): this;
include(key: K[]): this;
includeAll(): Query;
lessThan(
key: K,
value: T['attributes'][K]
): this;
lessThanOrEqualTo(
key: K,
value: T['attributes'][K]
): this;
limit(n: number): Query;
matches(
key: K,
regex: RegExp,
modifiers?: string
): this;
matchesKeyInQuery<
U extends Object,
K extends keyof T['attributes'],
X extends Extract
>(key: K, queryKey: X, query: Query): this;
matchesQuery(key: K, query: Query): this;
near(key: K, point: GeoPoint): this;
notContainedIn(
key: K,
values: Array
): this;
notEqualTo(
key: K,
value:
| T['attributes'][K]
| (T['attributes'][K] extends Object
? Pointer
: T['attributes'][K] extends Array
? E
: never)
): this;
polygonContains(
key: K,
point: GeoPoint
): this;
select(...keys: K[]): this;
select(keys: K[]): this;
skip(n: number): Query;
sortByTextScore(): this;
startsWith(
key: K,
prefix: string
): this;
subscribe(): Promise;
toJSON(): any;
withJSON(json: any): this;
withCount(includeCount?: boolean): this;
withinGeoBox(
key: K,
southwest: GeoPoint,
northeast: GeoPoint
): this;
withinKilometers(
key: K,
point: GeoPoint,
maxDistance: number,
sorted?: boolean
): this;
withinMiles(
key: K,
point: GeoPoint,
maxDistance: number,
sorted?: boolean
): this;
withinPolygon(
key: K,
points: number[][]
): this;
withinRadians(
key: K,
point: GeoPoint,
maxDistance: number
): this;
}
namespace Query {
interface EachOptions extends SuccessFailureOptions, ScopeOptions {}
interface CountOptions extends SuccessFailureOptions, ScopeOptions {}
interface FindOptions extends SuccessFailureOptions, ScopeOptions {}
interface FirstOptions extends SuccessFailureOptions, ScopeOptions {}
interface GetOptions extends SuccessFailureOptions, ScopeOptions {}
// According to http://docs.moralis.io/rest/guide/#aggregate-queries
interface AggregationOptions {
group?: { objectId?: string; [key: string]: any };
match?: { [key: string]: any };
project?: { [key: string]: any };
limit?: number;
skip?: number;
// Sort documentation https://docs.mongodb.com/v3.2/reference/operator/aggregation/sort/#pipe._S_sort
sort?: { [key: string]: 1 | -1 };
// Sample documentation: https://docs.mongodb.com/v3.2/reference/operator/aggregation/sample/
sample?: { size: number };
}
// According to https://docs.moralis.io/Moralis-SDK-JS/api/2.1.0/Moralis.Query.html#fullText
interface FullTextOptions {
language?: string;
caseSensitive?: boolean;
diacriticSensitive?: boolean;
}
interface BatchOptions extends FullOptions {
batchSize?: number;
}
}
/**
* Represents a LiveQuery Subscription.
*
* @see https://docs.moralis.io/js/guide/#live-queries
* @see NodeJS.EventEmitter
*
* Events list
* ---
* `open` - when you call `query.subscribe()`, we send a subscribe request to
* the LiveQuery server, when we get the confirmation from the LiveQuery server,
* this event will be emitted. When the client loses WebSocket connection to the
* LiveQuery server, we will try to auto reconnect the LiveQuery server. If we
* reconnect the LiveQuery server and successfully resubscribe the MoralisQuery,
* you'll also get this event.
*
* ```
* subscription.on('open', () => {});
* ```
* ---
* `create` - when a new MoralisObject is created and it fulfills the MoralisQuery you subscribe,
* you'll get this event. The object is the MoralisObject which is created.
*
* ```
* subscription.on('create', (object: Moralis.Object) => {});
* ```
* ---
* `update` event - when an existing MoralisObject which fulfills the MoralisQuery you subscribe
* is updated (The MoralisObject fulfills the MoralisQuery before and after changes),
* you'll get this event. The object is the MoralisObject which is updated.
* Its content is the latest value of the MoralisObject.
*
* ```
* subscription.on('update', (object: Moralis.Object) => {});
* ```
* ---
* `enter` event - when an existing MoralisObject's old value doesn't fulfill the MoralisQuery
* but its new value fulfills the MoralisQuery, you'll get this event. The object is the
* MoralisObject which enters the MoralisQuery. Its content is the latest value of the MoralisObject.
*
* ```
* subscription.on('enter', (object: Moralis.Object) => {});
* ```
* ---
* `update` event - when an existing MoralisObject's old value fulfills the MoralisQuery but its new value
* doesn't fulfill the MoralisQuery, you'll get this event. The object is the MoralisObject
* which leaves the MoralisQuery. Its content is the latest value of the MoralisObject.
*
* ```
* subscription.on('leave', (object: Moralis.Object) => {});
* ```
* ---
* `delete` event - when an existing MoralisObject which fulfills the MoralisQuery is deleted, you'll
* get this event. The object is the MoralisObject which is deleted.
*
* ```
* subscription.on('delete', (object: Moralis.Object) => {});
* ```
* ---
* `close` event - when the client loses the WebSocket connection to the LiveQuery
* server and we stop receiving events, you'll get this event.
*
* ```
* subscription.on('close', () => {});
* ```
*/
class LiveQuerySubscription extends EventEmitter {
/**
* Creates an instance of LiveQuerySubscription.
*
* @param id
* @param query
* @param [sessionToken]
*/
constructor(id: string, query: string, sessionToken?: string);
on(
event: 'open' | 'create' | 'update' | 'enter' | 'leave' | 'delete' | 'close',
listener: (object: Object) => void
): this;
/**
* Closes the subscription.
*
*/
unsubscribe(): void;
}
/**
* Represents a Role on the Moralis server. Roles represent groupings of
* Users for the purposes of granting permissions (e.g. specifying an ACL
* for an Object). Roles are specified by their sets of child users and
* child roles, all of which are granted any permissions that the parent
* role has.
*
*
Roles must have a name (which cannot be changed after creation of the
* role), and must specify an ACL.
* A Moralis.Role is a local representation of a role persisted to the Moralis
* cloud.
*/
interface Role extends Object {
getRoles(): Relation;
getUsers(): Relation;
getName(): string;
setName(name: string, options?: SuccessFailureOptions): any;
}
interface RoleConstructor extends ObjectStatic {
new (name: string, acl: ACL): Role>;
new (name: string, acl: ACL): Role;
}
const Role: RoleConstructor;
class Config {
static get(options?: UseMasterKeyOption): Promise;
static current(): Config;
static save(attr: any, options?: { [attr: string]: boolean }): Promise;
get(attr: string): any;
escape(attr: string): any;
}
interface Session extends Object {
getSessionToken(): string;
isCurrentSessionRevocable(): boolean;
}
interface SessionConstructor extends ObjectStatic {
new (attributes: T): Session;
new (): Session;
current(): Promise;
}
const Session: SessionConstructor;
/**
*
*
A Moralis.User object is a local representation of a user persisted to the
* Moralis cloud. This class is a subclass of a Moralis.Object, and retains the
* same functionality of a Moralis.Object, but also extends it with various
* user specific methods, like authentication, signing up, and validation of
* uniqueness.
*/
interface User extends Object {
signUp(attrs?: any, options?: SignUpOptions): Promise;
logIn(options?: FullOptions): Promise;
authenticated(): boolean;
isCurrent(): boolean;
getEmail(): string | undefined;
setEmail(email: string, options?: SuccessFailureOptions): boolean;
getUsername(): string | undefined;
setUsername(username: string, options?: SuccessFailureOptions): boolean;
setPassword(password: string, options?: SuccessFailureOptions): boolean;
getSessionToken(): string;
linkWith: (
provider: string | AuthProvider,
options: { authData?: AuthData },
saveOpts?: FullOptions
) => Promise;
_linkWith: (
provider: string | AuthProvider,
options: { authData?: AuthData },
saveOpts?: FullOptions
) => Promise;
_isLinked: (provider: string | AuthProvider) => boolean;
_unlinkFrom: (provider: string | AuthProvider, options?: FullOptions) => Promise;
}
interface UserConstructor extends ObjectStatic {
new (attributes: T): User;
new (attributes?: Attributes): User;
allowCustomUserClass(isAllowed: boolean): void;
become(sessionToken: string, options?: UseMasterKeyOption): Promise;
me(sessionToken: string, options?: UseMasterKeyOption): Promise;
current(): T | undefined;
currentAsync(): Promise;
signUp(
username: string,
password: string,
attrs: any,
options?: SignUpOptions
): Promise;
logIn(username: string, password: string, options?: FullOptions): Promise;
logOut(): Promise;
requestPasswordReset(
email: string,
options?: SuccessFailureOptions
): Promise;
extend(protoProps?: any, classProps?: any): any;
hydrate(userJSON: any): Promise;
enableUnsafeCurrentUser(): void;
logInWith(
provider: string | AuthProvider,
options: { authData?: AuthData },
saveOpts?: FullOptions
): Promise;
_registerAuthenticationProvider: (provider: AuthProvider) => void;
}
const User: UserConstructor;
/**
* A Moralis.Schema object is for handling schema data from Moralis.
* All the schemas methods require MasterKey.
*
* @param className Moralis Class string
*
* https://docs.moralis.io/Moralis-SDK-JS/api/master/Moralis.Schema.html
*
* ```
* const schema = new Moralis.Schema('MyClass');
* schema.addString('field');
* schema.addIndex('index_name', { field: 1 });
* schema.save();
* ```
*/
class Schema {
constructor(className: string);
/**
* Static method to get all schemas
*
* @return A promise that is resolved with the result when
* the query completes.
*/
static all(): Promise;
addArray(key: Schema.AttrType, options?: Schema.FieldOptions): this;
addBoolean(key: Schema.AttrType, options?: Schema.FieldOptions): this;
addDate(key: Schema.AttrType, options?: Schema.FieldOptions): this;
addField(
name: string,
type?: T,
options?: Schema.FieldOptions
): this;
addFile(key: Schema.AttrType, options?: Schema.FieldOptions): this;
addGeoPoint(key: Schema.AttrType, options?: Schema.FieldOptions): this;
/**
* Adding an Index to Create / Update a Schema
* @param name Name of the field that will be created on Moralis
* @param index `{ 'field': value }` where `field` should exist in the schema before using addIndex.
* @return Returns the schema, so you can chain this call.
* @example
* ```
* schema.addIndex('index_name', {'field': 1});
* ```
*/
addIndex(name: string, index: Schema.Index): this;
addNumber(key: Schema.AttrType, options?: Schema.FieldOptions): this;
addObject(key: Schema.AttrType, options?: Schema.FieldOptions