Skip to content

Commit

Permalink
Changed build configuration, changed web3 methods.
Browse files Browse the repository at this point in the history
  • Loading branch information
oable committed Jan 7, 2024
1 parent f1eae8f commit 5c02190
Show file tree
Hide file tree
Showing 198 changed files with 5,276 additions and 774 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ And for transfer NEON from Neon EVM to Solana, you should known token contract a

```javascript
const tokenContract = NEON_TRANSFER_CONTRACT_DEVNET; // or SOL_TRANSFER_CONTRACT_DEVNET
const transaction = await neonNeonWeb3Transaction(web3, neonWallet, tokenContract, solanaWallet, amount); // Neon EVM Transaction object
const transaction = await neonNeonTransactionWeb3(web3, neonWallet, tokenContract, solanaWallet, amount); // Neon EVM Transaction object
const hash = await sendNeonTransaction(web3, transaction, neonWallet); // method for sign and send transaction to network
```

Expand All @@ -109,15 +109,15 @@ transaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
const signature = await sendSolanaTransaction(connection, transaction, [signer], true, { skipPreflight: false });
```

And for transfer ERC20 tokens from Neon EVM to Solana:
And for transfer ERC20 tokens from Neon EVM to Solana:

```javascript
const token = tokenList[0];
const mintPubkey = new PublicKey(token.address_spl);
const associatedToken = getAssociatedTokenAddressSync(mintPubkey, solanaWallet);
const solanaTransaction = createMintSolanaTransaction(solanaWallet, mintPubkey, associatedToken, proxyStatus);
solanaTransaction.recentBlockhash = (await connection.getLatestBlockhash()).blockhash;
const neonTransaction = await createMintNeonWeb3Transaction(web3, neonWallet.address, associatedToken, token, amount);
const neonTransaction = await createMintNeonTransactionWeb3(web3, neonWallet.address, associatedToken, token, amount);
const signedSolanaTransaction = await sendSolanaTransaction(connection, solanaTransaction, [signer], true, { skipPreflight: false });
const signedNeonTransaction = await sendNeonTransaction(web3, neonTransaction, neonWallet);
```
Expand Down
1 change: 0 additions & 1 deletion dist/api/index.js.map

This file was deleted.

38 changes: 0 additions & 38 deletions dist/api/neon-proxy-rpc.js

This file was deleted.

1 change: 0 additions & 1 deletion dist/api/neon-proxy-rpc.js.map

This file was deleted.

17 changes: 17 additions & 0 deletions dist/cjs/api/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./neon-proxy-rpc"), exports);
65 changes: 65 additions & 0 deletions dist/cjs/api/neon-proxy-rpc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NeonProxyRpcApi = void 0;
class NeonProxyRpcApi {
constructor(params) {
var _a, _b;
this.neonProxyRpcApi = '';
this.solanaRpcApi = '';
this.neonProxyRpcApi = (_a = params.neonProxyRpcApi) !== null && _a !== void 0 ? _a : '';
this.solanaRpcApi = (_b = params.solanaRpcApi) !== null && _b !== void 0 ? _b : '';
}
rpc(url, method, params = []) {
return __awaiter(this, void 0, void 0, function* () {
const id = Date.now();
const body = { id, jsonrpc: '2.0', method, params };
console.log('POST', url, JSON.stringify(body));
const response = yield fetch(url, {
method: 'POST',
mode: 'cors',
body: JSON.stringify(body)
});
return yield response.json();
});
}
proxy(method, params = []) {
return __awaiter(this, void 0, void 0, function* () {
return this.rpc(this.neonProxyRpcApi, method, params);
});
}
solana(method, params = []) {
return __awaiter(this, void 0, void 0, function* () {
return this.rpc(this.solanaRpcApi, method, params);
});
}
neonEmulate(params = []) {
return __awaiter(this, void 0, void 0, function* () {
return this.proxy('neon_emulate', params).then(d => d.result);
});
}
evmParams() {
return __awaiter(this, void 0, void 0, function* () {
return this.proxy('neon_getEvmParams', []).then(d => d.result);
});
}
gasTokenList() {
return __awaiter(this, void 0, void 0, function* () {
return this.proxy('neon_getGasTokenList', []).then(d => d.result);
});
}
nativeTokenList() {
return __awaiter(this, void 0, void 0, function* () {
return this.proxy('neon_getNativeTokenList', []).then(d => d.result);
});
}
}
exports.NeonProxyRpcApi = NeonProxyRpcApi;
112 changes: 112 additions & 0 deletions dist/cjs/core/deprecated/InstructionService.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.InstructionService = void 0;
const web3_js_1 = require("@solana/web3.js");
const spl_token_1 = require("@solana/spl-token");
const utils_1 = require("../../utils");
const data_1 = require("../../data");
const utils_2 = require("../utils");
const mint_transfer_1 = require("../mint-transfer");
const noop = new Function();
/**
* @deprecated this code was deprecated and will remove in next releases.
* Please use other methods from mint-transfer.ts and neon-transfer.ts files
* For more examples see `examples` folder
*/
class InstructionService {
get programId() {
return new web3_js_1.PublicKey(this.proxyStatus.NEON_EVM_ID);
}
get tokenMint() {
var _a;
return new web3_js_1.PublicKey((_a = this.proxyStatus.NEON_TOKEN_MINT) !== null && _a !== void 0 ? _a : data_1.NEON_TOKEN_MINT_DEVNET);
}
constructor(options) {
var _a;
this.emitFunction = (functionName, ...args) => {
if (typeof functionName === 'function') {
functionName(...args);
}
};
this.web3 = options.web3;
this.proxyApi = options.proxyApi;
this.proxyStatus = options.proxyStatus;
this.solanaWalletAddress = options.solanaWalletAddress || '';
this.neonWalletAddress = options.neonWalletAddress || '';
this.neonContractAddress = options.neonContractAddress || '';
this.connection = options.connection;
this.solanaOptions = (_a = options.solanaOptions) !== null && _a !== void 0 ? _a : { skipPreflight: false };
this.events = {
onBeforeCreateInstruction: options.onBeforeCreateInstruction || noop,
onCreateNeonAccountInstruction: options.onCreateNeonAccountInstruction || noop,
onBeforeSignTransaction: options.onBeforeSignTransaction || noop,
onBeforeNeonSign: options.onBeforeNeonSign || noop,
onSuccessSign: options.onSuccessSign || noop,
onErrorSign: options.onErrorSign || noop
};
}
get erc20ForSPLContract() {
return new this.web3.eth.Contract(data_1.erc20Abi);
}
get neonWrapperContract() {
return new this.web3.eth.Contract(data_1.neonWrapperAbi);
}
neonWrapper2Contract(address) {
return new this.web3.eth.Contract(data_1.neonWrapper2Abi, address);
}
get solana() {
if ('solana' in window) {
return window['solana'];
}
return {};
}
get solanaWalletPubkey() {
return new web3_js_1.PublicKey(this.solanaWalletAddress);
}
get solanaWalletSigner() {
return (0, utils_2.solanaWalletSigner)(this.web3, this.solanaWalletPubkey, this.neonWalletAddress);
}
neonAccountAddress(neonWallet) {
return (0, utils_2.neonWalletProgramAddress)(neonWallet, this.programId);
}
authAccountAddress(neonWallet, token) {
return (0, utils_2.authAccountAddress)(neonWallet, this.programId, token);
}
getNeonAccount(neonAssociatedKey) {
return __awaiter(this, void 0, void 0, function* () {
return this.connection.getAccountInfo(neonAssociatedKey);
});
}
createAccountV3Instruction(solanaWallet, neonWalletPDA, neonWallet) {
return (0, mint_transfer_1.createAccountV3Instruction)(solanaWallet, neonWalletPDA, this.programId, neonWallet);
}
getAssociatedTokenAddress(mintPubkey, walletPubkey) {
return (0, spl_token_1.getAssociatedTokenAddressSync)(mintPubkey, walletPubkey);
}
approveDepositInstruction(walletPubkey, neonPDAPubkey, associatedTokenPubkey, amount) {
return (0, spl_token_1.createApproveInstruction)(associatedTokenPubkey, neonPDAPubkey, walletPubkey, amount);
}
createApproveSolanaData(solanaWallet, splToken, amount) {
const fullAmount = (0, utils_1.toFullAmount)(amount, splToken.decimals);
return this.erc20ForSPLContract.methods.approveSolana(solanaWallet.toBuffer(), fullAmount).encodeABI();
}
ethereumTransaction(amount, token) {
const solanaWallet = this.solanaWalletPubkey;
return {
to: token.address,
from: this.neonWalletAddress,
value: '0x00',
data: this.createApproveSolanaData(solanaWallet, token, amount)
};
}
}
exports.InstructionService = InstructionService;
Loading

0 comments on commit 5c02190

Please sign in to comment.