@snowflake-so/safe-saber-walletkit
Version:
Snowflake Safe forked version of @saberhq/use-solana package. Used for integration purpose.
43 lines • 2.42 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WalletAdapterProvider = exports.WalletAdapterTransactionSigner = void 0;
const solana_contrib_1 = require("@saberhq/solana-contrib");
const tiny_invariant_1 = __importDefault(require("tiny-invariant"));
class WalletAdapterTransactionSigner extends solana_contrib_1.SolanaTransactionSigner {
constructor(connection, wallet, broadcaster, preflightCommitment = 'confirmed') {
super(wallet, broadcaster, preflightCommitment);
this.connection = connection;
this.wallet = wallet;
}
async signAndBroadcastTransaction(transaction, opts) {
return await this.wallet.signAndBroadcastTransaction(transaction, this.connection, this.broadcaster, opts);
}
}
exports.WalletAdapterTransactionSigner = WalletAdapterTransactionSigner;
class WalletAdapterProvider extends solana_contrib_1.SolanaProvider {
/**
* @param connection The cluster connection where the program is deployed.
* @param sendConnection The connection where transactions are sent to.
* @param wallet The wallet used to pay for and sign all transactions.
* @param opts Transaction confirmation options to use by default.
*/
constructor(connection, broadcaster, wallet, opts = solana_contrib_1.DEFAULT_PROVIDER_OPTIONS) {
super(connection, broadcaster, wallet, opts, new WalletAdapterTransactionSigner(connection, wallet, broadcaster, opts.preflightCommitment));
this.wallet = wallet;
}
/**
* Initializes a new SolanaProvider.
*/
static init({ connection, broadcastConnections = [connection], wallet, opts = solana_contrib_1.DEFAULT_PROVIDER_OPTIONS, }) {
const firstBroadcastConnection = broadcastConnections[0];
(0, tiny_invariant_1.default)(firstBroadcastConnection, 'must have at least one broadcast connection');
return new WalletAdapterProvider(connection, broadcastConnections.length > 1
? new solana_contrib_1.TieredBroadcaster(connection, broadcastConnections, opts)
: new solana_contrib_1.SingleConnectionBroadcaster(firstBroadcastConnection, opts), wallet, opts);
}
}
exports.WalletAdapterProvider = WalletAdapterProvider;
//# sourceMappingURL=provider.js.map