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());
    });
};
import { OperationNotSupportedByWalletAdapterError, UninitializedWalletAdapterError, } from '../../errors';
export class WalletAdapterIdentityDriver {
    constructor(walletAdapter) {
        this.walletAdapter = walletAdapter;
    }
    get publicKey() {
        if (!this.walletAdapter.publicKey) {
            throw new UninitializedWalletAdapterError();
        }
        return this.walletAdapter.publicKey;
    }
    signMessage(message) {
        return __awaiter(this, void 0, void 0, function* () {
            if (this.walletAdapter.signMessage === undefined) {
                throw new OperationNotSupportedByWalletAdapterError('signMessage');
            }
            return this.walletAdapter.signMessage(message);
        });
    }
    signTransaction(transaction) {
        return __awaiter(this, void 0, void 0, function* () {
            if (this.walletAdapter.signTransaction === undefined) {
                throw new OperationNotSupportedByWalletAdapterError('signTransaction');
            }
            return this.walletAdapter.signTransaction(transaction);
        });
    }
    signAllTransactions(transactions) {
        return __awaiter(this, void 0, void 0, function* () {
            if (this.walletAdapter.signAllTransactions === undefined) {
                throw new OperationNotSupportedByWalletAdapterError('signAllTransactions');
            }
            return this.walletAdapter.signAllTransactions(transactions);
        });
    }
}
//# sourceMappingURL=WalletAdapterIdentityDriver.js.map