nomis-sdk
Version:
SDK for scoring the wallet on Ton
179 lines (172 loc) • 7.18 kB
TypeScript
import { SendTransactionRequest } from '@tonconnect/sdk';
import { Transaction, SenderArguments } from '@ton/ton';
type TokenBalance = {
amount: number;
price: number;
lastPriceDateTime: string;
confidence: number;
totalAmountPrice: number;
chainId: number | undefined;
id: string;
symbol: string;
name: string;
decimals: string;
logoUri: string | null | undefined;
};
interface MintedChain {
isTestnet: boolean;
isEnabled: boolean;
chainId: number;
hexChainId: string | null;
chainName: string;
}
interface MintData {
calculationModel: number;
chainId: number;
deadline: number;
metadataUrl: string;
mintedChain: MintedChain;
mintedScore: number;
nonce: number;
referralCode: string;
referrerCode: string;
signature: string;
}
interface TurnoverInterval {
start: number;
end: number;
value: number;
}
interface Stats {
averageTransactionTime: number;
balanceChangeInLastMonth: number;
balanceChangeInLastYear: number;
firstInTransferAddress: string | null;
firstTransactionDate: string;
historicalMedianBalanceUSD: number;
holdTokensBalanceUSD: number;
lastMonthTransactions: number;
lastYearTransactions: number;
maxTransactionTime: number;
minTransactionTime: number;
nativeBalance: number;
nativeBalanceUSD: number;
nativeToken: string;
nftHolding: number;
nftTrading: number;
nftWorth: number;
noData: boolean;
scoredAt: string;
timeSinceTheLastTransaction: number;
tokenBalances: TokenBalance[];
tokensHolding: number;
totalRejectedTransactions: number;
totalTransactions: number;
transactionsPerMonth: number;
turnoverIntervals: TurnoverInterval[];
walletAge: number;
walletTurnover: number;
walletTurnoverUSD: number;
statsDescriptions: Record<string, {
label: string;
description: string;
units: string;
}>;
}
interface IScoreData {
address: string;
mintData: MintData;
mintPrice: number;
referralCode: string;
referrerReward: number;
referrerAddress: string | null;
score: number;
scoreType: number;
stats: Stats;
signature: string | null;
}
interface IGetScoreParams {
address: string;
referrerCode?: string | null | undefined;
}
interface ITonContractParams {
address: string;
}
interface IToken {
name: string;
score: number;
updated: number;
tokenId: number;
calculationModel: number;
chainId: number;
owner: string;
realTokenId: string | null;
}
type IMintData = MintData & Pick<IScoreData, "referrerAddress" | "referrerReward" | "mintPrice">;
interface IGetScoreResult {
scoreData: IScoreData | undefined | null;
mintData: IMintData | undefined | null;
token: IToken | undefined | null;
isUpdate: boolean;
scoreName: string;
}
interface ITransactionSender {
sendTransaction(transaction: SendTransactionRequest, ...args: any[]): unknown;
[key: string]: any;
}
declare const isScoreHolder: ({ address, }: ITonContractParams) => Promise<boolean>;
declare function getScoreData({ address, referrerCode, }: IGetScoreParams): Promise<IGetScoreResult>;
interface MintScoreResult {
mintToken: (params: ITransactionSender & IMintData) => undefined;
getNewTxHash: (lastTx: Transaction) => string;
checkMintingTxStatus: (updated: number, mintScore: number) => boolean;
getMintingTxParams: (params: IMintData) => Promise<SenderArguments>;
}
declare function mintScore({ address }: ITonContractParams): {
mintToken: () => undefined;
getNewTxHash: () => string;
checkMintingTxStatus: () => boolean;
getMintingTxParams: () => {
new (executor: (resolve: (value: SenderArguments | PromiseLike<SenderArguments>) => void, reject: (reason?: any) => void) => void): Promise<SenderArguments>;
all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;
all<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: Awaited<T[P]>; }>;
race<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;
race<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>;
readonly prototype: Promise<any>;
reject<T = never>(reason?: any): Promise<T>;
resolve(): Promise<void>;
resolve<T>(value: T): Promise<Awaited<T>>;
resolve<T>(value: T | PromiseLike<T>): Promise<Awaited<T>>;
allSettled<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>>; }>;
allSettled<T>(values: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<Awaited<T>>[]>;
any<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>;
any<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;
withResolvers<T>(): PromiseWithResolvers<T>;
readonly [Symbol.species]: PromiseConstructor;
};
} | {
mintToken: (({ tonConnect, mintPrice, referrerReward, deadline, metadataUrl, mintedScore, signature, nonce, referrerAddress, }: {
tonConnect: ITransactionSender;
} & IMintData) => Promise<undefined | Transaction>) | (() => undefined);
getNewTxHash: ((lastTx: Transaction) => Promise<string>) | (() => string);
getMintingTxParams: (({ mintPrice, referrerReward, deadline, metadataUrl, mintedScore, signature, nonce, referrerAddress, }: IMintData) => Promise<SenderArguments>) | (() => {
new (executor: (resolve: (value: SenderArguments | PromiseLike<SenderArguments>) => void, reject: (reason?: any) => void) => void): Promise<SenderArguments>;
all<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;
all<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: Awaited<T[P]>; }>;
race<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;
race<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>;
readonly prototype: Promise<any>;
reject<T = never>(reason?: any): Promise<T>;
resolve(): Promise<void>;
resolve<T>(value: T): Promise<Awaited<T>>;
resolve<T>(value: T | PromiseLike<T>): Promise<Awaited<T>>;
allSettled<T extends readonly unknown[] | []>(values: T): Promise<{ -readonly [P in keyof T]: PromiseSettledResult<Awaited<T[P]>>; }>;
allSettled<T>(values: Iterable<T | PromiseLike<T>>): Promise<PromiseSettledResult<Awaited<T>>[]>;
any<T extends readonly unknown[] | []>(values: T): Promise<Awaited<T[number]>>;
any<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>>;
withResolvers<T>(): PromiseWithResolvers<T>;
readonly [Symbol.species]: PromiseConstructor;
});
};
declare const getMintedToken: ({ address }: ITonContractParams) => Promise<IToken | undefined>;
export { type IGetScoreParams, type IGetScoreResult, type IMintData, type IScoreData, type IToken, type ITonContractParams, type ITransactionSender, type MintScoreResult, getMintedToken, getScoreData, isScoreHolder, mintScore };