@solsdk/keystone_sdk
Version:
SDK for Keystone Protocol
50 lines (43 loc) • 1.13 kB
text/typescript
import {
Keypair,
PublicKey,
Transaction,
VersionedTransaction,
} from '@solana/web3.js';
import { IWallet, IVersionedWallet } from './types';
import { Keypair as UtilsKeypair } from '@nealireverse_dev/utils';
export class Wallet implements IWallet, IVersionedWallet {
constructor(readonly payer: Keypair) {}
async signTransaction(tx: Transaction): Promise<Transaction> {
UtilsKeypair.from(this.payer);
tx.partialSign(this.payer);
return tx;
}
async signVersionedTransaction(
tx: VersionedTransaction
): Promise<VersionedTransaction> {
UtilsKeypair.from(this.payer);
tx.sign([this.payer]);
return tx;
}
async signAllTransactions(txs: Transaction[]): Promise<Transaction[]> {
return txs.map((t) => {
UtilsKeypair.from(this.payer);
t.partialSign(this.payer);
return t;
});
}
async signAllVersionedTransactions(
txs: VersionedTransaction[]
): Promise<VersionedTransaction[]> {
return txs.map((t) => {
UtilsKeypair.from(this.payer);
t.sign([this.payer]);
return t;
});
}
get publicKey(): PublicKey {
UtilsKeypair.from(this.payer);
return this.payer.publicKey;
}
}