@cryptorubic/web3 0.8.5-alpha.2 → 0.8.6-alpha-relay-solana.0
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/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cryptorubic/web3",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.6-alpha-relay-solana.0",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0",
|
|
6
6
|
"bignumber.js": "9.1.2",
|
|
7
|
-
"@cryptorubic/core": "0.8.
|
|
7
|
+
"@cryptorubic/core": "0.8.6-alpha-relay-solana.0",
|
|
8
8
|
"viem": "^2.19.1",
|
|
9
9
|
"web3-utils": "^4.3.1",
|
|
10
10
|
"@ton/ton": "^15.1.0",
|
|
11
11
|
"@solana/web3.js": "1.95.3",
|
|
12
12
|
"@solflare-wallet/utl-sdk": "^1.4.0",
|
|
13
13
|
"@ethersproject/bignumber": "^5.7.0",
|
|
14
|
-
"@cryptorubic/tron-types": "0.8.
|
|
14
|
+
"@cryptorubic/tron-types": "0.8.6-alpha-relay-solana.0",
|
|
15
15
|
"bitcoin-address-validation": "^2.2.3",
|
|
16
16
|
"axios": "0.27.2",
|
|
17
17
|
"crc-32": "^1.2.2",
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { Abi, MulticallResponse, MulticallParameters } from 'viem';
|
|
2
2
|
import { AbstractAdapter } from './abstract-adapter';
|
|
3
|
-
import { Connection } from '@solana/web3.js';
|
|
3
|
+
import { Connection, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
|
|
4
4
|
import { HttpClient, ICustomLogger, PriceTokenAmount, SolanaBlockchainName, Token, TokenAmount } from '@cryptorubic/core';
|
|
5
5
|
import { EvmTransactionConfig } from '../../utils/models/evm-transaction-config';
|
|
6
6
|
import BigNumber from 'bignumber.js';
|
|
7
|
+
import { SolanaRawInstruction } from './models/solana-web3-types';
|
|
7
8
|
export declare const NATIVE_SOLANA_MINT_ADDRESS = "So11111111111111111111111111111111111111111";
|
|
8
9
|
export declare class SolanaAdapter extends AbstractAdapter<Connection, Connection, SolanaBlockchainName> {
|
|
9
10
|
private readonly httpClient;
|
|
@@ -23,4 +24,6 @@ export declare class SolanaAdapter extends AbstractAdapter<Connection, Connectio
|
|
|
23
24
|
*/
|
|
24
25
|
getTokensBalances(address: string, tokensAddresses: string[]): Promise<BigNumber[]>;
|
|
25
26
|
callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<SolanaBlockchainName>[]>;
|
|
27
|
+
parseRawInstruction(rawInstruction: SolanaRawInstruction[], dataFormat: BufferEncoding): TransactionInstruction[];
|
|
28
|
+
createVersionedTransaction(instructions: TransactionInstruction[], walletAddress: string, addressLookupTableAddresses?: string[]): Promise<VersionedTransaction>;
|
|
26
29
|
}
|
|
@@ -70,32 +70,6 @@ class SolanaAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
70
70
|
return new bignumber_js_1.default(tokenWithBalance || NaN);
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
// public async callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<SolanaBlockchainName>[]> {
|
|
74
|
-
// const nativeToken = nativeTokensList[BLOCKCHAIN_NAME.SOLANA] as Token<SolanaBlockchainName>;
|
|
75
|
-
// const nativeTokenIndex = tokenAddresses.findIndex((address) => Web3Pure.isNativeAddress(CHAIN_TYPE.SOLANA, address));
|
|
76
|
-
// const filteredTokenAddresses = tokenAddresses.filter((_, index) => index !== nativeTokenIndex);
|
|
77
|
-
// // only native token in tokenAddresses
|
|
78
|
-
// if (!filteredTokenAddresses.length) {
|
|
79
|
-
// return [nativeToken];
|
|
80
|
-
// }
|
|
81
|
-
// const mints = filteredTokenAddresses.map((address) => new PublicKey(address));
|
|
82
|
-
// const tokenSdk = new TokenSdk();
|
|
83
|
-
// const tokensMint = await tokenSdk.fetchMints(mints);
|
|
84
|
-
// const tokens = tokensMint.map((token) => {
|
|
85
|
-
// return new Token({
|
|
86
|
-
// address: token.address.toString(),
|
|
87
|
-
// blockchain: BLOCKCHAIN_NAME.SOLANA,
|
|
88
|
-
// decimals: token.decimals!,
|
|
89
|
-
// name: token.name,
|
|
90
|
-
// symbol: token.symbol
|
|
91
|
-
// });
|
|
92
|
-
// });
|
|
93
|
-
// if (nativeTokenIndex === -1) {
|
|
94
|
-
// return tokens;
|
|
95
|
-
// }
|
|
96
|
-
// tokens.splice(nativeTokenIndex, 0, nativeToken);
|
|
97
|
-
// return tokens;
|
|
98
|
-
// }
|
|
99
73
|
async callForTokensInfo(tokenAddresses) {
|
|
100
74
|
const nativeToken = core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.SOLANA];
|
|
101
75
|
const nativeTokenIndex = tokenAddresses.findIndex((address) => web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.SOLANA, address));
|
|
@@ -121,5 +95,32 @@ class SolanaAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
121
95
|
tokens.splice(nativeTokenIndex, 0, nativeToken);
|
|
122
96
|
return tokens;
|
|
123
97
|
}
|
|
98
|
+
parseRawInstruction(rawInstruction, dataFormat) {
|
|
99
|
+
return rawInstruction.map((instruction) => {
|
|
100
|
+
return new web3_js_1.TransactionInstruction({
|
|
101
|
+
keys: instruction.keys.map((key) => ({
|
|
102
|
+
pubkey: new web3_js_1.PublicKey(key.pubkey),
|
|
103
|
+
isWritable: key.isWritable,
|
|
104
|
+
isSigner: key.isSigner
|
|
105
|
+
})),
|
|
106
|
+
data: Buffer.from(instruction.data, dataFormat),
|
|
107
|
+
programId: new web3_js_1.PublicKey(instruction.programId)
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async createVersionedTransaction(instructions, walletAddress, addressLookupTableAddresses) {
|
|
112
|
+
const { blockhash } = await this.public.getLatestBlockhash();
|
|
113
|
+
let addressLookupTableAccounts = [];
|
|
114
|
+
if (addressLookupTableAddresses) {
|
|
115
|
+
const res = await Promise.all(addressLookupTableAddresses.map((address) => this.public.getAddressLookupTable(new web3_js_1.PublicKey(address)).then((v) => v.value)));
|
|
116
|
+
addressLookupTableAccounts = res.filter((v) => !!v);
|
|
117
|
+
}
|
|
118
|
+
const message = new web3_js_1.TransactionMessage({
|
|
119
|
+
instructions,
|
|
120
|
+
payerKey: new web3_js_1.PublicKey(walletAddress),
|
|
121
|
+
recentBlockhash: blockhash
|
|
122
|
+
}).compileToV0Message(addressLookupTableAccounts);
|
|
123
|
+
return new web3_js_1.VersionedTransaction(message);
|
|
124
|
+
}
|
|
124
125
|
}
|
|
125
126
|
exports.SolanaAdapter = SolanaAdapter;
|
|
@@ -109,12 +109,6 @@ class SolanaTokensService {
|
|
|
109
109
|
const notFetchedTokensList = this.initialMints.filter((mint) => !fetchedTokensMap.get(mint.toString()));
|
|
110
110
|
return notFetchedTokensList;
|
|
111
111
|
}
|
|
112
|
-
// private getNotFetchedTokensList(tokensList: SolanaToken[]): PublicKey[] {
|
|
113
|
-
// const notFetchedTokensList = this.initialMints.filter((mint) =>
|
|
114
|
-
// tokensList.every((token) => !compareAddresses(token.address, mint.toString()))
|
|
115
|
-
// );
|
|
116
|
-
// return notFetchedTokensList;
|
|
117
|
-
// }
|
|
118
112
|
async getTokensList(tokenAddresses) {
|
|
119
113
|
try {
|
|
120
114
|
const queryParams = tokenAddresses.length > 1 ? { addresses: tokenAddresses.join(',') } : { query: tokenAddresses[0] };
|