@allbridge/bridge-core-sdk 3.25.0 → 3.26.0-alpha.2
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/dist/browser/index.js +6 -1
- package/dist/browser/index.js.map +4 -4
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/index.js +6 -1
- package/dist/esm/index.js.map +4 -4
- package/dist/src/chains/chain.enums.d.ts +7 -2
- package/dist/src/chains/chain.enums.js +5 -0
- package/dist/src/chains/chain.enums.js.map +1 -1
- package/dist/src/chains/index.js +6 -0
- package/dist/src/chains/index.js.map +1 -1
- package/dist/src/client/core-api/core-api-mapper.js +1 -0
- package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
- package/dist/src/client/core-api/core-api.model.d.ts +1 -0
- package/dist/src/client/core-api/core-api.model.js.map +1 -1
- package/dist/src/services/bridge/alg/index.d.ts +15 -0
- package/dist/src/services/bridge/alg/index.js +151 -0
- package/dist/src/services/bridge/alg/index.js.map +1 -0
- package/dist/src/services/bridge/index.js +16 -0
- package/dist/src/services/bridge/index.js.map +1 -1
- package/dist/src/services/bridge/models/bridge.model.d.ts +1 -0
- package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
- package/dist/src/services/bridge/sui/index.js.map +1 -1
- package/dist/src/services/bridge/utils.d.ts +3 -1
- package/dist/src/services/bridge/utils.js +41 -15
- package/dist/src/services/bridge/utils.js.map +1 -1
- package/dist/src/services/liquidity-pool/alg/index.d.ts +19 -0
- package/dist/src/services/liquidity-pool/alg/index.js +133 -0
- package/dist/src/services/liquidity-pool/alg/index.js.map +1 -0
- package/dist/src/services/liquidity-pool/index.js +16 -0
- package/dist/src/services/liquidity-pool/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/sui/index.js.map +1 -1
- package/dist/src/services/liquidity-pool/trx/index.js.map +1 -1
- package/dist/src/services/models/alg/BridgeClient.d.ts +2718 -0
- package/dist/src/services/models/alg/BridgeClient.js +2619 -0
- package/dist/src/services/models/alg/BridgeClient.js.map +1 -0
- package/dist/src/services/models/alg/PoolClient.d.ts +2265 -0
- package/dist/src/services/models/alg/PoolClient.js +2176 -0
- package/dist/src/services/models/alg/PoolClient.js.map +1 -0
- package/dist/src/services/models/index.d.ts +6 -5
- package/dist/src/services/models/index.js.map +1 -1
- package/dist/src/services/token/alg/index.d.ts +17 -0
- package/dist/src/services/token/alg/index.js +46 -0
- package/dist/src/services/token/alg/index.js.map +1 -0
- package/dist/src/services/token/index.js +16 -0
- package/dist/src/services/token/index.js.map +1 -1
- package/dist/src/services/token/sui/index.js.map +1 -1
- package/dist/src/services/utils/alg/index.d.ts +14 -0
- package/dist/src/services/utils/alg/index.js +56 -0
- package/dist/src/services/utils/alg/index.js.map +1 -0
- package/dist/src/services/utils/trx/index.js.map +1 -1
- package/dist/src/services/yield/index.js +4 -0
- package/dist/src/services/yield/index.js.map +1 -1
- package/dist/src/tokens-info/tokens-info.model.d.ts +4 -0
- package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
- package/dist/src/utils/alg/index.d.ts +21 -0
- package/dist/src/utils/alg/index.js +85 -0
- package/dist/src/utils/alg/index.js.map +1 -0
- package/dist/src/utils/index.d.ts +3 -0
- package/dist/src/utils/index.js +3 -0
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +5 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Transaction as SolanaWeb3Transaction, VersionedTransaction } from "@solana/web3.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Algodv2 } from "algosdk";
|
|
3
|
+
import { TronWeb, Types } from "tronweb";
|
|
4
4
|
import { SolanaTxFee } from "./sol";
|
|
5
5
|
export { SolanaTxFee, PricePerUnitInMicroLamports, ExtraFeeInLamports, SolanaAutoTxFee } from "./sol";
|
|
6
6
|
/**
|
|
@@ -28,7 +28,7 @@ export interface EssentialWeb3 {
|
|
|
28
28
|
* The provider is type that combines connection implementations for different chains.<br/>
|
|
29
29
|
* TIP: None provider in the Solana blockchain case.
|
|
30
30
|
*/
|
|
31
|
-
export type Provider = EssentialWeb3 | TronWeb;
|
|
31
|
+
export type Provider = EssentialWeb3 | TronWeb | Algodv2;
|
|
32
32
|
/**
|
|
33
33
|
* The `EssentialWeb3Transaction` interface provides the minimum set of Web3 Transaction
|
|
34
34
|
* returned by the SDK. It allows any web3-like provider to be used, as long as it
|
|
@@ -41,13 +41,14 @@ export interface EssentialWeb3Transaction {
|
|
|
41
41
|
value?: string;
|
|
42
42
|
data?: string;
|
|
43
43
|
}
|
|
44
|
-
export type RawTransaction = RawTronTransaction | RawEvmTransaction | RawSorobanTransaction | RawBridgeSolanaTransaction | RawPoolSolanaTransaction;
|
|
44
|
+
export type RawTransaction = RawTronTransaction | RawEvmTransaction | RawSorobanTransaction | RawAlgTransaction | RawSuiTransaction | RawBridgeSolanaTransaction | RawPoolSolanaTransaction;
|
|
45
45
|
export type RawEvmTransaction = EssentialWeb3Transaction;
|
|
46
|
-
export type RawTronTransaction =
|
|
46
|
+
export type RawTronTransaction = Types.Transaction;
|
|
47
47
|
export type RawSorobanTransaction = string;
|
|
48
48
|
export type RawPoolSolanaTransaction = SolanaWeb3Transaction;
|
|
49
49
|
export type RawBridgeSolanaTransaction = VersionedTransaction;
|
|
50
50
|
export type RawSuiTransaction = string;
|
|
51
|
+
export type RawAlgTransaction = string[];
|
|
51
52
|
export interface SmartContractMethodParameter {
|
|
52
53
|
type: string;
|
|
53
54
|
value: string | number | Buffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/models/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/models/index.ts"],"names":[],"mappings":";;;AAMA,6BAAsG;AAA/B,sGAAA,eAAe,OAAA","sourcesContent":["/* eslint-disable @typescript-eslint/no-duplicate-type-constituents */\nimport { Transaction as SolanaWeb3Transaction, VersionedTransaction } from \"@solana/web3.js\";\nimport { Algodv2 } from \"algosdk\";\nimport { TronWeb, Types } from \"tronweb\";\nimport { SolanaTxFee } from \"./sol\";\n\nexport { SolanaTxFee, PricePerUnitInMicroLamports, ExtraFeeInLamports, SolanaAutoTxFee } from \"./sol\";\n\n/**\n * Blockchain fee added to tx\n */\nexport interface TxFeeParams {\n solana?: SolanaTxFee;\n}\n\n/**\n * The `EssentialWeb3` interface provides the minimum set of Web3 functionalities\n * required by the SDK. It allows any web3-like provider to be used, as long as it\n * matches the signature of these essential methods and properties. This prevents\n * tight coupling to a specific version of the `web3` library.\n */\nexport interface EssentialWeb3 {\n eth: {\n getBalance: (address: string) => Promise<any>;\n estimateGas: (tx: any) => Promise<any>;\n sendTransaction: (tx: any) => Promise<any>;\n Contract: new (abi: any, address?: string) => any;\n BatchRequest: new () => any;\n };\n}\n\n/**\n * The provider is type that combines connection implementations for different chains.<br/>\n * TIP: None provider in the Solana blockchain case.\n */\nexport type Provider = EssentialWeb3 | TronWeb | Algodv2;\n\n/**\n * The `EssentialWeb3Transaction` interface provides the minimum set of Web3 Transaction\n * returned by the SDK. It allows any web3-like provider to be used, as long as it\n * matches the signature of these essential interface. This prevents\n * tight coupling to a specific version of the `web3` library.\n */\nexport interface EssentialWeb3Transaction {\n from?: string;\n to?: string;\n value?: string;\n data?: string;\n}\n\nexport type RawTransaction =\n | RawTronTransaction\n | RawEvmTransaction\n | RawSorobanTransaction\n | RawAlgTransaction\n | RawSuiTransaction\n | RawBridgeSolanaTransaction\n | RawPoolSolanaTransaction;\nexport type RawEvmTransaction = EssentialWeb3Transaction;\nexport type RawTronTransaction = Types.Transaction;\nexport type RawSorobanTransaction = string;\nexport type RawPoolSolanaTransaction = SolanaWeb3Transaction;\nexport type RawBridgeSolanaTransaction = VersionedTransaction;\nexport type RawSuiTransaction = string;\nexport type RawAlgTransaction = string[];\n\nexport interface SmartContractMethodParameter {\n type: string;\n value: string | number | Buffer;\n}\n\nexport interface TransactionResponse {\n txId: string;\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AlgorandClient } from "@algorandfoundation/algokit-utils";
|
|
2
|
+
import { ChainType } from "../../../chains/chain.enums";
|
|
3
|
+
import { AllbridgeCoreClient } from "../../../client/core-api/core-client-base";
|
|
4
|
+
import { GetNativeTokenBalanceParams } from "../../bridge/models";
|
|
5
|
+
import { RawTransaction, TransactionResponse } from "../../models";
|
|
6
|
+
import { ApproveParamsDto, ChainTokenService, GetAllowanceParamsDto, GetTokenBalanceParams } from "../models";
|
|
7
|
+
export declare class AlgTokenService extends ChainTokenService {
|
|
8
|
+
algorand: AlgorandClient;
|
|
9
|
+
api: AllbridgeCoreClient;
|
|
10
|
+
chainType: ChainType.SUI;
|
|
11
|
+
constructor(algorand: AlgorandClient, api: AllbridgeCoreClient);
|
|
12
|
+
approve(_params: ApproveParamsDto): Promise<TransactionResponse>;
|
|
13
|
+
buildRawTransactionApprove(_params: ApproveParamsDto): Promise<RawTransaction>;
|
|
14
|
+
getAllowance(_params: GetAllowanceParamsDto): Promise<string>;
|
|
15
|
+
getNativeTokenBalance(params: GetNativeTokenBalanceParams): Promise<string>;
|
|
16
|
+
getTokenBalance(params: GetTokenBalanceParams): Promise<string>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlgTokenService = void 0;
|
|
4
|
+
const chain_enums_1 = require("../../../chains/chain.enums");
|
|
5
|
+
const exceptions_1 = require("../../../exceptions");
|
|
6
|
+
const models_1 = require("../models");
|
|
7
|
+
class AlgTokenService extends models_1.ChainTokenService {
|
|
8
|
+
algorand;
|
|
9
|
+
api;
|
|
10
|
+
chainType = chain_enums_1.ChainType.SUI;
|
|
11
|
+
constructor(algorand, api) {
|
|
12
|
+
super();
|
|
13
|
+
this.algorand = algorand;
|
|
14
|
+
this.api = api;
|
|
15
|
+
}
|
|
16
|
+
approve(_params) {
|
|
17
|
+
throw new exceptions_1.MethodNotSupportedError();
|
|
18
|
+
}
|
|
19
|
+
buildRawTransactionApprove(_params) {
|
|
20
|
+
throw new exceptions_1.MethodNotSupportedError();
|
|
21
|
+
}
|
|
22
|
+
getAllowance(_params) {
|
|
23
|
+
throw new exceptions_1.MethodNotSupportedError();
|
|
24
|
+
}
|
|
25
|
+
async getNativeTokenBalance(params) {
|
|
26
|
+
const { account } = params;
|
|
27
|
+
const info = await this.algorand.account.getInformation(account);
|
|
28
|
+
return info.balance.microAlgo.toString();
|
|
29
|
+
}
|
|
30
|
+
async getTokenBalance(params) {
|
|
31
|
+
const { account, token } = params;
|
|
32
|
+
try {
|
|
33
|
+
const info = await this.algorand.asset.getAccountInformation(account, BigInt(token.tokenAddress));
|
|
34
|
+
return info.balance.toString();
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
if (e instanceof Error) {
|
|
38
|
+
e.message.includes("account asset info not found");
|
|
39
|
+
return "0";
|
|
40
|
+
}
|
|
41
|
+
throw e;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.AlgTokenService = AlgTokenService;
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/token/alg/index.ts"],"names":[],"mappings":";;;AACA,6DAAwD;AAExD,oDAA8D;AAG9D,sCAA8G;AAE9G,MAAa,eAAgB,SAAQ,0BAAiB;IAI3C;IACA;IAJT,SAAS,GAAkB,uBAAS,CAAC,GAAG,CAAC;IAEzC,YACS,QAAwB,EACxB,GAAwB;QAE/B,KAAK,EAAE,CAAC;QAHD,aAAQ,GAAR,QAAQ,CAAgB;QACxB,QAAG,GAAH,GAAG,CAAqB;IAGjC,CAAC;IAED,OAAO,CAAC,OAAyB;QAC/B,MAAM,IAAI,oCAAuB,EAAE,CAAC;IACtC,CAAC;IAED,0BAA0B,CAAC,OAAyB;QAClD,MAAM,IAAI,oCAAuB,EAAE,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,OAA8B;QACzC,MAAM,IAAI,oCAAuB,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAmC;QAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA6B;QACjD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YAClG,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;gBACvB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;gBACnD,OAAO,GAAG,CAAC;YACb,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;CACF;AAzCD,0CAyCC","sourcesContent":["import { AlgorandClient } from \"@algorandfoundation/algokit-utils\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { MethodNotSupportedError } from \"../../../exceptions\";\nimport { GetNativeTokenBalanceParams } from \"../../bridge/models\";\nimport { RawTransaction, TransactionResponse } from \"../../models\";\nimport { ApproveParamsDto, ChainTokenService, GetAllowanceParamsDto, GetTokenBalanceParams } from \"../models\";\n\nexport class AlgTokenService extends ChainTokenService {\n chainType: ChainType.SUI = ChainType.SUI;\n\n constructor(\n public algorand: AlgorandClient,\n public api: AllbridgeCoreClient\n ) {\n super();\n }\n\n approve(_params: ApproveParamsDto): Promise<TransactionResponse> {\n throw new MethodNotSupportedError();\n }\n\n buildRawTransactionApprove(_params: ApproveParamsDto): Promise<RawTransaction> {\n throw new MethodNotSupportedError();\n }\n\n getAllowance(_params: GetAllowanceParamsDto): Promise<string> {\n throw new MethodNotSupportedError();\n }\n\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams): Promise<string> {\n const { account } = params;\n const info = await this.algorand.account.getInformation(account);\n return info.balance.microAlgo.toString();\n }\n\n async getTokenBalance(params: GetTokenBalanceParams): Promise<string> {\n const { account, token } = params;\n try {\n const info = await this.algorand.asset.getAccountInformation(account, BigInt(token.tokenAddress));\n return info.balance.toString();\n } catch (e) {\n if (e instanceof Error) {\n e.message.includes(\"account asset info not found\");\n return \"0\";\n }\n throw e;\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultTokenService = void 0;
|
|
4
|
+
const algokit_utils_1 = require("@algorandfoundation/algokit-utils");
|
|
4
5
|
const big_js_1 = require("big.js");
|
|
5
6
|
const tronweb_1 = require("tronweb");
|
|
6
7
|
const web3_1 = require("web3");
|
|
@@ -9,6 +10,7 @@ const index_1 = require("../../index");
|
|
|
9
10
|
const models_1 = require("../../models");
|
|
10
11
|
const calculation_1 = require("../../utils/calculation");
|
|
11
12
|
const utils_1 = require("../../utils/utils");
|
|
13
|
+
const alg_1 = require("./alg");
|
|
12
14
|
const evm_1 = require("./evm");
|
|
13
15
|
const sol_1 = require("./sol");
|
|
14
16
|
const srb_1 = require("./srb");
|
|
@@ -92,6 +94,20 @@ class DefaultTokenService {
|
|
|
92
94
|
case index_1.ChainType.SUI: {
|
|
93
95
|
return new sui_1.SuiTokenService(this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol), this.api);
|
|
94
96
|
}
|
|
97
|
+
case index_1.ChainType.ALG: {
|
|
98
|
+
if (provider) {
|
|
99
|
+
const algod = provider;
|
|
100
|
+
const algorand = algokit_utils_1.AlgorandClient.fromClients({ algod });
|
|
101
|
+
return new alg_1.AlgTokenService(algorand, this.api);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);
|
|
105
|
+
const algorand = algokit_utils_1.AlgorandClient.fromConfig({
|
|
106
|
+
algodConfig: { server: nodeRpcUrl },
|
|
107
|
+
});
|
|
108
|
+
return new alg_1.AlgTokenService(algorand, this.api);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
95
111
|
}
|
|
96
112
|
}
|
|
97
113
|
prepareCheckAllowanceParams(params) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/token/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Big } from \"big.js\";\nimport { TronWeb } from \"tronweb\";\nimport { Web3 } from \"web3\";\nimport { Chains } from \"../../chains\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport { AllbridgeCoreSdkOptions, ChainType, EssentialWeb3 } from \"../../index\";\nimport { AmountFormat, AmountFormatted } from \"../../models\";\nimport { convertFloatAmountToInt, convertIntAmountToFloat } from \"../../utils/calculation\";\nimport { validateAmountDecimals, validateAmountGtZero } from \"../../utils/utils\";\nimport { GetNativeTokenBalanceParams } from \"../bridge/models\";\nimport { NodeRpcUrlsConfig } from \"../index\";\nimport { Provider, RawTransaction, TransactionResponse } from \"../models\";\nimport { EvmTokenService } from \"./evm\";\nimport {\n ApproveParams,\n ApproveParamsDto,\n CheckAllowanceParams,\n CheckAllowanceParamsDto,\n GetAllowanceParams,\n GetTokenBalanceParams,\n ChainTokenService,\n} from \"./models\";\nimport { SolanaTokenService } from \"./sol\";\nimport { SrbTokenService } from \"./srb\";\nimport { SuiTokenService } from \"./sui\";\nimport { TronTokenService } from \"./trx\";\n\nexport interface TokenService {\n getAllowance(params: GetAllowanceParams, provider?: Provider): Promise<string>;\n\n checkAllowance(params: CheckAllowanceParams, provider?: Provider): Promise<boolean>;\n\n approve(provider: Provider, approveData: ApproveParams): Promise<TransactionResponse>;\n\n buildRawTransactionApprove(approveData: ApproveParams, provider?: Provider): Promise<RawTransaction>;\n\n getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string>;\n\n getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted>;\n}\n\nexport class DefaultTokenService implements TokenService {\n constructor(\n readonly api: AllbridgeCoreClient,\n readonly nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n readonly params: AllbridgeCoreSdkOptions\n ) {}\n\n async getAllowance(params: GetAllowanceParams, provider?: Provider): Promise<string> {\n const allowanceInt = await this.getChainTokenService(params.token.chainSymbol, params.owner, provider).getAllowance(\n params\n );\n return convertIntAmountToFloat(allowanceInt, params.token.decimals).toFixed();\n }\n\n async checkAllowance(params: CheckAllowanceParams, provider?: Provider): Promise<boolean> {\n validateAmountGtZero(params.amount);\n validateAmountDecimals(\"amount\", params.amount, params.token.decimals);\n return this.getChainTokenService(params.token.chainSymbol, params.owner, provider).checkAllowance(\n this.prepareCheckAllowanceParams(params)\n );\n }\n\n async approve(provider: Provider, approveData: ApproveParams): Promise<TransactionResponse> {\n if (approveData.amount) {\n validateAmountGtZero(approveData.amount);\n validateAmountDecimals(\"amount\", approveData.amount, approveData.token.decimals);\n }\n return this.getChainTokenService(approveData.token.chainSymbol, approveData.owner, provider).approve(\n this.prepareApproveParams(approveData)\n );\n }\n\n async buildRawTransactionApprove(approveData: ApproveParams, provider?: Provider): Promise<RawTransaction> {\n if (approveData.amount) {\n validateAmountGtZero(approveData.amount);\n validateAmountDecimals(\"amount\", approveData.amount, approveData.token.decimals);\n }\n return this.getChainTokenService(\n approveData.token.chainSymbol,\n approveData.owner,\n provider\n ).buildRawTransactionApprove(this.prepareApproveParams(approveData));\n }\n\n async getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string> {\n const tokenBalance = await this.getChainTokenService(\n params.token.chainSymbol,\n params.account,\n provider\n ).getTokenBalance(params);\n if (params.token.decimals) {\n return convertIntAmountToFloat(tokenBalance, params.token.decimals).toFixed();\n }\n return tokenBalance;\n }\n\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted> {\n const tokenBalance = await this.getChainTokenService(\n params.chainSymbol,\n params.account,\n provider\n ).getNativeTokenBalance(params);\n return {\n [AmountFormat.INT]: tokenBalance,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n tokenBalance,\n Chains.getChainDecimalsByType(Chains.getChainProperty(params.chainSymbol).chainType)\n ).toFixed(),\n };\n }\n\n private getChainTokenService(chainSymbol: string, ownerAddress: string, provider?: Provider): ChainTokenService {\n switch (Chains.getChainProperty(chainSymbol).chainType) {\n case ChainType.EVM: {\n if (provider) {\n return new EvmTokenService(provider as EssentialWeb3, this.api);\n } else {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n return new EvmTokenService(new Web3(nodeRpcUrl), this.api);\n }\n }\n case ChainType.TRX: {\n if (provider) {\n return new TronTokenService(provider as TronWeb, this.api);\n } else {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n const tronWeb = new TronWeb({ fullHost: nodeRpcUrl });\n tronWeb.setAddress(ownerAddress);\n return new TronTokenService(tronWeb, this.api);\n }\n }\n case ChainType.SOLANA: {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n return new SolanaTokenService(nodeRpcUrl, this.api);\n }\n case ChainType.SRB: {\n return new SrbTokenService(this.nodeRpcUrlsConfig, this.params, this.api);\n }\n case ChainType.SUI: {\n return new SuiTokenService(this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol), this.api);\n }\n }\n }\n\n prepareCheckAllowanceParams(params: CheckAllowanceParams): CheckAllowanceParamsDto {\n return {\n ...params,\n amount: convertFloatAmountToInt(params.amount, params.token.decimals),\n };\n }\n\n private prepareApproveParams(approveData: ApproveParams): ApproveParamsDto {\n return {\n tokenAddress: approveData.token.tokenAddress,\n owner: approveData.owner,\n spender: approveData.spender,\n chainSymbol: approveData.token.chainSymbol,\n amount: approveData.amount == undefined ? undefined : Big(approveData.amount).toFixed(),\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/token/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { AlgorandClient } from \"@algorandfoundation/algokit-utils\";\nimport { Algodv2 } from \"algosdk\";\nimport { Big } from \"big.js\";\nimport { TronWeb } from \"tronweb\";\nimport { Web3 } from \"web3\";\nimport { Chains } from \"../../chains\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport { AllbridgeCoreSdkOptions, ChainType, EssentialWeb3 } from \"../../index\";\nimport { AmountFormat, AmountFormatted } from \"../../models\";\nimport { convertFloatAmountToInt, convertIntAmountToFloat } from \"../../utils/calculation\";\nimport { validateAmountDecimals, validateAmountGtZero } from \"../../utils/utils\";\nimport { GetNativeTokenBalanceParams } from \"../bridge/models\";\nimport { NodeRpcUrlsConfig } from \"../index\";\nimport { Provider, RawTransaction, TransactionResponse } from \"../models\";\nimport { AlgTokenService } from \"./alg\";\nimport { EvmTokenService } from \"./evm\";\nimport {\n ApproveParams,\n ApproveParamsDto,\n ChainTokenService,\n CheckAllowanceParams,\n CheckAllowanceParamsDto,\n GetAllowanceParams,\n GetTokenBalanceParams,\n} from \"./models\";\nimport { SolanaTokenService } from \"./sol\";\nimport { SrbTokenService } from \"./srb\";\nimport { SuiTokenService } from \"./sui\";\nimport { TronTokenService } from \"./trx\";\n\nexport interface TokenService {\n getAllowance(params: GetAllowanceParams, provider?: Provider): Promise<string>;\n\n checkAllowance(params: CheckAllowanceParams, provider?: Provider): Promise<boolean>;\n\n approve(provider: Provider, approveData: ApproveParams): Promise<TransactionResponse>;\n\n buildRawTransactionApprove(approveData: ApproveParams, provider?: Provider): Promise<RawTransaction>;\n\n getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string>;\n\n getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted>;\n}\n\nexport class DefaultTokenService implements TokenService {\n constructor(\n readonly api: AllbridgeCoreClient,\n readonly nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n readonly params: AllbridgeCoreSdkOptions\n ) {}\n\n async getAllowance(params: GetAllowanceParams, provider?: Provider): Promise<string> {\n const allowanceInt = await this.getChainTokenService(params.token.chainSymbol, params.owner, provider).getAllowance(\n params\n );\n return convertIntAmountToFloat(allowanceInt, params.token.decimals).toFixed();\n }\n\n async checkAllowance(params: CheckAllowanceParams, provider?: Provider): Promise<boolean> {\n validateAmountGtZero(params.amount);\n validateAmountDecimals(\"amount\", params.amount, params.token.decimals);\n return this.getChainTokenService(params.token.chainSymbol, params.owner, provider).checkAllowance(\n this.prepareCheckAllowanceParams(params)\n );\n }\n\n async approve(provider: Provider, approveData: ApproveParams): Promise<TransactionResponse> {\n if (approveData.amount) {\n validateAmountGtZero(approveData.amount);\n validateAmountDecimals(\"amount\", approveData.amount, approveData.token.decimals);\n }\n return this.getChainTokenService(approveData.token.chainSymbol, approveData.owner, provider).approve(\n this.prepareApproveParams(approveData)\n );\n }\n\n async buildRawTransactionApprove(approveData: ApproveParams, provider?: Provider): Promise<RawTransaction> {\n if (approveData.amount) {\n validateAmountGtZero(approveData.amount);\n validateAmountDecimals(\"amount\", approveData.amount, approveData.token.decimals);\n }\n return this.getChainTokenService(\n approveData.token.chainSymbol,\n approveData.owner,\n provider\n ).buildRawTransactionApprove(this.prepareApproveParams(approveData));\n }\n\n async getTokenBalance(params: GetTokenBalanceParams, provider?: Provider): Promise<string> {\n const tokenBalance = await this.getChainTokenService(\n params.token.chainSymbol,\n params.account,\n provider\n ).getTokenBalance(params);\n if (params.token.decimals) {\n return convertIntAmountToFloat(tokenBalance, params.token.decimals).toFixed();\n }\n return tokenBalance;\n }\n\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams, provider?: Provider): Promise<AmountFormatted> {\n const tokenBalance = await this.getChainTokenService(\n params.chainSymbol,\n params.account,\n provider\n ).getNativeTokenBalance(params);\n return {\n [AmountFormat.INT]: tokenBalance,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n tokenBalance,\n Chains.getChainDecimalsByType(Chains.getChainProperty(params.chainSymbol).chainType)\n ).toFixed(),\n };\n }\n\n private getChainTokenService(chainSymbol: string, ownerAddress: string, provider?: Provider): ChainTokenService {\n switch (Chains.getChainProperty(chainSymbol).chainType) {\n case ChainType.EVM: {\n if (provider) {\n return new EvmTokenService(provider as EssentialWeb3, this.api);\n } else {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n return new EvmTokenService(new Web3(nodeRpcUrl), this.api);\n }\n }\n case ChainType.TRX: {\n if (provider) {\n return new TronTokenService(provider as TronWeb, this.api);\n } else {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n const tronWeb = new TronWeb({ fullHost: nodeRpcUrl });\n tronWeb.setAddress(ownerAddress);\n return new TronTokenService(tronWeb, this.api);\n }\n }\n case ChainType.SOLANA: {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n return new SolanaTokenService(nodeRpcUrl, this.api);\n }\n case ChainType.SRB: {\n return new SrbTokenService(this.nodeRpcUrlsConfig, this.params, this.api);\n }\n case ChainType.SUI: {\n return new SuiTokenService(this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol), this.api);\n }\n case ChainType.ALG: {\n if (provider) {\n const algod = provider as Algodv2;\n const algorand = AlgorandClient.fromClients({ algod });\n return new AlgTokenService(algorand, this.api);\n } else {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n const algorand = AlgorandClient.fromConfig({\n algodConfig: { server: nodeRpcUrl },\n });\n return new AlgTokenService(algorand, this.api);\n }\n }\n }\n }\n\n prepareCheckAllowanceParams(params: CheckAllowanceParams): CheckAllowanceParamsDto {\n return {\n ...params,\n amount: convertFloatAmountToInt(params.amount, params.token.decimals),\n };\n }\n\n private prepareApproveParams(approveData: ApproveParams): ApproveParamsDto {\n return {\n tokenAddress: approveData.token.tokenAddress,\n owner: approveData.owner,\n spender: approveData.spender,\n chainSymbol: approveData.token.chainSymbol,\n amount: approveData.amount == undefined ? undefined : Big(approveData.amount).toFixed(),\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/token/sui/index.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/token/sui/index.ts"],"names":[],"mappings":";;;AAAA,sDAAsD;AACtD,+CAA2D;AAC3D,6DAAwD;AAExD,oDAAwE;AAGxE,yDAAmE;AACnE,sCAA8G;AAE9G,MAAa,eAAgB,SAAQ,0BAAiB;IAK3C;IACA;IALT,SAAS,GAAkB,uBAAS,CAAC,GAAG,CAAC;IACjC,SAAS,CAAY;IAE7B,YACS,SAAiB,EACjB,GAAwB;QAE/B,KAAK,EAAE,CAAC;QAHD,cAAS,GAAT,SAAS,CAAQ;QACjB,QAAG,GAAH,GAAG,CAAqB;QAG/B,IAAI,CAAC,SAAS,GAAG,IAAI,kBAAS,CAAC;YAC7B,GAAG,EAAE,IAAI,CAAC,SAAS;SACpB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,MAAwB;QAC9B,MAAM,IAAI,oCAAuB,EAAE,CAAC;IACtC,CAAC;IAED,0BAA0B,CAAC,MAAwB;QACjD,MAAM,IAAI,oCAAuB,EAAE,CAAC;IACtC,CAAC;IAED,YAAY,CAAC,MAA6B;QACxC,MAAM,IAAI,oCAAuB,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAA6B;QACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACrC,MAAM,IAAI,qBAAQ,CAAC,6CAA6C,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAC9C,KAAK,EAAE,MAAM,CAAC,OAAO;YACrB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,kBAAkB;SAC1C,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,MAAmC;QAC7D,MAAM,SAAS,GAAiB,MAAM,IAAA,kCAAsB,EAAC,CAAC,MAAiC,EAAE,EAAE,CACjG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACtB,KAAK,EAAE,MAAM,CAAC,OAAO;YACrB,MAAM;SACP,CAAC,CACH,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrG,CAAC;CACF;AAjDD,0CAiDC","sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { CoinStruct, SuiClient } from \"@mysten/sui/client\";\nimport { ChainType } from \"../../../chains/chain.enums\";\nimport { AllbridgeCoreClient } from \"../../../client/core-api/core-client-base\";\nimport { MethodNotSupportedError, SdkError } from \"../../../exceptions\";\nimport { GetNativeTokenBalanceParams } from \"../../bridge/models\";\nimport { RawTransaction, TransactionResponse } from \"../../models\";\nimport { fetchAllPagesRecursive } from \"../../utils/sui/paginated\";\nimport { ApproveParamsDto, ChainTokenService, GetAllowanceParamsDto, GetTokenBalanceParams } from \"../models\";\n\nexport class SuiTokenService extends ChainTokenService {\n chainType: ChainType.SUI = ChainType.SUI;\n private suiClient: SuiClient;\n\n constructor(\n public suiRpcUrl: string,\n public api: AllbridgeCoreClient\n ) {\n super();\n this.suiClient = new SuiClient({\n url: this.suiRpcUrl,\n });\n }\n\n approve(params: ApproveParamsDto): Promise<TransactionResponse> {\n throw new MethodNotSupportedError();\n }\n\n buildRawTransactionApprove(params: ApproveParamsDto): Promise<RawTransaction> {\n throw new MethodNotSupportedError();\n }\n\n getAllowance(params: GetAllowanceParamsDto): Promise<string> {\n throw new MethodNotSupportedError();\n }\n\n async getTokenBalance(params: GetTokenBalanceParams): Promise<string> {\n if (!params.token.originTokenAddress) {\n throw new SdkError(\"SUI token must contain 'originTokenAddress'\");\n }\n const balance = await this.suiClient.getBalance({\n owner: params.account,\n coinType: params.token.originTokenAddress,\n });\n return balance.totalBalance;\n }\n\n async getNativeTokenBalance(params: GetNativeTokenBalanceParams): Promise<string> {\n const coinsData: CoinStruct[] = await fetchAllPagesRecursive((cursor: string | null | undefined) =>\n this.suiClient.getCoins({\n owner: params.account,\n cursor,\n })\n );\n if (coinsData.length === 0) {\n return \"0\";\n }\n return coinsData.reduce((total, element) => total + BigInt(element.balance), BigInt(0)).toString();\n }\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AlgoAmount } from "@algorandfoundation/algokit-utils/types/amount";
|
|
2
|
+
import { TransactionComposer } from "@algorandfoundation/algokit-utils/types/composer";
|
|
3
|
+
import algosdk, { Address, Transaction } from "algosdk";
|
|
4
|
+
import { RawAlgTransaction } from "../../models";
|
|
5
|
+
export declare const mNoop: algosdk.ABIMethod;
|
|
6
|
+
export declare function addBudgetNoops(opts: {
|
|
7
|
+
composer: TransactionComposer;
|
|
8
|
+
appId: bigint;
|
|
9
|
+
sender: string | Address;
|
|
10
|
+
signer?: any;
|
|
11
|
+
count: number;
|
|
12
|
+
}): void;
|
|
13
|
+
export declare function feeForInner(innerCount: number): AlgoAmount;
|
|
14
|
+
export declare function encodeTxs(...tx: Transaction[]): RawAlgTransaction;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.mNoop = void 0;
|
|
27
|
+
exports.addBudgetNoops = addBudgetNoops;
|
|
28
|
+
exports.feeForInner = feeForInner;
|
|
29
|
+
exports.encodeTxs = encodeTxs;
|
|
30
|
+
const algosdk_1 = __importStar(require("algosdk"));
|
|
31
|
+
exports.mNoop = new algosdk_1.ABIMethod({
|
|
32
|
+
name: "noop",
|
|
33
|
+
args: [],
|
|
34
|
+
returns: { type: "void" },
|
|
35
|
+
});
|
|
36
|
+
function addBudgetNoops(opts) {
|
|
37
|
+
const { composer, appId, sender, signer, count } = opts;
|
|
38
|
+
for (let i = 0; i < count; i++) {
|
|
39
|
+
composer.addAppCallMethodCall({
|
|
40
|
+
appId,
|
|
41
|
+
method: exports.mNoop,
|
|
42
|
+
args: [],
|
|
43
|
+
sender,
|
|
44
|
+
signer,
|
|
45
|
+
note: `noop_${i}`,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function feeForInner(innerCount) {
|
|
50
|
+
return (innerCount * 1000).microAlgos(); // 1000 μAlgos per tx
|
|
51
|
+
}
|
|
52
|
+
function encodeTxs(...tx) {
|
|
53
|
+
const blobs = tx.map((txn) => algosdk_1.default.encodeUnsignedTransaction(txn));
|
|
54
|
+
return blobs.map((b) => Buffer.from(b).toString("hex"));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/utils/alg/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,wCAkBC;AAED,kCAEC;AAED,8BAGC;AApCD,mDAAmE;AAGtD,QAAA,KAAK,GAAG,IAAI,mBAAS,CAAC;IACjC,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;CAC1B,CAAC,CAAC;AAEH,SAAgB,cAAc,CAAC,IAM9B;IACC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,QAAQ,CAAC,oBAAoB,CAAC;YAC5B,KAAK;YACL,MAAM,EAAE,aAAK;YACb,IAAI,EAAE,EAAE;YACR,MAAM;YACN,MAAM;YACN,IAAI,EAAE,QAAQ,CAAC,EAAE;SAClB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,UAAkB;IAC5C,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,qBAAqB;AAChE,CAAC;AAED,SAAgB,SAAS,CAAC,GAAG,EAAiB;IAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,iBAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC","sourcesContent":["import { AlgoAmount } from \"@algorandfoundation/algokit-utils/types/amount\";\nimport { TransactionComposer } from \"@algorandfoundation/algokit-utils/types/composer\";\nimport algosdk, { ABIMethod, Address, Transaction } from \"algosdk\";\nimport { RawAlgTransaction } from \"../../models\";\n\nexport const mNoop = new ABIMethod({\n name: \"noop\",\n args: [],\n returns: { type: \"void\" },\n});\n\nexport function addBudgetNoops(opts: {\n composer: TransactionComposer;\n appId: bigint;\n sender: string | Address;\n signer?: any;\n count: number;\n}) {\n const { composer, appId, sender, signer, count } = opts;\n for (let i = 0; i < count; i++) {\n composer.addAppCallMethodCall({\n appId,\n method: mNoop,\n args: [],\n sender,\n signer,\n note: `noop_${i}`,\n });\n }\n}\n\nexport function feeForInner(innerCount: number): AlgoAmount {\n return (innerCount * 1000).microAlgos(); // 1000 μAlgos per tx\n}\n\nexport function encodeTxs(...tx: Transaction[]): RawAlgTransaction {\n const blobs = tx.map((txn) => algosdk.encodeUnsignedTransaction(txn));\n return blobs.map((b) => Buffer.from(b).toString(\"hex\"));\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/utils/trx/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/utils/trx/index.ts"],"names":[],"mappings":";;AAKA,gDAWC;AAED,4BAkBC;AAnCD,oDAAoE;AAEpE,oCAAiC;AAE1B,KAAK,UAAU,kBAAkB,CAAC,OAAgB,EAAE,cAA8B;IACvF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,cAAqB,CAAC,CAAC;IAE/D,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,2BAAc,CAAC,qCAAqC,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;IACjD,MAAM,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AACnC,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,OAAgB,EAAE,IAAY,EAAE,OAAO,GAAG,KAAK;IAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,0BAAa,CAAC,uBAAuB,CAAC,CAAC;QACnD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,0BAAa,CAAC,yBAAyB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;AACH,CAAC","sourcesContent":["import { TronWeb } from \"tronweb\";\nimport { InvalidTxError, VerifyTxError } from \"../../../exceptions\";\nimport { RawTransaction } from \"../../models\";\nimport { sleep } from \"../index\";\n\nexport async function sendRawTransaction(tronWeb: TronWeb, rawTransaction: RawTransaction): Promise<{ txId: string }> {\n const signedTx = await tronWeb.trx.sign(rawTransaction as any);\n\n if (!signedTx.signature) {\n throw new InvalidTxError(\"Transaction was not signed properly\");\n }\n\n const receipt = await tronWeb.trx.sendRawTransaction(signedTx);\n const transactionHash = receipt.transaction.txID;\n await verifyTx(tronWeb, transactionHash);\n return { txId: transactionHash };\n}\n\nexport async function verifyTx(tronWeb: TronWeb, txId: string, timeout = 10000): Promise<any> {\n const start = Date.now();\n\n while (true) {\n if (Date.now() - start > timeout) {\n throw new VerifyTxError(\"Transaction not found\");\n }\n const result = await tronWeb.trx.getUnconfirmedTransactionInfo(txId);\n if (!result?.receipt) {\n await sleep(2000);\n continue;\n }\n if (result.receipt.result === \"SUCCESS\") {\n return result;\n } else {\n throw new VerifyTxError(`Transaction status is ${result.receipt.result}`);\n }\n }\n}\n"]}
|
|
@@ -40,6 +40,7 @@ class DefaultYieldService {
|
|
|
40
40
|
apr: "",
|
|
41
41
|
apr30d: "",
|
|
42
42
|
apr7d: "",
|
|
43
|
+
bridgeId: chainData.bridgeId,
|
|
43
44
|
bridgeAddress: chainData.bridgeAddress,
|
|
44
45
|
chainId: chainData.chainId,
|
|
45
46
|
chainName: chainData.name,
|
|
@@ -128,6 +129,9 @@ function getChainYieldService(chainSymbol, api, nodeRpcUrlsConfig, ownerAddress,
|
|
|
128
129
|
case index_1.ChainType.SUI: {
|
|
129
130
|
throw new exceptions_1.MethodNotSupportedError();
|
|
130
131
|
}
|
|
132
|
+
case index_1.ChainType.ALG: {
|
|
133
|
+
throw new exceptions_1.MethodNotSupportedError();
|
|
134
|
+
}
|
|
131
135
|
}
|
|
132
136
|
}
|
|
133
137
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/yield/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { TronWeb } from \"tronweb\";\nimport { FMT_BYTES, FMT_NUMBER, Web3 } from \"web3\";\nimport { Chains } from \"../../chains\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport { AllbridgeCoreClientFiltered } from \"../../client/core-api/core-client-filtered\";\nimport { MethodNotSupportedError } from \"../../exceptions\";\nimport { AllbridgeCoreSdkOptions, ChainType, EssentialWeb3, TokenWithChainDetails } from \"../../index\";\nimport { convertIntAmountToFloat } from \"../../utils/calculation\";\nimport { SYSTEM_PRECISION } from \"../../utils/calculation/constants\";\nimport { validateAmountDecimals, validateAmountGtZero } from \"../../utils/utils\";\nimport { NodeRpcUrlsConfig } from \"../index\";\nimport { Provider } from \"../models\";\nimport { TokenService } from \"../token\";\nimport { EvmYieldService } from \"./evm\";\nimport {\n ChainYieldService,\n CYDToken,\n TokenWithChainDetailsYield,\n YieldBalanceParams,\n YieldCheckAllowanceParams,\n YieldGetAllowanceParams,\n YieldGetEstimatedAmountOnDepositParams,\n YieldGetWithdrawProportionAmountParams,\n YieldWithdrawAmount,\n} from \"./models\";\nimport { DefaultRawYieldTransactionBuilder, RawYieldTransactionBuilder } from \"./raw-yield-transaction-builder\";\nimport { TronYieldService } from \"./trx\";\nimport { isYieldSupported } from \"./validations\";\n\nexport interface YieldService {\n rawTxBuilder: RawYieldTransactionBuilder;\n\n /**\n * Returns a list of supported {@link CYDToken}.\n */\n getCYDTokens(): Promise<CYDToken[]>;\n\n /**\n * Get amount of tokens approved for Yield\n * @param provider - will be used to access the network\n * @param params See {@link YieldGetAllowanceParams}\n * @returns the amount of approved tokens\n */\n getAllowance(params: YieldGetAllowanceParams, provider?: Provider): Promise<string>;\n\n /**\n * Check if the amount of approved tokens is enough\n * @param params See {@link YieldCheckAllowanceParams}\n * @param provider - will be used to access the network\n * @returns true if the amount of approved tokens is enough to make a transfer\n */\n checkAllowance(params: YieldCheckAllowanceParams, provider?: Provider): Promise<boolean>;\n\n /**\n * Get token balance\n * @param params\n * @param provider\n * @returns Token balance\n */\n balanceOf(params: YieldBalanceParams, provider?: Provider): Promise<string>;\n\n /**\n * Calculates the amount of CYD tokens that will be deposited\n * @param params - will be used to access the network\n * @param provider - will be used to access the network\n * @returns amount\n */\n getEstimatedAmountOnDeposit(params: YieldGetEstimatedAmountOnDepositParams, provider?: Provider): Promise<string>;\n\n /**\n * Calculates the amounts of tokens ({@link YieldWithdrawAmount}) will be withdrawn\n * @param params\n * @param provider - will be used to access the network\n * @returns amounts\n */\n getWithdrawAmounts(\n params: YieldGetWithdrawProportionAmountParams,\n provider?: Provider\n ): Promise<YieldWithdrawAmount[]>;\n}\n\nexport class DefaultYieldService implements YieldService {\n public rawTxBuilder: RawYieldTransactionBuilder;\n\n constructor(\n private api: AllbridgeCoreClientFiltered,\n private nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n private params: AllbridgeCoreSdkOptions,\n private tokenService: TokenService\n ) {\n this.rawTxBuilder = new DefaultRawYieldTransactionBuilder(api, nodeRpcUrlsConfig, params, tokenService);\n }\n\n async getCYDTokens(): Promise<CYDToken[]> {\n const result: CYDToken[] = [];\n const chainMap = await this.api.getChainDetailsMap(\"pool\");\n\n Object.values(chainMap).forEach((chainData) => {\n if (chainData.yieldAddress) {\n const cydToken = chainData.tokens.find((t) => t.tokenAddress === chainData.yieldAddress);\n const tokens: TokenWithChainDetailsYield[] = chainData.tokens.filter(isYieldSupported);\n if (tokens.length > 0) {\n const cydDefined: TokenWithChainDetails = cydToken ?? {\n allbridgeChainId: chainData.allbridgeChainId,\n apr: \"\",\n apr30d: \"\",\n apr7d: \"\",\n bridgeAddress: chainData.bridgeAddress,\n chainId: chainData.chainId,\n chainName: chainData.name,\n chainSymbol: chainData.chainSymbol,\n chainType: chainData.chainType,\n confirmations: chainData.confirmations,\n decimals: 3,\n feeShare: \"\",\n lpRate: \"\",\n name: \"Core Yield\",\n poolAddress: \"\",\n symbol: \"CYD\",\n tokenAddress: chainData.yieldAddress,\n transferTime: {},\n txCostAmount: { maxAmount: \"0\", swap: \"0\", transfer: \"0\" },\n yieldAddress: chainData.yieldAddress,\n };\n result.push({\n ...cydDefined,\n yieldAddress: chainData.yieldAddress,\n tokens: tokens,\n });\n }\n }\n });\n\n return result;\n }\n\n async getAllowance(params: YieldGetAllowanceParams, provider?: Provider): Promise<string> {\n return await this.tokenService.getAllowance({ ...params, spender: params.token.yieldAddress }, provider);\n }\n\n async checkAllowance(params: YieldCheckAllowanceParams, provider?: Provider): Promise<boolean> {\n return this.tokenService.checkAllowance({ ...params, spender: params.token.yieldAddress }, provider);\n }\n\n async balanceOf(params: YieldBalanceParams, provider?: Provider): Promise<string> {\n return getChainYieldService(\n params.token.chainSymbol,\n this.api,\n this.nodeRpcUrlsConfig,\n params.owner,\n provider\n ).balanceOf(params);\n }\n\n async getEstimatedAmountOnDeposit(\n params: YieldGetEstimatedAmountOnDepositParams,\n provider?: Provider\n ): Promise<string> {\n validateAmountGtZero(params.amount);\n validateAmountDecimals(\"amount\", params.amount, params.token.decimals);\n return getChainYieldService(\n params.token.chainSymbol,\n this.api,\n this.nodeRpcUrlsConfig,\n params.token.yieldAddress,\n provider\n ).getEstimatedAmountOnDeposit(params);\n }\n\n async getWithdrawAmounts(\n params: YieldGetWithdrawProportionAmountParams,\n provider?: Provider\n ): Promise<YieldWithdrawAmount[]> {\n validateAmountGtZero(params.amount);\n validateAmountDecimals(\"amount\", params.amount, SYSTEM_PRECISION);\n const proportionAmounts = await getChainYieldService(\n params.cydToken.chainSymbol,\n this.api,\n this.nodeRpcUrlsConfig,\n params.owner,\n provider\n ).getWithdrawProportionAmount(params);\n return params.cydToken.tokens\n .filter((token) => proportionAmounts[token.yieldId] !== undefined)\n .map((token) => ({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n amount: convertIntAmountToFloat(proportionAmounts[token.yieldId]!, token.decimals).toFixed(),\n token: token,\n }));\n }\n}\n\nexport function getChainYieldService(\n chainSymbol: string,\n api: AllbridgeCoreClient,\n nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n ownerAddress: string,\n provider?: Provider\n): ChainYieldService {\n switch (Chains.getChainProperty(chainSymbol).chainType) {\n case ChainType.EVM: {\n if (provider) {\n return new EvmYieldService(provider as EssentialWeb3, api);\n } else {\n const nodeRpcUrl = nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n const web3 = new Web3(nodeRpcUrl);\n web3.defaultReturnFormat = { number: FMT_NUMBER.STR, bytes: FMT_BYTES.HEX };\n return new EvmYieldService(web3, api);\n }\n }\n case ChainType.TRX: {\n if (provider) {\n return new TronYieldService(provider as TronWeb, api);\n } else {\n const nodeRpcUrl = nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n const tronWeb = new TronWeb({ fullHost: nodeRpcUrl });\n tronWeb.setAddress(ownerAddress);\n return new TronYieldService(tronWeb, api);\n }\n }\n case ChainType.SOLANA: {\n throw new MethodNotSupportedError();\n }\n case ChainType.SRB: {\n throw new MethodNotSupportedError();\n }\n case ChainType.SUI: {\n throw new MethodNotSupportedError();\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/yield/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { TronWeb } from \"tronweb\";\nimport { FMT_BYTES, FMT_NUMBER, Web3 } from \"web3\";\nimport { Chains } from \"../../chains\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport { AllbridgeCoreClientFiltered } from \"../../client/core-api/core-client-filtered\";\nimport { MethodNotSupportedError } from \"../../exceptions\";\nimport { AllbridgeCoreSdkOptions, ChainType, EssentialWeb3, TokenWithChainDetails } from \"../../index\";\nimport { convertIntAmountToFloat } from \"../../utils/calculation\";\nimport { SYSTEM_PRECISION } from \"../../utils/calculation/constants\";\nimport { validateAmountDecimals, validateAmountGtZero } from \"../../utils/utils\";\nimport { NodeRpcUrlsConfig } from \"../index\";\nimport { Provider } from \"../models\";\nimport { TokenService } from \"../token\";\nimport { EvmYieldService } from \"./evm\";\nimport {\n ChainYieldService,\n CYDToken,\n TokenWithChainDetailsYield,\n YieldBalanceParams,\n YieldCheckAllowanceParams,\n YieldGetAllowanceParams,\n YieldGetEstimatedAmountOnDepositParams,\n YieldGetWithdrawProportionAmountParams,\n YieldWithdrawAmount,\n} from \"./models\";\nimport { DefaultRawYieldTransactionBuilder, RawYieldTransactionBuilder } from \"./raw-yield-transaction-builder\";\nimport { TronYieldService } from \"./trx\";\nimport { isYieldSupported } from \"./validations\";\n\nexport interface YieldService {\n rawTxBuilder: RawYieldTransactionBuilder;\n\n /**\n * Returns a list of supported {@link CYDToken}.\n */\n getCYDTokens(): Promise<CYDToken[]>;\n\n /**\n * Get amount of tokens approved for Yield\n * @param provider - will be used to access the network\n * @param params See {@link YieldGetAllowanceParams}\n * @returns the amount of approved tokens\n */\n getAllowance(params: YieldGetAllowanceParams, provider?: Provider): Promise<string>;\n\n /**\n * Check if the amount of approved tokens is enough\n * @param params See {@link YieldCheckAllowanceParams}\n * @param provider - will be used to access the network\n * @returns true if the amount of approved tokens is enough to make a transfer\n */\n checkAllowance(params: YieldCheckAllowanceParams, provider?: Provider): Promise<boolean>;\n\n /**\n * Get token balance\n * @param params\n * @param provider\n * @returns Token balance\n */\n balanceOf(params: YieldBalanceParams, provider?: Provider): Promise<string>;\n\n /**\n * Calculates the amount of CYD tokens that will be deposited\n * @param params - will be used to access the network\n * @param provider - will be used to access the network\n * @returns amount\n */\n getEstimatedAmountOnDeposit(params: YieldGetEstimatedAmountOnDepositParams, provider?: Provider): Promise<string>;\n\n /**\n * Calculates the amounts of tokens ({@link YieldWithdrawAmount}) will be withdrawn\n * @param params\n * @param provider - will be used to access the network\n * @returns amounts\n */\n getWithdrawAmounts(\n params: YieldGetWithdrawProportionAmountParams,\n provider?: Provider\n ): Promise<YieldWithdrawAmount[]>;\n}\n\nexport class DefaultYieldService implements YieldService {\n public rawTxBuilder: RawYieldTransactionBuilder;\n\n constructor(\n private api: AllbridgeCoreClientFiltered,\n private nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n private params: AllbridgeCoreSdkOptions,\n private tokenService: TokenService\n ) {\n this.rawTxBuilder = new DefaultRawYieldTransactionBuilder(api, nodeRpcUrlsConfig, params, tokenService);\n }\n\n async getCYDTokens(): Promise<CYDToken[]> {\n const result: CYDToken[] = [];\n const chainMap = await this.api.getChainDetailsMap(\"pool\");\n\n Object.values(chainMap).forEach((chainData) => {\n if (chainData.yieldAddress) {\n const cydToken = chainData.tokens.find((t) => t.tokenAddress === chainData.yieldAddress);\n const tokens: TokenWithChainDetailsYield[] = chainData.tokens.filter(isYieldSupported);\n if (tokens.length > 0) {\n const cydDefined: TokenWithChainDetails = cydToken ?? {\n allbridgeChainId: chainData.allbridgeChainId,\n apr: \"\",\n apr30d: \"\",\n apr7d: \"\",\n bridgeId: chainData.bridgeId,\n bridgeAddress: chainData.bridgeAddress,\n chainId: chainData.chainId,\n chainName: chainData.name,\n chainSymbol: chainData.chainSymbol,\n chainType: chainData.chainType,\n confirmations: chainData.confirmations,\n decimals: 3,\n feeShare: \"\",\n lpRate: \"\",\n name: \"Core Yield\",\n poolAddress: \"\",\n symbol: \"CYD\",\n tokenAddress: chainData.yieldAddress,\n transferTime: {},\n txCostAmount: { maxAmount: \"0\", swap: \"0\", transfer: \"0\" },\n yieldAddress: chainData.yieldAddress,\n };\n result.push({\n ...cydDefined,\n yieldAddress: chainData.yieldAddress,\n tokens: tokens,\n });\n }\n }\n });\n\n return result;\n }\n\n async getAllowance(params: YieldGetAllowanceParams, provider?: Provider): Promise<string> {\n return await this.tokenService.getAllowance({ ...params, spender: params.token.yieldAddress }, provider);\n }\n\n async checkAllowance(params: YieldCheckAllowanceParams, provider?: Provider): Promise<boolean> {\n return this.tokenService.checkAllowance({ ...params, spender: params.token.yieldAddress }, provider);\n }\n\n async balanceOf(params: YieldBalanceParams, provider?: Provider): Promise<string> {\n return getChainYieldService(\n params.token.chainSymbol,\n this.api,\n this.nodeRpcUrlsConfig,\n params.owner,\n provider\n ).balanceOf(params);\n }\n\n async getEstimatedAmountOnDeposit(\n params: YieldGetEstimatedAmountOnDepositParams,\n provider?: Provider\n ): Promise<string> {\n validateAmountGtZero(params.amount);\n validateAmountDecimals(\"amount\", params.amount, params.token.decimals);\n return getChainYieldService(\n params.token.chainSymbol,\n this.api,\n this.nodeRpcUrlsConfig,\n params.token.yieldAddress,\n provider\n ).getEstimatedAmountOnDeposit(params);\n }\n\n async getWithdrawAmounts(\n params: YieldGetWithdrawProportionAmountParams,\n provider?: Provider\n ): Promise<YieldWithdrawAmount[]> {\n validateAmountGtZero(params.amount);\n validateAmountDecimals(\"amount\", params.amount, SYSTEM_PRECISION);\n const proportionAmounts = await getChainYieldService(\n params.cydToken.chainSymbol,\n this.api,\n this.nodeRpcUrlsConfig,\n params.owner,\n provider\n ).getWithdrawProportionAmount(params);\n return params.cydToken.tokens\n .filter((token) => proportionAmounts[token.yieldId] !== undefined)\n .map((token) => ({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n amount: convertIntAmountToFloat(proportionAmounts[token.yieldId]!, token.decimals).toFixed(),\n token: token,\n }));\n }\n}\n\nexport function getChainYieldService(\n chainSymbol: string,\n api: AllbridgeCoreClient,\n nodeRpcUrlsConfig: NodeRpcUrlsConfig,\n ownerAddress: string,\n provider?: Provider\n): ChainYieldService {\n switch (Chains.getChainProperty(chainSymbol).chainType) {\n case ChainType.EVM: {\n if (provider) {\n return new EvmYieldService(provider as EssentialWeb3, api);\n } else {\n const nodeRpcUrl = nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n const web3 = new Web3(nodeRpcUrl);\n web3.defaultReturnFormat = { number: FMT_NUMBER.STR, bytes: FMT_BYTES.HEX };\n return new EvmYieldService(web3, api);\n }\n }\n case ChainType.TRX: {\n if (provider) {\n return new TronYieldService(provider as TronWeb, api);\n } else {\n const nodeRpcUrl = nodeRpcUrlsConfig.getNodeRpcUrl(chainSymbol);\n const tronWeb = new TronWeb({ fullHost: nodeRpcUrl });\n tronWeb.setAddress(ownerAddress);\n return new TronYieldService(tronWeb, api);\n }\n }\n case ChainType.SOLANA: {\n throw new MethodNotSupportedError();\n }\n case ChainType.SRB: {\n throw new MethodNotSupportedError();\n }\n case ChainType.SUI: {\n throw new MethodNotSupportedError();\n }\n case ChainType.ALG: {\n throw new MethodNotSupportedError();\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens-info.model.js","sourceRoot":"","sources":["../../../src/tokens-info/tokens-info.model.ts"],"names":[],"mappings":"","sourcesContent":["import { BasicChainProperties } from \"../chains/models\";\nimport { Messenger } from \"../client/core-api/core-api.model\";\n\n/**\n * Type representing a map of blockchain chain symbols to their corresponding details, including token information.\n *\n * @typedef {Record<string, ChainDetailsWithTokens>} ChainDetailsMap\n * @property {string} chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @property {ChainDetailsWithTokens} chainDetails - The detailed information of the specified chain, including token information.\n */\nexport type ChainDetailsMap = Record<string, ChainDetailsWithTokens>;\n\nexport type ChainDetailsMapWithFlags = Record<string, ChainDetailsWithTokensWithFlags>;\n\n/**\n * Contains some blockchain details\n */\nexport interface ChainDetails extends BasicChainProperties {\n /**\n * Allbridge's Id\n */\n allbridgeChainId: number;\n /**\n * Bridge contract address\n */\n bridgeAddress: string;\n /**\n * OFT Bridge contract address\n * Optional. Defined if the chain supports OFT\n */\n oftBridgeAddress?: string;\n /**\n * Yield contract address\n */\n yieldAddress?: string;\n /**\n * Average transfer time to other blockchains\n */\n transferTime: TransferTime;\n /**\n * Transfers costs\n */\n txCostAmount: TxCostAmount;\n /**\n * Number of confirmations required\n */\n confirmations: number;\n /**\n * Sui addresses\n * Optional. Defined for SUI\n */\n suiAddresses?: SuiAddresses;\n}\n\n/**\n * Contains tokens list\n */\nexport interface ChainDetailsWithTokens extends ChainDetails {\n /**\n * Tokens\n */\n tokens: TokenWithChainDetails[];\n}\n\n/**\n * Contains tokens list\n */\nexport interface ChainDetailsWithTokensWithFlags extends ChainDetails {\n /**\n * Tokens\n */\n tokens: TokenWithChainDetailsWithFlags[];\n}\n\n/**\n * Contains token information\n */\nexport interface Token {\n /**\n * Token symbol\n */\n symbol: string;\n /**\n * Token name\n */\n name: string;\n /**\n * Token decimals\n */\n decimals: number;\n /**\n * Token pool address\n */\n poolAddress: string;\n /**\n * Token address\n */\n tokenAddress: string;\n /**\n * Token origin address\n */\n originTokenAddress?: string;\n /**\n * Token CCTP address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpAddress?: string;\n /**\n * Token CCTP V2 address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpFeeShare?: string;\n /**\n * Token CCTP address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpV2Address?: string;\n /**\n * Token CCTP V2 address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpV2FeeShare?: string;\n /**\n * Internal identifier for the same token across different chains.\n *\n * Used to link representations of a token deployed on multiple networks (e.g., Ethereum, BSC).\n * Tokens with the same `oftId` are considered to be equivalent.\n *\n * Optional. Defined if OFT supported by token\n */\n oftId?: string;\n /**\n * Token fee share\n */\n feeShare: string;\n /**\n * @Deprecated use {@link apr7d}</br>\n * Token APR\n */\n apr: string;\n /**\n * Token APR based on last 7 days\n */\n apr7d: string;\n /**\n * Token APR based on last 30 days\n */\n apr30d: string;\n /**\n * Token LP rate\n */\n lpRate: string;\n\n yieldId?: number;\n /**\n * Sui addresses\n * Optional. Defined for SUI\n */\n suiAddresses?: SuiAddresses;\n}\n\nexport interface SuiAddresses {\n bridgeAddress: string;\n bridgeAddressOrigin?: string;\n bridgeObjectAddress: string;\n\n allbridgeMessengerAddress: string;\n allbridgeMessengerAddressOrigin?: string;\n allbridgeMessengerObjectAddress: string;\n\n gasOracleAddress: string;\n gasOracleAddressOrigin?: string;\n gasOracleObjectAddress: string;\n\n utilsAddress: string;\n\n wormholeMessengerAddress: string;\n wormholeMessengerAddressOrigin?: string;\n wormholeMessengerObjectAddress: string;\n wormholeStateObjectAddress: string;\n\n cctpAddress: string;\n cctpAddressOrigin?: string;\n cctpObjectAddress: string;\n\n cctpDenyListObjectAddress: string;\n cctpMessageTransmitterStateObjectAddress: string;\n cctpTokenMessengerMinterStateObjectAddress: string;\n cctpTreasuryObjectAddress: string;\n}\n\n/**\n * General Token Interface\n */\nexport interface TokenWithChainDetails extends Token, Omit<ChainDetails, \"name\"> {\n /**\n * Blockchain network name\n */\n chainName: string;\n}\n\nexport interface TokenWithChainDetailsWithFlags extends TokenWithChainDetails {\n flags: { swap: boolean; pool: boolean };\n}\n\n/**\n * General Pool Interface\n */\nexport interface PoolInfo {\n /**\n * Pool A value\n */\n aValue: string;\n /**\n * Pool D value\n */\n dValue: string;\n /**\n * Pool token balance\n */\n tokenBalance: string;\n /**\n * Pool virtual USD balance\n */\n vUsdBalance: string;\n /**\n * Pool total liquidity amount\n */\n totalLpAmount: string;\n /**\n * Current accumulated reward per share shifted by P bits\n */\n accRewardPerShareP: string;\n /**\n * P value, needed for accRewardPerShareP\n */\n p: number;\n /**\n * Pool imbalance\n */\n imbalance: string;\n}\n\n/**\n * Type representing transfer times for various blockchain chains.\n *\n * @typedef {Record<string, MessengerTransferTime>} TransferTime\n * @property {string} chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @property {MessengerTransferTime} transferTime - The average transfer time details for the specified chain.\n */\nexport type TransferTime = Record<string, MessengerTransferTime>;\n\n/**\n * Contains Avg transaction time withing different messenger protocols\n */\nexport type MessengerTransferTime = {\n [messenger in Messenger]?: number;\n};\n\nexport interface PoolKeyObject {\n chainSymbol: string;\n poolAddress: string;\n}\n\n/**\n * Contains transfer costs\n */\nexport interface TxCostAmount {\n /**\n * The maximum gas amount that can be received as extra gas for one transfer\n */\n maxAmount: string;\n /**\n * Swap cost\n */\n swap: string;\n /**\n * Transfer cost\n */\n transfer: string;\n}\n\nexport type PoolInfoMap = Record<string, PoolInfo>;\n"]}
|
|
1
|
+
{"version":3,"file":"tokens-info.model.js","sourceRoot":"","sources":["../../../src/tokens-info/tokens-info.model.ts"],"names":[],"mappings":"","sourcesContent":["import { BasicChainProperties } from \"../chains/models\";\nimport { Messenger } from \"../client/core-api/core-api.model\";\n\n/**\n * Type representing a map of blockchain chain symbols to their corresponding details, including token information.\n *\n * @typedef {Record<string, ChainDetailsWithTokens>} ChainDetailsMap\n * @property {string} chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @property {ChainDetailsWithTokens} chainDetails - The detailed information of the specified chain, including token information.\n */\nexport type ChainDetailsMap = Record<string, ChainDetailsWithTokens>;\n\nexport type ChainDetailsMapWithFlags = Record<string, ChainDetailsWithTokensWithFlags>;\n\n/**\n * Contains some blockchain details\n */\nexport interface ChainDetails extends BasicChainProperties {\n /**\n * Allbridge's Id\n */\n allbridgeChainId: number;\n /**\n * Algo Bridge appId\n */\n bridgeId?: string;\n /**\n * Bridge contract address\n */\n bridgeAddress: string;\n /**\n * OFT Bridge contract address\n * Optional. Defined if the chain supports OFT\n */\n oftBridgeAddress?: string;\n /**\n * Yield contract address\n */\n yieldAddress?: string;\n /**\n * Average transfer time to other blockchains\n */\n transferTime: TransferTime;\n /**\n * Transfers costs\n */\n txCostAmount: TxCostAmount;\n /**\n * Number of confirmations required\n */\n confirmations: number;\n /**\n * Sui addresses\n * Optional. Defined for SUI\n */\n suiAddresses?: SuiAddresses;\n}\n\n/**\n * Contains tokens list\n */\nexport interface ChainDetailsWithTokens extends ChainDetails {\n /**\n * Tokens\n */\n tokens: TokenWithChainDetails[];\n}\n\n/**\n * Contains tokens list\n */\nexport interface ChainDetailsWithTokensWithFlags extends ChainDetails {\n /**\n * Tokens\n */\n tokens: TokenWithChainDetailsWithFlags[];\n}\n\n/**\n * Contains token information\n */\nexport interface Token {\n /**\n * Token symbol\n */\n symbol: string;\n /**\n * Token name\n */\n name: string;\n /**\n * Token decimals\n */\n decimals: number;\n /**\n * Token pool address\n */\n poolAddress: string;\n /**\n * Token address\n */\n tokenAddress: string;\n /**\n * Token origin address\n */\n originTokenAddress?: string;\n /**\n * Token CCTP address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpAddress?: string;\n /**\n * Token CCTP V2 address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpFeeShare?: string;\n /**\n * Token CCTP address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpV2Address?: string;\n /**\n * Token CCTP V2 address</br>\n * Optional. Defined if CCTP supported by token\n */\n cctpV2FeeShare?: string;\n /**\n * Internal identifier for the same token across different chains.\n *\n * Used to link representations of a token deployed on multiple networks (e.g., Ethereum, BSC).\n * Tokens with the same `oftId` are considered to be equivalent.\n *\n * Optional. Defined if OFT supported by token\n */\n oftId?: string;\n /**\n * Token fee share\n */\n feeShare: string;\n /**\n * @Deprecated use {@link apr7d}</br>\n * Token APR\n */\n apr: string;\n /**\n * Token APR based on last 7 days\n */\n apr7d: string;\n /**\n * Token APR based on last 30 days\n */\n apr30d: string;\n /**\n * Token LP rate\n */\n lpRate: string;\n\n yieldId?: number;\n /**\n * Sui addresses\n * Optional. Defined for SUI\n */\n suiAddresses?: SuiAddresses;\n}\n\nexport interface SuiAddresses {\n bridgeAddress: string;\n bridgeAddressOrigin?: string;\n bridgeObjectAddress: string;\n\n allbridgeMessengerAddress: string;\n allbridgeMessengerAddressOrigin?: string;\n allbridgeMessengerObjectAddress: string;\n\n gasOracleAddress: string;\n gasOracleAddressOrigin?: string;\n gasOracleObjectAddress: string;\n\n utilsAddress: string;\n\n wormholeMessengerAddress: string;\n wormholeMessengerAddressOrigin?: string;\n wormholeMessengerObjectAddress: string;\n wormholeStateObjectAddress: string;\n\n cctpAddress: string;\n cctpAddressOrigin?: string;\n cctpObjectAddress: string;\n\n cctpDenyListObjectAddress: string;\n cctpMessageTransmitterStateObjectAddress: string;\n cctpTokenMessengerMinterStateObjectAddress: string;\n cctpTreasuryObjectAddress: string;\n}\n\n/**\n * General Token Interface\n */\nexport interface TokenWithChainDetails extends Token, Omit<ChainDetails, \"name\"> {\n /**\n * Blockchain network name\n */\n chainName: string;\n}\n\nexport interface TokenWithChainDetailsWithFlags extends TokenWithChainDetails {\n flags: { swap: boolean; pool: boolean };\n}\n\n/**\n * General Pool Interface\n */\nexport interface PoolInfo {\n /**\n * Pool A value\n */\n aValue: string;\n /**\n * Pool D value\n */\n dValue: string;\n /**\n * Pool token balance\n */\n tokenBalance: string;\n /**\n * Pool virtual USD balance\n */\n vUsdBalance: string;\n /**\n * Pool total liquidity amount\n */\n totalLpAmount: string;\n /**\n * Current accumulated reward per share shifted by P bits\n */\n accRewardPerShareP: string;\n /**\n * P value, needed for accRewardPerShareP\n */\n p: number;\n /**\n * Pool imbalance\n */\n imbalance: string;\n}\n\n/**\n * Type representing transfer times for various blockchain chains.\n *\n * @typedef {Record<string, MessengerTransferTime>} TransferTime\n * @property {string} chainSymbol - The symbol of the chain representing one of the supported blockchain networks (e.g., \"ETH\" for Ethereum). For more details, see: {@link ChainSymbol}.\n * @property {MessengerTransferTime} transferTime - The average transfer time details for the specified chain.\n */\nexport type TransferTime = Record<string, MessengerTransferTime>;\n\n/**\n * Contains Avg transaction time withing different messenger protocols\n */\nexport type MessengerTransferTime = {\n [messenger in Messenger]?: number;\n};\n\nexport interface PoolKeyObject {\n chainSymbol: string;\n poolAddress: string;\n}\n\n/**\n * Contains transfer costs\n */\nexport interface TxCostAmount {\n /**\n * The maximum gas amount that can be received as extra gas for one transfer\n */\n maxAmount: string;\n /**\n * Swap cost\n */\n swap: string;\n /**\n * Transfer cost\n */\n transfer: string;\n}\n\nexport type PoolInfoMap = Record<string, PoolInfo>;\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Algodv2 } from "algosdk";
|
|
2
|
+
import { RawAlgTransaction } from "../../index";
|
|
3
|
+
import { NodeRpcUrlsConfig } from "../../services";
|
|
4
|
+
/**
|
|
5
|
+
* Contains usefully Alg methods
|
|
6
|
+
*/
|
|
7
|
+
export interface AlgUtils {
|
|
8
|
+
checkAssetOptIn(assetId: string | bigint, sender: string, client?: Algodv2): Promise<boolean>;
|
|
9
|
+
checkAppOptIn(appId: string | bigint, sender: string, client?: Algodv2): Promise<boolean>;
|
|
10
|
+
buildRawTransactionAssetOptIn(assetId: string | bigint, sender: string, client?: Algodv2): Promise<RawAlgTransaction>;
|
|
11
|
+
buildRawTransactionAppOptIn(appId: string | bigint, sender: string, client?: Algodv2): Promise<RawAlgTransaction>;
|
|
12
|
+
}
|
|
13
|
+
export declare class DefaultAlgUtils implements AlgUtils {
|
|
14
|
+
readonly nodeRpcUrlsConfig: NodeRpcUrlsConfig;
|
|
15
|
+
constructor(nodeRpcUrlsConfig: NodeRpcUrlsConfig);
|
|
16
|
+
checkAssetOptIn(assetId: string | bigint, sender: string, client?: Algodv2): Promise<boolean>;
|
|
17
|
+
checkAppOptIn(appId: string | bigint, sender: string, client?: Algodv2): Promise<boolean>;
|
|
18
|
+
buildRawTransactionAssetOptIn(assetId: string | bigint, sender: string, client?: Algodv2): Promise<RawAlgTransaction>;
|
|
19
|
+
buildRawTransactionAppOptIn(appId: string | bigint, sender: string, client?: Algodv2): Promise<RawAlgTransaction>;
|
|
20
|
+
private getAlgorand;
|
|
21
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultAlgUtils = void 0;
|
|
4
|
+
const algokit_utils_1 = require("@algorandfoundation/algokit-utils");
|
|
5
|
+
const algosdk_1 = require("algosdk");
|
|
6
|
+
const index_1 = require("../../index");
|
|
7
|
+
const alg_1 = require("../../services/utils/alg");
|
|
8
|
+
class DefaultAlgUtils {
|
|
9
|
+
nodeRpcUrlsConfig;
|
|
10
|
+
constructor(nodeRpcUrlsConfig) {
|
|
11
|
+
this.nodeRpcUrlsConfig = nodeRpcUrlsConfig;
|
|
12
|
+
}
|
|
13
|
+
async checkAssetOptIn(assetId, sender, client) {
|
|
14
|
+
const algorand = this.getAlgorand(client);
|
|
15
|
+
if (typeof assetId === "string") {
|
|
16
|
+
assetId = BigInt(assetId);
|
|
17
|
+
}
|
|
18
|
+
const info = await algorand.account.getInformation(sender);
|
|
19
|
+
const assets = info.assets;
|
|
20
|
+
if (assets) {
|
|
21
|
+
const isOptedIn = assets.find(({ assetId: id }) => id === assetId);
|
|
22
|
+
return isOptedIn !== undefined;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
async checkAppOptIn(appId, sender, client) {
|
|
27
|
+
const algorand = this.getAlgorand(client);
|
|
28
|
+
if (typeof appId === "string") {
|
|
29
|
+
appId = BigInt(appId);
|
|
30
|
+
}
|
|
31
|
+
const info = await algorand.account.getInformation(sender);
|
|
32
|
+
const localStates = info.appsLocalState;
|
|
33
|
+
if (localStates) {
|
|
34
|
+
const isOptedIn = localStates.find(({ id }) => id === appId);
|
|
35
|
+
return isOptedIn !== undefined;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
async buildRawTransactionAssetOptIn(assetId, sender, client) {
|
|
40
|
+
const algorand = this.getAlgorand(client);
|
|
41
|
+
if (typeof assetId === "string") {
|
|
42
|
+
assetId = BigInt(assetId);
|
|
43
|
+
}
|
|
44
|
+
const tx = await algorand.createTransaction.assetOptIn({ assetId: assetId, sender: sender });
|
|
45
|
+
return (0, alg_1.encodeTxs)(tx);
|
|
46
|
+
}
|
|
47
|
+
async buildRawTransactionAppOptIn(appId, sender, client) {
|
|
48
|
+
const algorand = this.getAlgorand(client);
|
|
49
|
+
if (typeof appId === "string") {
|
|
50
|
+
appId = BigInt(appId);
|
|
51
|
+
}
|
|
52
|
+
const composer = algorand.newGroup();
|
|
53
|
+
const signer = algorand.account.random();
|
|
54
|
+
composer.addAppCallMethodCall({
|
|
55
|
+
appId,
|
|
56
|
+
method: new algosdk_1.ABIMethod({
|
|
57
|
+
name: "optInToApplication",
|
|
58
|
+
desc: undefined,
|
|
59
|
+
args: [],
|
|
60
|
+
returns: { type: "void", desc: undefined },
|
|
61
|
+
events: [],
|
|
62
|
+
readonly: false,
|
|
63
|
+
}),
|
|
64
|
+
args: [],
|
|
65
|
+
sender,
|
|
66
|
+
signer: signer,
|
|
67
|
+
onComplete: algosdk_1.OnApplicationComplete.OptInOC,
|
|
68
|
+
});
|
|
69
|
+
const { transactions } = await composer.buildTransactions();
|
|
70
|
+
return (0, alg_1.encodeTxs)(...transactions);
|
|
71
|
+
}
|
|
72
|
+
getAlgorand(client) {
|
|
73
|
+
if (client) {
|
|
74
|
+
return algokit_utils_1.AlgorandClient.fromClients({ algod: client });
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(index_1.ChainSymbol.ALG);
|
|
78
|
+
return algokit_utils_1.AlgorandClient.fromConfig({
|
|
79
|
+
algodConfig: { server: nodeRpcUrl },
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.DefaultAlgUtils = DefaultAlgUtils;
|
|
85
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/alg/index.ts"],"names":[],"mappings":";;;AAAA,qEAAmE;AACnE,qCAAoE;AACpE,uCAA6D;AAE7D,kDAAqD;AAYrD,MAAa,eAAe;IACL;IAArB,YAAqB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;IAAG,CAAC;IAE7D,KAAK,CAAC,eAAe,CAAC,OAAwB,EAAE,MAAc,EAAE,MAAgB;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;YACnE,OAAO,SAAS,KAAK,SAAS,CAAC;QACjC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAsB,EAAE,MAAc,EAAE,MAAgB;QAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;QACxC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC;YAC7D,OAAO,SAAS,KAAK,SAAS,CAAC;QACjC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,6BAA6B,CACjC,OAAwB,EACxB,MAAc,EACd,MAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7F,OAAO,IAAA,eAAS,EAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,2BAA2B,CAC/B,KAAsB,EACtB,MAAc,EACd,MAAgB;QAEhB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACzC,QAAQ,CAAC,oBAAoB,CAAC;YAC5B,KAAK;YACL,MAAM,EAAE,IAAI,mBAAS,CAAC;gBACpB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,EAAE;gBACR,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1C,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,IAAI,EAAE,EAAE;YACR,MAAM;YACN,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,+BAAqB,CAAC,OAAO;SAC1C,CAAC,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,CAAC;QAC5D,OAAO,IAAA,eAAS,EAAC,GAAG,YAAY,CAAC,CAAC;IACpC,CAAC;IAEO,WAAW,CAAC,MAAgB;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,8BAAc,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,mBAAW,CAAC,GAAG,CAAC,CAAC;YACzE,OAAO,8BAAc,CAAC,UAAU,CAAC;gBAC/B,WAAW,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;aACpC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF;AArFD,0CAqFC","sourcesContent":["import { AlgorandClient } from \"@algorandfoundation/algokit-utils\";\nimport { ABIMethod, Algodv2, OnApplicationComplete } from \"algosdk\";\nimport { ChainSymbol, RawAlgTransaction } from \"../../index\";\nimport { NodeRpcUrlsConfig } from \"../../services\";\nimport { encodeTxs } from \"../../services/utils/alg\";\n\n/**\n * Contains usefully Alg methods\n */\nexport interface AlgUtils {\n checkAssetOptIn(assetId: string | bigint, sender: string, client?: Algodv2): Promise<boolean>;\n checkAppOptIn(appId: string | bigint, sender: string, client?: Algodv2): Promise<boolean>;\n buildRawTransactionAssetOptIn(assetId: string | bigint, sender: string, client?: Algodv2): Promise<RawAlgTransaction>;\n buildRawTransactionAppOptIn(appId: string | bigint, sender: string, client?: Algodv2): Promise<RawAlgTransaction>;\n}\n\nexport class DefaultAlgUtils implements AlgUtils {\n constructor(readonly nodeRpcUrlsConfig: NodeRpcUrlsConfig) {}\n\n async checkAssetOptIn(assetId: string | bigint, sender: string, client?: Algodv2): Promise<boolean> {\n const algorand = this.getAlgorand(client);\n if (typeof assetId === \"string\") {\n assetId = BigInt(assetId);\n }\n const info = await algorand.account.getInformation(sender);\n const assets = info.assets;\n if (assets) {\n const isOptedIn = assets.find(({ assetId: id }) => id === assetId);\n return isOptedIn !== undefined;\n }\n return false;\n }\n\n async checkAppOptIn(appId: string | bigint, sender: string, client?: Algodv2): Promise<boolean> {\n const algorand = this.getAlgorand(client);\n if (typeof appId === \"string\") {\n appId = BigInt(appId);\n }\n const info = await algorand.account.getInformation(sender);\n const localStates = info.appsLocalState;\n if (localStates) {\n const isOptedIn = localStates.find(({ id }) => id === appId);\n return isOptedIn !== undefined;\n }\n return false;\n }\n\n async buildRawTransactionAssetOptIn(\n assetId: string | bigint,\n sender: string,\n client?: Algodv2\n ): Promise<RawAlgTransaction> {\n const algorand = this.getAlgorand(client);\n if (typeof assetId === \"string\") {\n assetId = BigInt(assetId);\n }\n const tx = await algorand.createTransaction.assetOptIn({ assetId: assetId, sender: sender });\n return encodeTxs(tx);\n }\n\n async buildRawTransactionAppOptIn(\n appId: string | bigint,\n sender: string,\n client?: Algodv2\n ): Promise<RawAlgTransaction> {\n const algorand = this.getAlgorand(client);\n if (typeof appId === \"string\") {\n appId = BigInt(appId);\n }\n\n const composer = algorand.newGroup();\n const signer = algorand.account.random();\n composer.addAppCallMethodCall({\n appId,\n method: new ABIMethod({\n name: \"optInToApplication\",\n desc: undefined,\n args: [],\n returns: { type: \"void\", desc: undefined },\n events: [],\n readonly: false,\n }),\n args: [],\n sender,\n signer: signer,\n onComplete: OnApplicationComplete.OptInOC,\n });\n const { transactions } = await composer.buildTransactions();\n return encodeTxs(...transactions);\n }\n\n private getAlgorand(client?: Algodv2): AlgorandClient {\n if (client) {\n return AlgorandClient.fromClients({ algod: client });\n } else {\n const nodeRpcUrl = this.nodeRpcUrlsConfig.getNodeRpcUrl(ChainSymbol.ALG);\n return AlgorandClient.fromConfig({\n algodConfig: { server: nodeRpcUrl },\n });\n }\n }\n}\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AllbridgeCoreSdkService } from "../services";
|
|
2
|
+
import { AlgUtils } from "./alg";
|
|
2
3
|
import { EvmUtils } from "./evm";
|
|
3
4
|
import { SolUtils } from "./sol";
|
|
4
5
|
import { SrbUtils } from "./srb";
|
|
@@ -11,6 +12,7 @@ export interface Utils {
|
|
|
11
12
|
sol: SolUtils;
|
|
12
13
|
sui: SuiUtils;
|
|
13
14
|
evm: EvmUtils;
|
|
15
|
+
alg: AlgUtils;
|
|
14
16
|
}
|
|
15
17
|
export declare class DefaultUtils implements Utils {
|
|
16
18
|
readonly service: AllbridgeCoreSdkService;
|
|
@@ -18,5 +20,6 @@ export declare class DefaultUtils implements Utils {
|
|
|
18
20
|
sol: SolUtils;
|
|
19
21
|
sui: SuiUtils;
|
|
20
22
|
evm: EvmUtils;
|
|
23
|
+
alg: AlgUtils;
|
|
21
24
|
constructor(service: AllbridgeCoreSdkService);
|
|
22
25
|
}
|