@idos-network/kwil-infra 1.1.0 → 1.2.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/.turbo/turbo-build.log +11 -11
- package/.turbo/turbo-typecheck.log +1 -1
- package/CHANGELOG.md +17 -0
- package/README.md +1 -1
- package/dist/actions/index.d.mts +1 -1
- package/dist/actions/index.mjs.map +1 -1
- package/dist/facesign-signer-BY9Nti9F.mjs.map +1 -1
- package/dist/{index-Ci6QhKJo.d.mts → index-UFgWkjYP.d.mts} +8 -8
- package/dist/{index-Ci6QhKJo.d.mts.map → index-UFgWkjYP.d.mts.map} +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +17 -30
- package/dist/index.mjs.map +1 -1
- package/dist/signature-verification/index.d.mts +1 -1
- package/dist/signature-verification/index.mjs.map +1 -1
- package/dist/xrp/utils.mjs.map +1 -1
- package/dist/xrpl-credentials/index.mjs.map +1 -1
- package/package.json +8 -8
- package/src/signature-verification/evm.test.ts +49 -0
- package/src/signature-verification/evm.ts +11 -20
|
@@ -2,10 +2,10 @@ import { n as FaceSignSignerProvider } from "./facesign-signer-ADd4EASX.mjs";
|
|
|
2
2
|
import { KwilSigner, KwilSigner as KwilSigner$1, NodeKwil, Utils, WebKwil } from "@idos-network/kwil-js";
|
|
3
3
|
import * as z from "zod";
|
|
4
4
|
import nacl from "tweetnacl";
|
|
5
|
+
import { NearWalletBase } from "@hot-labs/near-connect";
|
|
5
6
|
import { Store } from "@idos-network/utils/store";
|
|
6
|
-
import { Wallet } from "@near-wallet-selector/core";
|
|
7
7
|
import { Keypair } from "@stellar/stellar-sdk";
|
|
8
|
-
import { JsonRpcSigner, Wallet
|
|
8
|
+
import { JsonRpcSigner, Wallet } from "ethers";
|
|
9
9
|
import { KeyPair } from "near-api-js";
|
|
10
10
|
import { KeyPair as KeyPair$1 } from "ripple-keypairs/src/types.ts";
|
|
11
11
|
|
|
@@ -54,7 +54,7 @@ declare const createNodeKwilClient: (params: CreateKwilClientParams) => Promise<
|
|
|
54
54
|
declare const createWebKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient>;
|
|
55
55
|
//#endregion
|
|
56
56
|
//#region src/create-kwil-signer.d.ts
|
|
57
|
-
type Wallet$
|
|
57
|
+
type Wallet$1 = Wallet | JsonRpcSigner | NearWalletBase | CustomKwilSigner | FaceSignSignerProvider;
|
|
58
58
|
interface CustomKwilSigner extends KwilSigner {
|
|
59
59
|
publicAddress: string;
|
|
60
60
|
signatureType: string;
|
|
@@ -62,7 +62,7 @@ interface CustomKwilSigner extends KwilSigner {
|
|
|
62
62
|
walletType: string;
|
|
63
63
|
signMessage: (message: Uint8Array | string) => Promise<Uint8Array>;
|
|
64
64
|
}
|
|
65
|
-
type KwilSignerType = KeyPair | Wallet
|
|
65
|
+
type KwilSignerType = KeyPair | Wallet | nacl.SignKeyPair | JsonRpcSigner | Keypair | KeyPair$1;
|
|
66
66
|
type SignerAddress = string;
|
|
67
67
|
type SignerPublicKey = string | undefined;
|
|
68
68
|
/**
|
|
@@ -72,12 +72,12 @@ type SignerPublicKey = string | undefined;
|
|
|
72
72
|
* the KGW cookie when logging out and re-logging in with a different wallet.
|
|
73
73
|
*/
|
|
74
74
|
declare function createServerKwilSigner(signer: KwilSignerType): Promise<[KwilSigner, SignerAddress]>;
|
|
75
|
-
declare function createClientKwilSigner(store: Store, kwilClient: KwilActionClient, wallet: Wallet$
|
|
75
|
+
declare function createClientKwilSigner(store: Store, kwilClient: KwilActionClient, wallet: Wallet$1): Promise<[KwilSigner, SignerAddress, SignerPublicKey, WalletType]>;
|
|
76
76
|
//#endregion
|
|
77
77
|
//#region src/near/create-near-wallet-kwil-signer.d.ts
|
|
78
78
|
declare function implicitAddressFromPublicKey(publicKey: string): string;
|
|
79
79
|
declare function getNearFullAccessPublicKeys(namedAddress: string): Promise<string[] | undefined>;
|
|
80
|
-
declare function signNearMessage(wallet:
|
|
80
|
+
declare function signNearMessage(wallet: NearWalletBase, message: string, recipient?: string): Promise<string>;
|
|
81
81
|
//#endregion
|
|
82
82
|
//#region src/actions/actions.d.ts
|
|
83
83
|
declare const DataType: typeof Utils.DataType;
|
|
@@ -640,5 +640,5 @@ declare function removeWallets(kwilClient: KwilActionClient, ids: string[]): Pro
|
|
|
640
640
|
declare const GET_GRANTS_DEFAULT_RECORDS_PER_PAGE = 10;
|
|
641
641
|
declare function getGrants(kwilClient: KwilActionClient, params?: Partial<GetAccessGrantsGrantedInput>): Promise<idOSGrant[]>;
|
|
642
642
|
//#endregion
|
|
643
|
-
export { DwgMessageInputSchema as $, checkBalance as $n, KwilActionClient as $r, GetUserAsInserterOutputSchema as $t, AddWalletInputSchema as A, ShareAttributeInput as An, removeCredential as Ar, GetCredentialOwnedOutput as At, CredentialExistAsInserterInputSchema as B, WALLET_TYPES as Bn, upsertWalletAsInserter as Br, GetCredentialsSharedByUserOutput as Bt, AddDelegateAsOwnerInput as C, RequestBalanceWithdrawalInputSchema as Cn, getUser as Cr, GetAccessGrantsOwnedOutputSchema as Ct, AddUserAsInserterInput as D, RescindSharedCredentialInputSchema as Dn, hasLockedAccessGrants as Dr, GetAttributesOutputSchema as Dt, AddInserterAsOwnerInputSchema as E, RescindSharedCredentialInput as En, getWallets as Er, GetAttributesOutput as Et, CreateAgByDagForCopyInput as F, UpdateUserPubKeyAsInserterInputSchema as Fn, revokeAccessGrant as Fr, GetCredentialSharedOutputSchema as Ft, DagMessageOutput as G, actionSchema as Gn, CustomKwilSigner as Gr, GetIssuerFeeOutputSchema as Gt, CredentialExistAsInserterOutputSchema as H, actionCostingFee as Hn, getNearFullAccessPublicKeys as Hr, GetIssuerFeeInput as Ht, CreateAgByDagForCopyInputSchema as I, UpsertCredentialAsInserterInput as In, shareAttribute as Ir, GetCredentialsOutput as It, DeleteDelegateAsOwnerInput as J, addCredential as Jn, SignerAddress as Jr, GetSiblingCredentialIdOutput as Jt, DagMessageOutputSchema as K, addAttribute as Kn, KwilSigner$1 as Kr, GetSiblingCredentialIdInput as Kt, CreateCredentialsByDwgInput as L, UpsertCredentialAsInserterInputSchema as Ln, shareCredential as Lr, GetCredentialsOutputSchema as Lt, CheckBalanceInputSchema as M, ShareCredentialInput as Mn, requestBalanceWithdrawal as Mr, GetCredentialSharedInput as Mt, CheckBalanceOutput as N, ShareCredentialInputSchema as Nn, requestWithdrawal as Nr, GetCredentialSharedInputSchema as Nt, AddUserAsInserterInputSchema as O, RevokeAccessGrantInput as On, hasProfile as Or, GetCredentialOwnedInput as Ot, CheckBalanceOutputSchema as P, UpdateUserPubKeyAsInserterInput as Pn, rescindSharedCredential as Pr, GetCredentialSharedOutput as Pt, DwgMessageInput as Q, addWallet as Qn, createServerKwilSigner as Qr, GetUserAsInserterOutput as Qt, CreateCredentialsByDwgInputSchema as R, UpsertWalletAsInserterInput as Rn, updateUserPubKeyAsInserter as Rr, GetCredentialsSharedByUserInput as Rt, AddCredentialInputSchema as S, RequestBalanceWithdrawalInput as Sn, getSiblingCredentialId as Sr, GetAccessGrantsOwnedOutput as St, AddInserterAsOwnerInput as T, RequestWithdrawalInputSchema as Tn, getWalletWithBalance as Tr, GetAllowanceOutputSchema as Tt, DagMessageInput as U, actionCostingGas as Un, implicitAddressFromPublicKey as Ur, GetIssuerFeeInputSchema as Ut, CredentialExistAsInserterOutput as V, WalletType as Vn, walletTypeSchema as Vr, GetCredentialsSharedByUserOutputSchema as Vt, DagMessageInputSchema as W, actionCostingIdosToken as Wn, signNearMessage as Wr, GetIssuerFeeOutput as Wt, DeleteInserterAsOwnerInput as X, addInserterAsOwner as Xn, Wallet$
|
|
644
|
-
//# sourceMappingURL=index-
|
|
643
|
+
export { DwgMessageInputSchema as $, checkBalance as $n, KwilActionClient as $r, GetUserAsInserterOutputSchema as $t, AddWalletInputSchema as A, ShareAttributeInput as An, removeCredential as Ar, GetCredentialOwnedOutput as At, CredentialExistAsInserterInputSchema as B, WALLET_TYPES as Bn, upsertWalletAsInserter as Br, GetCredentialsSharedByUserOutput as Bt, AddDelegateAsOwnerInput as C, RequestBalanceWithdrawalInputSchema as Cn, getUser as Cr, GetAccessGrantsOwnedOutputSchema as Ct, AddUserAsInserterInput as D, RescindSharedCredentialInputSchema as Dn, hasLockedAccessGrants as Dr, GetAttributesOutputSchema as Dt, AddInserterAsOwnerInputSchema as E, RescindSharedCredentialInput as En, getWallets as Er, GetAttributesOutput as Et, CreateAgByDagForCopyInput as F, UpdateUserPubKeyAsInserterInputSchema as Fn, revokeAccessGrant as Fr, GetCredentialSharedOutputSchema as Ft, DagMessageOutput as G, actionSchema as Gn, CustomKwilSigner as Gr, GetIssuerFeeOutputSchema as Gt, CredentialExistAsInserterOutputSchema as H, actionCostingFee as Hn, getNearFullAccessPublicKeys as Hr, GetIssuerFeeInput as Ht, CreateAgByDagForCopyInputSchema as I, UpsertCredentialAsInserterInput as In, shareAttribute as Ir, GetCredentialsOutput as It, DeleteDelegateAsOwnerInput as J, addCredential as Jn, SignerAddress as Jr, GetSiblingCredentialIdOutput as Jt, DagMessageOutputSchema as K, addAttribute as Kn, KwilSigner$1 as Kr, GetSiblingCredentialIdInput as Kt, CreateCredentialsByDwgInput as L, UpsertCredentialAsInserterInputSchema as Ln, shareCredential as Lr, GetCredentialsOutputSchema as Lt, CheckBalanceInputSchema as M, ShareCredentialInput as Mn, requestBalanceWithdrawal as Mr, GetCredentialSharedInput as Mt, CheckBalanceOutput as N, ShareCredentialInputSchema as Nn, requestWithdrawal as Nr, GetCredentialSharedInputSchema as Nt, AddUserAsInserterInputSchema as O, RevokeAccessGrantInput as On, hasProfile as Or, GetCredentialOwnedInput as Ot, CheckBalanceOutputSchema as P, UpdateUserPubKeyAsInserterInput as Pn, rescindSharedCredential as Pr, GetCredentialSharedOutput as Pt, DwgMessageInput as Q, addWallet as Qn, createServerKwilSigner as Qr, GetUserAsInserterOutput as Qt, CreateCredentialsByDwgInputSchema as R, UpsertWalletAsInserterInput as Rn, updateUserPubKeyAsInserter as Rr, GetCredentialsSharedByUserInput as Rt, AddCredentialInputSchema as S, RequestBalanceWithdrawalInput as Sn, getSiblingCredentialId as Sr, GetAccessGrantsOwnedOutput as St, AddInserterAsOwnerInput as T, RequestWithdrawalInputSchema as Tn, getWalletWithBalance as Tr, GetAllowanceOutputSchema as Tt, DagMessageInput as U, actionCostingGas as Un, implicitAddressFromPublicKey as Ur, GetIssuerFeeInputSchema as Ut, CredentialExistAsInserterOutput as V, WalletType as Vn, walletTypeSchema as Vr, GetCredentialsSharedByUserOutputSchema as Vt, DagMessageInputSchema as W, actionCostingIdosToken as Wn, signNearMessage as Wr, GetIssuerFeeOutput as Wt, DeleteInserterAsOwnerInput as X, addInserterAsOwner as Xn, Wallet$1 as Xr, GetUserAsInserterInput as Xt, DeleteDelegateAsOwnerInputSchema as Y, addDelegateAsOwner as Yn, SignerPublicKey as Yr, GetSiblingCredentialIdOutputSchema as Yt, DeleteInserterAsOwnerInputSchema as Z, addUserAsInserter as Zn, createClientKwilSigner as Zr, GetUserAsInserterInputSchema as Zt, AddAttributeAsInserterInput as _, RemoveAttributeInputSchema as _n, getCredentialOwned as _r, GetAccessGrantsGrantedCountOutputSchema as _t, idOSCredentialListItem as a, GetWalletWithBalanceOutputSchema as an, deleteInserterAsOwner as ar, EditCredentialInput as at, AddAttributeInputSchema as b, RemoveWalletInput as bn, getCredentialsSharedByUser as br, GetAccessGrantsGrantedOutput as bt, idOSUser as c, HasLockedAccessGrantsInput as cn, editCredential as cr, EditPublicNotesAsIssuerInputSchema as ct, removeWallets as d, HasLockedAccessGrantsOutputSchema as dn, getAccessGrantsForCredential as dr, GetAccessGrantsForCredentialInputSchema as dt, createNodeKwilClient as ei, GetUserOutput as en, createAgByDagForCopy as er, DwgMessageOutput as et, ActionCostingFeeInput as f, HasProfileInput as fn, getAccessGrantsGranted as fr, GetAccessGrantsForCredentialOutput as ft, ActionSchemaElement as g, RemoveAttributeInput as gn, getAttributes as gr, GetAccessGrantsGrantedCountOutput as gt, ActionCostingIdosTokenInputSchema as h, HasProfileOutputSchema as hn, getAllowance as hr, GetAccessGrantsGrantedCountInputSchema as ht, idOSCredential as i, GetWalletWithBalanceOutput as in, deleteDelegateAsOwner as ir, EditAttributeInputSchema as it, CheckBalanceInput as j, ShareAttributeInputSchema as jn, removeWallet as jr, GetCredentialOwnedOutputSchema as jt, AddWalletInput as k, RevokeAccessGrantInputSchema as kn, removeAttribute as kr, GetCredentialOwnedInputSchema as kt, idOSUserAttribute as l, HasLockedAccessGrantsInputSchema as ln, editPublicNotesAsIssuer as lr, EncryptionPasswordStore as lt, ActionCostingIdosTokenInput as m, HasProfileOutput as mn, getAccessGrantsOwned as mr, GetAccessGrantsGrantedCountInput as mt, addWallets as n, GetWalletWithBalanceInput as nn, credentialExistAsInserter as nr, ENCRYPTION_PASSWORD_STORES as nt, idOSDelegatedWriteGrant as o, GetWalletsOutput as on, dwgMessage as or, EditCredentialInputSchema as ot, ActionCostingFeeInputSchema as p, HasProfileInputSchema as pn, getAccessGrantsGrantedCount as pr, GetAccessGrantsForCredentialOutputSchema as pt, DataType as q, addAttributeAsInserter as qn, KwilSignerType as qr, GetSiblingCredentialIdInputSchema as qt, getGrants as r, GetWalletWithBalanceInputSchema as rn, dagMessage as rr, EditAttributeInput as rt, idOSGrant as s, GetWalletsOutputSchema as sn, editAttribute as sr, EditPublicNotesAsIssuerInput as st, GET_GRANTS_DEFAULT_RECORDS_PER_PAGE as t, createWebKwilClient as ti, GetUserOutputSchema as tn, createCredentialsByDwg as tr, DwgMessageOutputSchema as tt, idOSWallet as u, HasLockedAccessGrantsOutput as un, encryptionPasswordStoreSchema as ur, GetAccessGrantsForCredentialInput as ut, AddAttributeAsInserterInputSchema as v, RemoveCredentialInput as vn, getCredentialShared as vr, GetAccessGrantsGrantedInput as vt, AddDelegateAsOwnerInputSchema as w, RequestWithdrawalInput as wn, getUserAsInserter as wr, GetAllowanceOutput as wt, AddCredentialInput as x, RemoveWalletInputSchema as xn, getIssuerFee as xr, GetAccessGrantsGrantedOutputSchema as xt, AddAttributeInput as y, RemoveCredentialInputSchema as yn, getCredentials as yr, GetAccessGrantsGrantedInputSchema as yt, CredentialExistAsInserterInput as z, UpsertWalletAsInserterInputSchema as zn, upsertCredentialAsInserter as zr, GetCredentialsSharedByUserInputSchema as zt };
|
|
644
|
+
//# sourceMappingURL=index-UFgWkjYP.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-Ci6QhKJo.d.mts","names":[],"sources":["../src/create-kwil-client.ts","../src/create-kwil-signer.ts","../src/near/create-near-wallet-kwil-signer.ts","../src/actions/actions.ts","../src/actions/index.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index-UFgWkjYP.d.mts","names":[],"sources":["../src/create-kwil-client.ts","../src/create-kwil-signer.ts","../src/near/create-near-wallet-kwil-signer.ts","../src/actions/actions.ts","../src/actions/index.ts"],"mappings":"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"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $r as KwilActionClient, Gr as CustomKwilSigner, Hr as getNearFullAccessPublicKeys, Jr as SignerAddress, Kr as KwilSigner, Qr as createServerKwilSigner, Ur as implicitAddressFromPublicKey, Wr as signNearMessage, Xr as Wallet, Yr as SignerPublicKey, Zr as createClientKwilSigner, ei as createNodeKwilClient, qr as KwilSignerType, ti as createWebKwilClient } from "./index-
|
|
1
|
+
import { $r as KwilActionClient, Gr as CustomKwilSigner, Hr as getNearFullAccessPublicKeys, Jr as SignerAddress, Kr as KwilSigner, Qr as createServerKwilSigner, Ur as implicitAddressFromPublicKey, Wr as signNearMessage, Xr as Wallet, Yr as SignerPublicKey, Zr as createClientKwilSigner, ei as createNodeKwilClient, qr as KwilSignerType, ti as createWebKwilClient } from "./index-UFgWkjYP.mjs";
|
|
2
2
|
export { CustomKwilSigner, KwilActionClient, KwilSigner, KwilSignerType, SignerAddress, SignerPublicKey, Wallet, createClientKwilSigner, createNodeKwilClient, createServerKwilSigner, createWebKwilClient, getNearFullAccessPublicKeys, implicitAddressFromPublicKey, signNearMessage };
|
package/dist/index.mjs
CHANGED
|
@@ -106,24 +106,13 @@ const detectNearNetwork = (accountId) => {
|
|
|
106
106
|
if (accountId.endsWith(".shardnet")) return "shardnet";
|
|
107
107
|
return "testnet";
|
|
108
108
|
};
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
return {
|
|
112
|
-
networkId: networkConfig.networkId,
|
|
113
|
-
nodeUrl: networkConfig.nodeUrl
|
|
114
|
-
};
|
|
109
|
+
const getNearNodeUrl = (accountId) => {
|
|
110
|
+
return NEAR_NETWORKS[detectNearNetwork(accountId)].nodeUrl;
|
|
115
111
|
};
|
|
116
112
|
//#endregion
|
|
117
113
|
//#region src/near/create-near-wallet-kwil-signer.ts
|
|
118
|
-
const NEAR_WALLET_TYPES = [
|
|
119
|
-
"browser",
|
|
120
|
-
"injected",
|
|
121
|
-
"instant-link",
|
|
122
|
-
"hardware",
|
|
123
|
-
"bridge"
|
|
124
|
-
];
|
|
125
114
|
function looksLikeNearWallet(signer) {
|
|
126
|
-
return signer !== null && typeof signer === "object" && "id" in signer && "
|
|
115
|
+
return signer !== null && typeof signer === "object" && "manifest" in signer && signer.manifest !== null && typeof signer.manifest === "object" && "id" in signer.manifest && "name" in signer.manifest && "signIn" in signer && "signOut" in signer && "getAccounts" in signer && "signMessage" in signer && "signAndSendTransaction" in signer;
|
|
127
116
|
}
|
|
128
117
|
var KwilNonce = class {
|
|
129
118
|
bytes;
|
|
@@ -142,7 +131,7 @@ function createNearWalletSigner(wallet, recipient) {
|
|
|
142
131
|
const messageString = typeof message === "string" ? message : utf8Decode(message);
|
|
143
132
|
if (!wallet.signMessage) throw new Error("Only wallets with signMessage are supported.");
|
|
144
133
|
const nonceSuggestion = Buffer.from(new KwilNonce(32).bytes);
|
|
145
|
-
const { nonce = nonceSuggestion, signature
|
|
134
|
+
const { nonce = nonceSuggestion, signature } = await wallet.signMessage({
|
|
146
135
|
message: messageString,
|
|
147
136
|
recipient,
|
|
148
137
|
nonce: nonceSuggestion
|
|
@@ -161,7 +150,7 @@ function createNearWalletSigner(wallet, recipient) {
|
|
|
161
150
|
message: messageString,
|
|
162
151
|
nonce: Array.from(nonce),
|
|
163
152
|
recipient,
|
|
164
|
-
callbackUrl
|
|
153
|
+
callbackUrl: void 0
|
|
165
154
|
});
|
|
166
155
|
return bytesConcat(binaryWriteUint16BE(nep413BorshPayload.length), nep413BorshPayload, base64Decode(signature));
|
|
167
156
|
};
|
|
@@ -170,20 +159,21 @@ function implicitAddressFromPublicKey(publicKey) {
|
|
|
170
159
|
return hexEncode(bs58Decode(publicKey.replace(/^ed25519:/, "")));
|
|
171
160
|
}
|
|
172
161
|
async function getNearFullAccessPublicKeys(namedAddress) {
|
|
173
|
-
let
|
|
162
|
+
let providerKlass;
|
|
174
163
|
try {
|
|
175
|
-
|
|
164
|
+
providerKlass = (await import("near-api-js")).JsonRpcProvider;
|
|
176
165
|
} catch (_e) {
|
|
177
166
|
throw new Error("Can't load near-api-js");
|
|
178
167
|
}
|
|
179
|
-
const
|
|
180
|
-
const
|
|
168
|
+
const nodeUrl = getNearNodeUrl(namedAddress);
|
|
169
|
+
const provider = new providerKlass({ url: nodeUrl });
|
|
181
170
|
try {
|
|
182
|
-
|
|
171
|
+
const viewAccessKeyListRequest = {
|
|
172
|
+
account_id: namedAddress,
|
|
183
173
|
request_type: "view_access_key_list",
|
|
184
|
-
finality: "final"
|
|
185
|
-
|
|
186
|
-
|
|
174
|
+
finality: "final"
|
|
175
|
+
};
|
|
176
|
+
return (await provider.query(viewAccessKeyListRequest)).keys.filter((element) => element.access_key.permission === "FullAccess")?.map((i) => i.public_key);
|
|
187
177
|
} catch {
|
|
188
178
|
return;
|
|
189
179
|
}
|
|
@@ -193,7 +183,7 @@ async function signNearMessage(wallet, message, recipient = "idos.network") {
|
|
|
193
183
|
}
|
|
194
184
|
async function createNearWalletKwilSigner(wallet, currentAddress, store, kwilClient, recipient = "idos.network") {
|
|
195
185
|
if (!wallet.signMessage) throw new Error("Only wallets with signMessage are supported.");
|
|
196
|
-
if (wallet.id === "
|
|
186
|
+
if (wallet.manifest.id === "mynearwallet") {
|
|
197
187
|
const { accountId, signature, publicKey, error } = Object.fromEntries(new URLSearchParams(window.location.hash.slice(1)).entries());
|
|
198
188
|
if (signature) {
|
|
199
189
|
await store.set("signer-address", accountId);
|
|
@@ -216,16 +206,13 @@ async function createNearWalletKwilSigner(wallet, currentAddress, store, kwilCli
|
|
|
216
206
|
callbackUrl
|
|
217
207
|
});
|
|
218
208
|
}
|
|
219
|
-
const callbackUrl = window.location.href;
|
|
220
209
|
const nonce = Buffer.from(new KwilNonce(32).clampUTF8);
|
|
221
210
|
await store.set("sign-last-message", message);
|
|
222
211
|
await store.set("sign-last-nonce", Array.from(nonce));
|
|
223
|
-
await store.set("sign-last-url", callbackUrl);
|
|
224
212
|
signMessageOriginal({
|
|
225
213
|
message,
|
|
226
214
|
nonce,
|
|
227
|
-
recipient
|
|
228
|
-
callbackUrl
|
|
215
|
+
recipient
|
|
229
216
|
});
|
|
230
217
|
return new Promise(() => ({}));
|
|
231
218
|
};
|
|
@@ -243,7 +230,7 @@ async function createNearWalletKwilSigner(wallet, currentAddress, store, kwilCli
|
|
|
243
230
|
nonce
|
|
244
231
|
});
|
|
245
232
|
if (!signResult) throw new Error("signMessage returned no result");
|
|
246
|
-
|
|
233
|
+
publicKey = signResult.publicKey;
|
|
247
234
|
await store.set("signer-address", currentAddress);
|
|
248
235
|
await store.set("signer-public-key", publicKey);
|
|
249
236
|
}
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["#createActionInputs","#actionTypes","KwilSigner","KwilSigner","KwilSigner"],"sources":["../src/create-kwil-client.ts","../src/near/get-config.ts","../src/near/create-near-wallet-kwil-signer.ts","../src/near/nep413.ts","../src/xrp/signer.ts","../src/create-kwil-signer.ts"],"sourcesContent":["import type { Config } from \"@idos-network/kwil-js/dist/api_client/config\";\nimport type {\n ActionBody,\n CallBody,\n PositionalParams,\n} from \"@idos-network/kwil-js/dist/core/action\";\nimport type { DataInfo } from \"@idos-network/kwil-js/dist/core/database\";\n\nimport { type KwilSigner, NodeKwil, WebKwil } from \"@idos-network/kwil-js\";\nimport invariant from \"tiny-invariant\";\n\nimport type { ActionSchemaElement } from \"./actions\";\n\nimport { actionSchema } from \"./actions\";\n\ntype CreateKwilClientParams = {\n chainId?: string;\n nodeUrl: string;\n};\n\ntype KwilActions = typeof actionSchema;\ntype ActionName = keyof KwilActions;\n\ntype AllKwilCallAction = {\n [Name in ActionName]: {\n name: Name;\n // oxlint-disable-next-line typescript/no-explicit-any -- This is fine\n inputs: Record<KwilActions[Name][number][\"name\"], any>;\n };\n};\n\ntype KwilCallActionRequestParams = AllKwilCallAction[ActionName];\n\ntype AllKwilExecuteAction = {\n [Name in ActionName]: AllKwilCallAction[Name] & { description: string };\n};\n\ntype KwilExecuteActionRequestParams = AllKwilExecuteAction[ActionName];\n\n/**\n * A client for interacting with kwil with type-safe abstractions for `call` and `execute`.\n * Has utility methods for creating actions and setting a signer.\n */\nexport class KwilActionClient {\n signer?: KwilSigner;\n readonly client: NodeKwil | WebKwil;\n\n constructor(client: NodeKwil | WebKwil) {\n this.client = client;\n }\n\n #createActionInputs(actionName: string, params: Record<string, unknown> = {}): PositionalParams {\n if (!params || !Object.keys(params).length) return [];\n\n const args = (actionSchema as Record<string, readonly ActionSchemaElement[]>)[actionName];\n\n return args.map(({ name }) => {\n const value = params[name];\n // Handle falsy values appropriately\n if (value === \"\" || value === 0) return value;\n return value ?? null;\n }) as PositionalParams;\n }\n\n #actionTypes(actionName: string): DataInfo[] {\n const args = actionSchema[actionName];\n return args.map((arg) => arg.type);\n }\n\n /**\n * Calls an action on the kwil nodes. This similar to `GET` like request.\n */\n async call<T = unknown>(\n params: KwilCallActionRequestParams,\n signer: KwilSigner | undefined = this.signer,\n ): Promise<T> {\n const action: CallBody = {\n name: params.name,\n namespace: \"main\",\n inputs: this.#createActionInputs(params.name, params.inputs),\n types: this.#actionTypes(params.name),\n };\n\n const response = await this.client.call(action as CallBody, signer);\n return response?.data?.result as T;\n }\n\n /**\n * Executes an action on the kwil nodes. This similar to `POST` like request.\n */\n async execute(\n params: KwilExecuteActionRequestParams,\n signer: KwilSigner | undefined = this.signer,\n synchronous = true,\n ): Promise<string | undefined> {\n invariant(signer, \"Signer is not set, you must set it before executing an action\");\n const action: ActionBody = {\n name: params.name,\n namespace: \"main\",\n description: params.description,\n inputs: [this.#createActionInputs(params.name, params.inputs)],\n types: this.#actionTypes(params.name),\n };\n const response = await this.client.execute(action, signer, synchronous);\n return response.data?.tx_hash;\n }\n\n setSigner(signer: KwilSigner | undefined): void {\n this.signer = signer;\n }\n\n /**\n * Creates action inputs from the given parameters that are used in the action body.\n */\n}\n\nconst DEFAULT_TIMEOUT = 30_000;\n\nconst createKwilClient =\n (Cls: new (opts: Config) => NodeKwil | WebKwil) =>\n async ({ nodeUrl: kwilProvider, chainId }: CreateKwilClientParams): Promise<KwilActionClient> => {\n const _kwil = new Cls({ kwilProvider, chainId: \"\" });\n // oxlint-disable-next-line no-param-reassign -- Default value fallback\n chainId ||= (await _kwil.chainInfo({ disableWarning: true })).data?.chain_id;\n invariant(chainId, \"Can't discover `chainId`. You must pass it explicitly.\");\n\n const client = new KwilActionClient(\n new Cls({ kwilProvider, chainId, timeout: DEFAULT_TIMEOUT }),\n );\n\n return client;\n };\n\n/**\n * Create a kwil client for node.js environment\n */\nexport const createNodeKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient> =\n createKwilClient(NodeKwil);\n\n/**\n * Create a kwil client for browser environment\n */\nexport const createWebKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient> =\n createKwilClient(WebKwil);\n","// Network configuration mapping\nconst NEAR_NETWORKS = {\n mainnet: {\n networkId: \"mainnet\",\n nodeUrl: \"https://rpc.mainnet.near.org\",\n },\n testnet: {\n networkId: \"testnet\",\n nodeUrl: \"https://rpc.testnet.near.org\",\n },\n betanet: {\n networkId: \"betanet\",\n nodeUrl: \"https://rpc.betanet.near.org\",\n },\n shardnet: {\n networkId: \"shardnet\",\n nodeUrl: \"https://rpc.shardnet.near.org\",\n },\n} as const;\n\n// Function to detect NEAR network from account ID\nexport const detectNearNetwork = (accountId: string): keyof typeof NEAR_NETWORKS => {\n if (accountId.endsWith(\".near\")) return \"mainnet\";\n if (accountId.endsWith(\".testnet\")) return \"testnet\";\n if (accountId.endsWith(\".betanet\")) return \"betanet\";\n if (accountId.endsWith(\".shardnet\")) return \"shardnet\";\n\n // Default to testnet for development, mainnet for production\n return \"testnet\";\n};\n\n// Function to get connection config based on account ID\nexport const getNearConnectionConfig = (\n accountId: string,\n): { networkId: string; nodeUrl: string } => {\n const network = detectNearNetwork(accountId);\n const networkConfig = NEAR_NETWORKS[network];\n\n return {\n networkId: networkConfig.networkId,\n nodeUrl: networkConfig.nodeUrl,\n };\n};\n","import type { Store } from \"@idos-network/utils/store\";\nimport type {\n Wallet as NearWallet,\n SignedMessage,\n SignMessageParams,\n} from \"@near-wallet-selector/core\";\nimport type { connect as connectT } from \"near-api-js\";\nimport type { AccessKeyList } from \"near-api-js/lib/providers/provider\";\n\nimport { KwilSigner } from \"@idos-network/kwil-js\";\nimport {\n base64Decode,\n binaryWriteUint16BE,\n borshSerialize,\n bs58Decode,\n bytesConcat,\n hexEncode,\n utf8Decode,\n} from \"@idos-network/utils/codecs\";\n\nimport type { KwilActionClient } from \"../create-kwil-client\";\n\nimport { getNearConnectionConfig } from \"./get-config\";\n\nconst NEAR_WALLET_TYPES: string[] = [\n \"browser\",\n \"injected\",\n \"instant-link\",\n \"hardware\",\n \"bridge\",\n] satisfies NearWallet[\"type\"][];\n\nexport function looksLikeNearWallet(signer: unknown): signer is NearWallet {\n return (\n signer !== null &&\n typeof signer === \"object\" &&\n \"id\" in signer &&\n \"metadata\" in signer &&\n \"type\" in signer &&\n typeof signer.type === \"string\" &&\n NEAR_WALLET_TYPES.includes(signer.type)\n );\n}\n\nclass KwilNonce {\n bytes: Uint8Array;\n\n constructor(length = 32) {\n // We're in the browser, so there's a window.crypto for sure.\n /* global crypto */\n this.bytes = crypto.getRandomValues(new Uint8Array(length));\n }\n\n get clampUTF8() {\n return this.bytes.map((byte) => byte & 127);\n }\n}\n\n/**\n * Creates a signer function that can be used to sign messages with a NEAR wallet\n */\nfunction createNearWalletSigner(\n wallet: NearWallet,\n recipient: string,\n): (message: string | Uint8Array) => Promise<Uint8Array> {\n return async (message: string | Uint8Array): Promise<Uint8Array> => {\n const messageString = typeof message === \"string\" ? message : utf8Decode(message);\n\n if (!wallet.signMessage) {\n throw new Error(\"Only wallets with signMessage are supported.\");\n }\n\n const nonceSuggestion = Buffer.from(new KwilNonce(32).bytes);\n\n const {\n nonce = nonceSuggestion,\n signature,\n // @ts-expect-error Signatures don't seem to be updated for NEP413 yet.\n callbackUrl,\n // oxlint-disable-next-line typescript/no-non-null-assertion -- Only non-signing wallets return void.\n } = (await (\n wallet.signMessage as (\n _: SignMessageParams,\n ) => Promise<SignedMessage & { nonce?: Uint8Array }>\n )({\n message: messageString,\n recipient,\n nonce: nonceSuggestion,\n }))!;\n\n const nep413BorschSchema = {\n struct: {\n tag: \"u32\",\n message: \"string\",\n nonce: { array: { type: \"u8\", len: 32 } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n };\n\n const nep413BorshParams = {\n tag: 2147484061,\n message: messageString,\n nonce: Array.from(nonce),\n recipient,\n callbackUrl,\n };\n\n const nep413BorshPayload = borshSerialize(nep413BorschSchema, nep413BorshParams);\n const result = bytesConcat(\n binaryWriteUint16BE(nep413BorshPayload.length),\n nep413BorshPayload,\n base64Decode(signature),\n );\n\n return result;\n };\n}\n\nexport function implicitAddressFromPublicKey(publicKey: string): string {\n const key_without_prefix = publicKey.replace(/^ed25519:/, \"\");\n return hexEncode(bs58Decode(key_without_prefix));\n}\n\nexport async function getNearFullAccessPublicKeys(\n namedAddress: string,\n): Promise<string[] | undefined> {\n let connect: typeof connectT;\n try {\n connect = (await import(\"near-api-js\")).connect;\n } catch (_e) {\n throw new Error(\"Can't load near-api-js\");\n }\n const connectionConfig = getNearConnectionConfig(namedAddress);\n const nearConnection = await connect(connectionConfig);\n\n try {\n const response: AccessKeyList = await nearConnection.connection.provider.query({\n request_type: \"view_access_key_list\",\n finality: \"final\",\n account_id: namedAddress,\n });\n return response.keys\n .filter((element) => element.access_key.permission === \"FullAccess\")\n ?.map((i) => i.public_key);\n } catch {\n // `Near` failed if namedAddress contains uppercase symbols\n return;\n }\n}\n\nexport async function signNearMessage(\n wallet: NearWallet,\n message: string,\n recipient = \"idos.network\",\n): Promise<string> {\n const signer = createNearWalletSigner(wallet, recipient);\n const signedPayload = await signer(message);\n return hexEncode(signedPayload);\n}\n\nexport async function createNearWalletKwilSigner(\n wallet: NearWallet,\n currentAddress: string,\n store: Store,\n kwilClient: KwilActionClient,\n recipient = \"idos.network\",\n): Promise<{ kwilSigner: KwilSigner; publicKey: string }> {\n if (!wallet.signMessage) throw new Error(\"Only wallets with signMessage are supported.\");\n\n if (wallet.id === \"my-near-wallet\") {\n const { accountId, signature, publicKey, error } = Object.fromEntries(\n new URLSearchParams(window.location.hash.slice(1)).entries(),\n );\n\n if (signature) {\n await store.set(\"signer-address\", accountId);\n await store.set(\"signer-public-key\", publicKey);\n }\n\n const signMessageOriginal = wallet.signMessage.bind(wallet);\n\n wallet.signMessage = async ({\n message,\n recipient,\n }: SignMessageParams): Promise<SignedMessage & { nonce?: Uint8Array }> => {\n if (error) return Promise.reject();\n\n const lastMessage = await store.get<string>(\"sign-last-message\");\n const lastNonce = await store.get<Uint8Array>(\"sign-last-nonce\");\n\n if (signature && message === lastMessage && lastNonce) {\n const nonce = Buffer.from(lastNonce);\n const callbackUrl = await store.get<string>(\"sign-last-url\");\n\n return Promise.resolve({\n accountId: currentAddress,\n publicKey,\n signature,\n nonce,\n message,\n callbackUrl,\n } as SignedMessage);\n }\n\n const callbackUrl = window.location.href;\n const nonce = Buffer.from(new KwilNonce(32).clampUTF8);\n\n await store.set(\"sign-last-message\", message);\n await store.set(\"sign-last-nonce\", Array.from(nonce));\n await store.set(\"sign-last-url\", callbackUrl);\n\n signMessageOriginal({ message, nonce, recipient, callbackUrl });\n\n return new Promise(() => ({}) as SignedMessage);\n };\n }\n\n const storedAddress = await store.get<string>(\"signer-address\");\n\n let publicKey = await store.get<string>(\"signer-public-key\");\n\n if (storedAddress !== currentAddress || !publicKey) {\n store.reset();\n // To avoid re-using the old signer's kgw cookie.\n // When kwil-js supports multi cookies, we can remove this.\n await kwilClient.client.auth.logoutKGW();\n\n const message = \"idOS authentication\";\n const nonce = Buffer.from(new KwilNonce(32).bytes);\n const signResult = await wallet.signMessage({ message, recipient, nonce });\n if (!signResult) throw new Error(\"signMessage returned no result\");\n ({ publicKey } = signResult);\n\n await store.set(\"signer-address\", currentAddress);\n await store.set(\"signer-public-key\", publicKey);\n }\n\n const signer = createNearWalletSigner(wallet, recipient);\n\n return {\n kwilSigner: new KwilSigner(signer, implicitAddressFromPublicKey(publicKey), \"nep413\"),\n publicKey,\n };\n}\n","import type { KeyPair } from \"near-api-js\";\n\nimport {\n binaryWriteUint16BE,\n borshSerialize,\n bytesConcat,\n sha256Hash,\n utf8Decode,\n} from \"@idos-network/utils/codecs\";\n\nexport function kwilNep413Signer(\n recipient: string,\n): (keyPair: KeyPair) => (messageBytes: Uint8Array) => Promise<Uint8Array> {\n return (keyPair: KeyPair) =>\n async (messageBytes: Uint8Array): Promise<Uint8Array> => {\n const message = utf8Decode(messageBytes);\n const nonceLength = 32;\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n\n const nep413BorschSchema = {\n struct: {\n message: \"string\",\n nonce: { array: { type: \"u8\", len: nonceLength } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n } as const;\n\n const tag = 2147484061; // 2**31 + 413\n\n const { signature } = keyPair.sign(\n sha256Hash(\n bytesConcat(\n borshSerialize(\"u32\", tag),\n borshSerialize(nep413BorschSchema, { message, nonce, recipient }),\n ),\n ),\n );\n\n const kwilNep413BorschSchema = {\n struct: {\n tag: \"u32\",\n ...nep413BorschSchema.struct,\n },\n };\n\n const kwilNep413BorshParams = {\n tag,\n message,\n nonce,\n recipient,\n };\n\n const kwilNep413BorshPayload = borshSerialize(kwilNep413BorschSchema, kwilNep413BorshParams);\n\n return bytesConcat(\n binaryWriteUint16BE(kwilNep413BorshPayload.length),\n kwilNep413BorshPayload,\n signature,\n );\n };\n}\n","import type * as GemWallet from \"@gemwallet/api\";\nimport type { Store } from \"@idos-network/utils/store\";\nimport type { Xumm } from \"xumm\";\n\nimport { KwilSigner } from \"@idos-network/kwil-js\";\n\nimport type { KwilActionClient } from \"../create-kwil-client\";\n\nimport { getXrpTxHash } from \"./utils\";\n\nexport async function createXrpKwilSigner(\n wallet: Xumm | typeof GemWallet,\n currentAddress: string,\n store: Store,\n kwilClient: KwilActionClient,\n walletPublicKey: string,\n): Promise<KwilSigner> {\n const storedAddress = await store.get<string>(\"signer-address\");\n const storePublicKey = await store.get<string>(\"signer-public-key\");\n\n if (storedAddress !== currentAddress || (storePublicKey && storePublicKey !== walletPublicKey)) {\n try {\n // HEADS UP: for some reason logoutKGW fails on xrp\n // storePublicKey && await kwilClient.client.auth.logoutKGW();\n console.log(\"logoutKGW\", kwilClient);\n } catch (error) {\n console.error(\"Failed to logout KGW:\", error);\n }\n }\n\n await store.set(\"signer-address\", currentAddress);\n await store.set(\"signer-public-key\", walletPublicKey);\n\n const signer = async (message: string | Uint8Array): Promise<Uint8Array> => {\n const signature = await getXrpTxHash(message, wallet);\n if (!signature) {\n throw new Error(\"Failed to sign transaction with XRP\");\n }\n return Buffer.from(signature, \"hex\");\n };\n\n return new KwilSigner(signer, walletPublicKey, \"xrpl\");\n}\n","import type { Store } from \"@idos-network/utils/store\";\nimport type { Wallet as NearWallet } from \"@near-wallet-selector/core\";\nimport type { Keypair as StellarKeypair } from \"@stellar/stellar-sdk\";\nimport type { Wallet as EthersWallet, JsonRpcSigner } from \"ethers\";\nimport type { KeyPair as NearKeyPair } from \"near-api-js\";\nimport type { KeyPair as XrpKeyPair } from \"ripple-keypairs/src/types\";\n\nimport { KwilSigner } from \"@idos-network/kwil-js\";\nimport { bs58Encode, hexDecode, hexEncode } from \"@idos-network/utils/codecs\";\nimport nacl from \"tweetnacl\";\n\nimport type { WalletType } from \"./actions\";\nimport type { KwilActionClient } from \"./create-kwil-client\";\n\nimport { FaceSignSignerProvider } from \"./facesign/facesign-signer\";\nimport {\n createNearWalletKwilSigner,\n implicitAddressFromPublicKey,\n looksLikeNearWallet,\n} from \"./near/create-near-wallet-kwil-signer\";\nimport { kwilNep413Signer } from \"./near/nep413\";\nimport { createXrpKwilSigner } from \"./xrp/signer\";\nimport { getXrpPublicKey, looksLikeXrpWallet } from \"./xrp/utils\";\n\nexport { KwilSigner } from \"@idos-network/kwil-js\";\nexport type Wallet =\n | EthersWallet\n | JsonRpcSigner\n | NearWallet\n | CustomKwilSigner\n | FaceSignSignerProvider;\n\n/**\n * Helper function to check if the given object is a `nacl.SignKeyPair`.\n */\nfunction isNaclSignKeyPair(object: unknown): object is nacl.SignKeyPair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"publicKey\" in object &&\n object.publicKey instanceof Uint8Array &&\n object.publicKey.length === nacl.sign.publicKeyLength &&\n \"secretKey\" in object &&\n object.secretKey instanceof Uint8Array &&\n object.secretKey.length === nacl.sign.secretKeyLength\n );\n}\n\n/**\n * Helper function to check if the given object is a NEAR KeyPair.\n */\nfunction isNearKeyPair(object: unknown): object is NearKeyPair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"getPublicKey\" in object &&\n \"sign\" in object &&\n typeof object.getPublicKey === \"function\" &&\n typeof object.sign === \"function\"\n );\n}\n\n/**\n * Helper function to check if the given object is a Stellar Keypair.\n */\nfunction isStellarKeyPair(object: unknown): object is StellarKeypair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"publicKey\" in object &&\n \"sign\" in object &&\n \"canSign\" in object &&\n typeof object.publicKey === \"function\" &&\n typeof object.sign === \"function\" &&\n typeof object.canSign === \"function\"\n );\n}\n\nexport interface CustomKwilSigner extends KwilSigner {\n publicAddress: string;\n signatureType: string;\n publicKey: string;\n walletType: string;\n signMessage: (message: Uint8Array | string) => Promise<Uint8Array>;\n}\n\nfunction isCustomKwilSigner(object: unknown): object is CustomKwilSigner {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"publicAddress\" in object &&\n \"signatureType\" in object &&\n \"publicKey\" in object &&\n \"signMessage\" in object\n );\n}\n\n/**\n * Helper function to check if the given object is a XRP KeyPair (Server key pairs only).\n */\nfunction isXrplKeyPair(object: unknown): object is XrpKeyPair {\n return !!object && typeof object === \"object\" && \"privateKey\" in object && \"publicKey\" in object;\n}\n\nexport type KwilSignerType =\n | NearKeyPair\n | EthersWallet\n | nacl.SignKeyPair\n | JsonRpcSigner\n | StellarKeypair\n | XrpKeyPair;\n\nexport type SignerAddress = string;\nexport type SignerPublicKey = string | undefined;\n\n/**\n * Creates a `KwilSigner` and its associated `SignerAddress`.\n *\n * This function is explicitly marked as being for backend use only because it doesn't reset\n * the KGW cookie when logging out and re-logging in with a different wallet.\n */\nexport async function createServerKwilSigner(\n signer: KwilSignerType,\n): Promise<[KwilSigner, SignerAddress]> {\n if (isNaclSignKeyPair(signer)) {\n return [\n new KwilSigner(\n async (msg: Uint8Array) => nacl.sign.detached(msg, signer.secretKey),\n signer.publicKey,\n \"ed25519\",\n ),\n implicitAddressFromPublicKey(bs58Encode(signer.publicKey)),\n ];\n }\n\n if (isNearKeyPair(signer)) {\n const publicKey = implicitAddressFromPublicKey(signer.getPublicKey().toString());\n return [\n new KwilSigner(kwilNep413Signer(\"idos-issuer\")(signer), publicKey, \"nep413\"),\n publicKey,\n ];\n }\n\n if (isStellarKeyPair(signer)) {\n const publicKeyString = signer.publicKey();\n const rawPublicKey = signer.rawPublicKey();\n return [\n new KwilSigner(\n async (msg: Uint8Array) => signer.sign(Buffer.from(msg)),\n rawPublicKey,\n \"ed25519\",\n ),\n publicKeyString,\n ];\n }\n\n if (isXrplKeyPair(signer)) {\n let xrpKeypair: typeof import(\"ripple-keypairs\");\n\n try {\n xrpKeypair = await import(\"ripple-keypairs\");\n } catch (e) {\n throw new Error(\"Can't load ripple-keypairs\", { cause: e });\n }\n\n return [\n new KwilSigner(\n async (msg: Uint8Array) => hexDecode(xrpKeypair.sign(hexEncode(msg), signer.privateKey)),\n signer.publicKey,\n \"xrpl\",\n ),\n signer.publicKey,\n ];\n }\n\n if (\"address\" in signer) {\n return [new KwilSigner(signer, signer.address), signer.address];\n }\n\n // Force the check that `signer` is never.\n // If these lines start complaining, that means we're missing an `if` above.\n return ((_: never) => {\n throw new Error(\"Invalid `signer` type\");\n })(signer);\n}\n\nexport async function createClientKwilSigner(\n store: Store,\n kwilClient: KwilActionClient,\n wallet: Wallet,\n): Promise<[KwilSigner, SignerAddress, SignerPublicKey, WalletType]> {\n if (\"connect\" in wallet && \"address\" in wallet) {\n // oxlint-disable-next-line no-param-reassign -- Narrowing the type on purpose\n wallet = wallet as unknown as JsonRpcSigner;\n const currentAddress = await wallet.getAddress();\n\n const storedAddress = await store.get<string>(\"signer-address\");\n\n if (storedAddress !== currentAddress) {\n // To avoid re-using the old signer's kgw cookie.\n // When kwil-js supports multi cookies, we can remove this.\n store.set(\"signer-address\", currentAddress);\n try {\n await kwilClient.client.auth.logoutKGW();\n } catch (error) {\n console.log(\"error logoutKGW\", error);\n }\n }\n\n return [new KwilSigner(wallet, currentAddress), currentAddress, undefined, \"EVM\"];\n }\n\n if (looksLikeNearWallet(wallet)) {\n const accounts = await wallet.getAccounts();\n const { kwilSigner, publicKey } = await createNearWalletKwilSigner(\n wallet,\n accounts[0].accountId,\n store,\n kwilClient,\n );\n\n return [kwilSigner, accounts[0].accountId, publicKey, \"NEAR\"];\n }\n\n if (looksLikeXrpWallet(wallet)) {\n const { address: currentAddress, publicKey: walletPublicKey } = (await getXrpPublicKey(\n wallet,\n )) as { address: string; publicKey: string };\n if (!currentAddress) {\n throw new Error(\"Failed to get XRP address\");\n }\n\n return [\n await createXrpKwilSigner(wallet, currentAddress, store, kwilClient, walletPublicKey),\n currentAddress,\n walletPublicKey,\n \"XRPL\",\n ];\n }\n\n if (isCustomKwilSigner(wallet) || wallet instanceof FaceSignSignerProvider) {\n const storedAddress = await store.get<string>(\"signer-address\");\n\n if (storedAddress !== wallet.publicAddress) {\n store.set(\"signer-address\", wallet.publicAddress);\n try {\n await kwilClient.client.auth.logoutKGW();\n } catch (error) {\n console.log(\"error logoutKGW\", error);\n }\n }\n\n return [\n new KwilSigner(\n async (msg: Uint8Array) => wallet.signMessage(msg),\n wallet.publicAddress,\n \"ed25519\",\n ),\n wallet.publicAddress,\n wallet.publicKey,\n wallet.walletType as WalletType,\n ];\n }\n\n // Force the check that `signer` is `never`.\n // If these lines start complaining, that means we're missing an `if` above.\n return ((_: never) => {\n throw new Error(\"Invalid `signer` type\");\n })(wallet);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["#createActionInputs","#actionTypes","KwilSigner","KwilSigner","KwilSigner"],"sources":["../src/create-kwil-client.ts","../src/near/get-config.ts","../src/near/create-near-wallet-kwil-signer.ts","../src/near/nep413.ts","../src/xrp/signer.ts","../src/create-kwil-signer.ts"],"sourcesContent":["import type { Config } from \"@idos-network/kwil-js/dist/api_client/config\";\nimport type {\n ActionBody,\n CallBody,\n PositionalParams,\n} from \"@idos-network/kwil-js/dist/core/action\";\nimport type { DataInfo } from \"@idos-network/kwil-js/dist/core/database\";\n\nimport { type KwilSigner, NodeKwil, WebKwil } from \"@idos-network/kwil-js\";\nimport invariant from \"tiny-invariant\";\n\nimport type { ActionSchemaElement } from \"./actions\";\n\nimport { actionSchema } from \"./actions\";\n\ntype CreateKwilClientParams = {\n chainId?: string;\n nodeUrl: string;\n};\n\ntype KwilActions = typeof actionSchema;\ntype ActionName = keyof KwilActions;\n\ntype AllKwilCallAction = {\n [Name in ActionName]: {\n name: Name;\n // oxlint-disable-next-line typescript/no-explicit-any -- This is fine\n inputs: Record<KwilActions[Name][number][\"name\"], any>;\n };\n};\n\ntype KwilCallActionRequestParams = AllKwilCallAction[ActionName];\n\ntype AllKwilExecuteAction = {\n [Name in ActionName]: AllKwilCallAction[Name] & { description: string };\n};\n\ntype KwilExecuteActionRequestParams = AllKwilExecuteAction[ActionName];\n\n/**\n * A client for interacting with kwil with type-safe abstractions for `call` and `execute`.\n * Has utility methods for creating actions and setting a signer.\n */\nexport class KwilActionClient {\n signer?: KwilSigner;\n readonly client: NodeKwil | WebKwil;\n\n constructor(client: NodeKwil | WebKwil) {\n this.client = client;\n }\n\n #createActionInputs(actionName: string, params: Record<string, unknown> = {}): PositionalParams {\n if (!params || !Object.keys(params).length) return [];\n\n const args = (actionSchema as Record<string, readonly ActionSchemaElement[]>)[actionName];\n\n return args.map(({ name }) => {\n const value = params[name];\n // Handle falsy values appropriately\n if (value === \"\" || value === 0) return value;\n return value ?? null;\n }) as PositionalParams;\n }\n\n #actionTypes(actionName: string): DataInfo[] {\n const args = actionSchema[actionName];\n return args.map((arg) => arg.type);\n }\n\n /**\n * Calls an action on the kwil nodes. This similar to `GET` like request.\n */\n async call<T = unknown>(\n params: KwilCallActionRequestParams,\n signer: KwilSigner | undefined = this.signer,\n ): Promise<T> {\n const action: CallBody = {\n name: params.name,\n namespace: \"main\",\n inputs: this.#createActionInputs(params.name, params.inputs),\n types: this.#actionTypes(params.name),\n };\n\n const response = await this.client.call(action as CallBody, signer);\n return response?.data?.result as T;\n }\n\n /**\n * Executes an action on the kwil nodes. This similar to `POST` like request.\n */\n async execute(\n params: KwilExecuteActionRequestParams,\n signer: KwilSigner | undefined = this.signer,\n synchronous = true,\n ): Promise<string | undefined> {\n invariant(signer, \"Signer is not set, you must set it before executing an action\");\n const action: ActionBody = {\n name: params.name,\n namespace: \"main\",\n description: params.description,\n inputs: [this.#createActionInputs(params.name, params.inputs)],\n types: this.#actionTypes(params.name),\n };\n const response = await this.client.execute(action, signer, synchronous);\n return response.data?.tx_hash;\n }\n\n setSigner(signer: KwilSigner | undefined): void {\n this.signer = signer;\n }\n\n /**\n * Creates action inputs from the given parameters that are used in the action body.\n */\n}\n\nconst DEFAULT_TIMEOUT = 30_000;\n\nconst createKwilClient =\n (Cls: new (opts: Config) => NodeKwil | WebKwil) =>\n async ({ nodeUrl: kwilProvider, chainId }: CreateKwilClientParams): Promise<KwilActionClient> => {\n const _kwil = new Cls({ kwilProvider, chainId: \"\" });\n // oxlint-disable-next-line no-param-reassign -- Default value fallback\n chainId ||= (await _kwil.chainInfo({ disableWarning: true })).data?.chain_id;\n invariant(chainId, \"Can't discover `chainId`. You must pass it explicitly.\");\n\n const client = new KwilActionClient(\n new Cls({ kwilProvider, chainId, timeout: DEFAULT_TIMEOUT }),\n );\n\n return client;\n };\n\n/**\n * Create a kwil client for node.js environment\n */\nexport const createNodeKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient> =\n createKwilClient(NodeKwil);\n\n/**\n * Create a kwil client for browser environment\n */\nexport const createWebKwilClient: (params: CreateKwilClientParams) => Promise<KwilActionClient> =\n createKwilClient(WebKwil);\n","// Network configuration mapping\nconst NEAR_NETWORKS = {\n mainnet: {\n networkId: \"mainnet\",\n nodeUrl: \"https://rpc.mainnet.near.org\",\n },\n testnet: {\n networkId: \"testnet\",\n nodeUrl: \"https://rpc.testnet.near.org\",\n },\n betanet: {\n networkId: \"betanet\",\n nodeUrl: \"https://rpc.betanet.near.org\",\n },\n shardnet: {\n networkId: \"shardnet\",\n nodeUrl: \"https://rpc.shardnet.near.org\",\n },\n} as const;\n\n// Function to detect NEAR network from account ID\nexport const detectNearNetwork = (accountId: string): keyof typeof NEAR_NETWORKS => {\n if (accountId.endsWith(\".near\")) return \"mainnet\";\n if (accountId.endsWith(\".testnet\")) return \"testnet\";\n if (accountId.endsWith(\".betanet\")) return \"betanet\";\n if (accountId.endsWith(\".shardnet\")) return \"shardnet\";\n\n // Default to testnet for development, mainnet for production\n return \"testnet\";\n};\n\n// Function to get connection config based on account ID\nexport const getNearNodeUrl = (accountId: string): string => {\n const network = detectNearNetwork(accountId);\n const networkConfig = NEAR_NETWORKS[network];\n\n return networkConfig.nodeUrl;\n};\n","import type {\n NearWalletBase as NearWallet,\n SignedMessage,\n SignMessageParams,\n} from \"@hot-labs/near-connect\";\nimport type { Store } from \"@idos-network/utils/store\";\nimport type { BlockReference, JsonRpcProvider, ViewAccessKeyListRequest } from \"near-api-js\";\n\nimport { KwilSigner } from \"@idos-network/kwil-js\";\nimport {\n base64Decode,\n binaryWriteUint16BE,\n borshSerialize,\n bs58Decode,\n bytesConcat,\n hexEncode,\n utf8Decode,\n} from \"@idos-network/utils/codecs\";\n\nimport type { KwilActionClient } from \"../create-kwil-client\";\n\nimport { getNearNodeUrl } from \"./get-config\";\n\n// Near copy & paste types\n// since they don't expose them...\n// https://github.com/near/near-api-js/blob/master/src/rpc/types.gen.ts#L803\nexport type CryptoHash = string;\nexport type PublicKey = string;\nexport type NearToken = string;\nexport type AccessKeyPermissionView =\n | \"FullAccess\"\n | {\n FunctionCall: {\n allowance?: NearToken | null;\n method_names: Array<string>;\n receiver_id: string;\n };\n };\nexport type AccessKeyView = {\n nonce: number;\n permission: AccessKeyPermissionView;\n};\nexport type AccessKeyInfoView = {\n access_key: AccessKeyView;\n public_key: PublicKey;\n};\nexport type RpcViewAccessKeyListResponse = {\n block_hash: CryptoHash;\n block_height: number;\n keys: Array<AccessKeyInfoView>;\n};\n\nexport function looksLikeNearWallet(signer: unknown): signer is NearWallet {\n return (\n signer !== null &&\n typeof signer === \"object\" &&\n \"manifest\" in signer &&\n signer.manifest !== null &&\n typeof signer.manifest === \"object\" &&\n \"id\" in signer.manifest &&\n \"name\" in signer.manifest &&\n \"signIn\" in signer &&\n \"signOut\" in signer &&\n \"getAccounts\" in signer &&\n \"signMessage\" in signer &&\n \"signAndSendTransaction\" in signer\n );\n}\n\nclass KwilNonce {\n bytes: Uint8Array;\n\n constructor(length = 32) {\n // We're in the browser, so there's a window.crypto for sure.\n /* global crypto */\n this.bytes = crypto.getRandomValues(new Uint8Array(length));\n }\n\n get clampUTF8() {\n return this.bytes.map((byte) => byte & 127);\n }\n}\n\n/**\n * Creates a signer function that can be used to sign messages with a NEAR wallet\n */\nfunction createNearWalletSigner(\n wallet: NearWallet,\n recipient: string,\n): (message: string | Uint8Array) => Promise<Uint8Array> {\n return async (message: string | Uint8Array): Promise<Uint8Array> => {\n const messageString = typeof message === \"string\" ? message : utf8Decode(message);\n\n if (!wallet.signMessage) {\n throw new Error(\"Only wallets with signMessage are supported.\");\n }\n\n const nonceSuggestion = Buffer.from(new KwilNonce(32).bytes);\n\n const {\n nonce = nonceSuggestion,\n signature,\n // oxlint-disable-next-line typescript/no-non-null-assertion -- Only non-signing wallets return void.\n } = (await (\n wallet.signMessage as (_: SignMessageParams) => Promise<SignedMessage & { nonce: Uint8Array }>\n )({\n message: messageString,\n recipient,\n nonce: nonceSuggestion,\n }))!;\n\n const nep413BorschSchema = {\n struct: {\n tag: \"u32\",\n message: \"string\",\n nonce: { array: { type: \"u8\", len: 32 } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n };\n\n const nep413BorshParams = {\n tag: 2147484061,\n message: messageString,\n nonce: Array.from(nonce),\n recipient,\n callbackUrl: undefined,\n };\n\n const nep413BorshPayload = borshSerialize(nep413BorschSchema, nep413BorshParams);\n const result = bytesConcat(\n binaryWriteUint16BE(nep413BorshPayload.length),\n nep413BorshPayload,\n base64Decode(signature),\n );\n\n return result;\n };\n}\n\nexport function implicitAddressFromPublicKey(publicKey: string): string {\n const key_without_prefix = publicKey.replace(/^ed25519:/, \"\");\n return hexEncode(bs58Decode(key_without_prefix));\n}\n\nexport async function getNearFullAccessPublicKeys(\n namedAddress: string,\n): Promise<string[] | undefined> {\n let providerKlass: typeof JsonRpcProvider;\n try {\n providerKlass = (await import(\"near-api-js\")).JsonRpcProvider;\n } catch (_e) {\n throw new Error(\"Can't load near-api-js\");\n }\n const nodeUrl = getNearNodeUrl(namedAddress);\n const provider = new providerKlass({ url: nodeUrl });\n\n try {\n const viewAccessKeyListRequest: ViewAccessKeyListRequest & BlockReference = {\n account_id: namedAddress,\n request_type: \"view_access_key_list\",\n finality: \"final\",\n };\n\n const accessKeyList =\n await provider.query<RpcViewAccessKeyListResponse>(viewAccessKeyListRequest);\n\n return accessKeyList.keys\n .filter((element) => element.access_key.permission === \"FullAccess\")\n ?.map((i) => i.public_key);\n } catch {\n // `Near` failed if namedAddress contains uppercase symbols\n return;\n }\n}\n\nexport async function signNearMessage(\n wallet: NearWallet,\n message: string,\n recipient = \"idos.network\",\n): Promise<string> {\n const signer = createNearWalletSigner(wallet, recipient);\n const signedPayload = await signer(message);\n return hexEncode(signedPayload);\n}\n\nexport async function createNearWalletKwilSigner(\n wallet: NearWallet,\n currentAddress: string,\n store: Store,\n kwilClient: KwilActionClient,\n recipient = \"idos.network\",\n): Promise<{ kwilSigner: KwilSigner; publicKey: string }> {\n if (!wallet.signMessage) throw new Error(\"Only wallets with signMessage are supported.\");\n\n if (wallet.manifest.id === \"mynearwallet\") {\n const { accountId, signature, publicKey, error } = Object.fromEntries(\n new URLSearchParams(window.location.hash.slice(1)).entries(),\n );\n\n if (signature) {\n await store.set(\"signer-address\", accountId);\n await store.set(\"signer-public-key\", publicKey);\n }\n\n const signMessageOriginal = wallet.signMessage.bind(wallet);\n\n wallet.signMessage = async ({\n message,\n recipient,\n }: SignMessageParams): Promise<SignedMessage & { nonce?: Uint8Array }> => {\n if (error) return Promise.reject();\n\n const lastMessage = await store.get<string>(\"sign-last-message\");\n const lastNonce = await store.get<Uint8Array>(\"sign-last-nonce\");\n\n if (signature && message === lastMessage && lastNonce) {\n const nonce = Buffer.from(lastNonce);\n const callbackUrl = await store.get<string>(\"sign-last-url\");\n\n return Promise.resolve({\n accountId: currentAddress,\n publicKey,\n signature,\n nonce,\n message,\n callbackUrl,\n } as SignedMessage);\n }\n\n const nonce = Buffer.from(new KwilNonce(32).clampUTF8);\n\n await store.set(\"sign-last-message\", message);\n await store.set(\"sign-last-nonce\", Array.from(nonce));\n\n signMessageOriginal({ message, nonce, recipient });\n\n return new Promise(() => ({}) as SignedMessage);\n };\n }\n\n const storedAddress = await store.get<string>(\"signer-address\");\n\n let publicKey = await store.get<string>(\"signer-public-key\");\n\n if (storedAddress !== currentAddress || !publicKey) {\n store.reset();\n // To avoid re-using the old signer's kgw cookie.\n // When kwil-js supports multi cookies, we can remove this.\n await kwilClient.client.auth.logoutKGW();\n\n const message = \"idOS authentication\";\n const nonce = Buffer.from(new KwilNonce(32).bytes);\n const signResult = await wallet.signMessage({ message, recipient, nonce });\n if (!signResult) throw new Error(\"signMessage returned no result\");\n\n publicKey = signResult.publicKey;\n\n await store.set(\"signer-address\", currentAddress);\n await store.set(\"signer-public-key\", publicKey);\n }\n\n const signer = createNearWalletSigner(wallet, recipient);\n\n return {\n kwilSigner: new KwilSigner(signer, implicitAddressFromPublicKey(publicKey), \"nep413\"),\n publicKey,\n };\n}\n","import type { KeyPair } from \"near-api-js\";\n\nimport {\n binaryWriteUint16BE,\n borshSerialize,\n bytesConcat,\n sha256Hash,\n utf8Decode,\n} from \"@idos-network/utils/codecs\";\n\nexport function kwilNep413Signer(\n recipient: string,\n): (keyPair: KeyPair) => (messageBytes: Uint8Array) => Promise<Uint8Array> {\n return (keyPair: KeyPair) =>\n async (messageBytes: Uint8Array): Promise<Uint8Array> => {\n const message = utf8Decode(messageBytes);\n const nonceLength = 32;\n const nonce = crypto.getRandomValues(new Uint8Array(nonceLength));\n\n const nep413BorschSchema = {\n struct: {\n message: \"string\",\n nonce: { array: { type: \"u8\", len: nonceLength } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n } as const;\n\n const tag = 2147484061; // 2**31 + 413\n\n const { signature } = keyPair.sign(\n sha256Hash(\n bytesConcat(\n borshSerialize(\"u32\", tag),\n borshSerialize(nep413BorschSchema, { message, nonce, recipient }),\n ),\n ),\n );\n\n const kwilNep413BorschSchema = {\n struct: {\n tag: \"u32\",\n ...nep413BorschSchema.struct,\n },\n };\n\n const kwilNep413BorshParams = {\n tag,\n message,\n nonce,\n recipient,\n };\n\n const kwilNep413BorshPayload = borshSerialize(kwilNep413BorschSchema, kwilNep413BorshParams);\n\n return bytesConcat(\n binaryWriteUint16BE(kwilNep413BorshPayload.length),\n kwilNep413BorshPayload,\n signature,\n );\n };\n}\n","import type * as GemWallet from \"@gemwallet/api\";\nimport type { Store } from \"@idos-network/utils/store\";\nimport type { Xumm } from \"xumm\";\n\nimport { KwilSigner } from \"@idos-network/kwil-js\";\n\nimport type { KwilActionClient } from \"../create-kwil-client\";\n\nimport { getXrpTxHash } from \"./utils\";\n\nexport async function createXrpKwilSigner(\n wallet: Xumm | typeof GemWallet,\n currentAddress: string,\n store: Store,\n kwilClient: KwilActionClient,\n walletPublicKey: string,\n): Promise<KwilSigner> {\n const storedAddress = await store.get<string>(\"signer-address\");\n const storePublicKey = await store.get<string>(\"signer-public-key\");\n\n if (storedAddress !== currentAddress || (storePublicKey && storePublicKey !== walletPublicKey)) {\n try {\n // HEADS UP: for some reason logoutKGW fails on xrp\n // storePublicKey && await kwilClient.client.auth.logoutKGW();\n console.log(\"logoutKGW\", kwilClient);\n } catch (error) {\n console.error(\"Failed to logout KGW:\", error);\n }\n }\n\n await store.set(\"signer-address\", currentAddress);\n await store.set(\"signer-public-key\", walletPublicKey);\n\n const signer = async (message: string | Uint8Array): Promise<Uint8Array> => {\n const signature = await getXrpTxHash(message, wallet);\n if (!signature) {\n throw new Error(\"Failed to sign transaction with XRP\");\n }\n return Buffer.from(signature, \"hex\");\n };\n\n return new KwilSigner(signer, walletPublicKey, \"xrpl\");\n}\n","import type { NearWalletBase as NearWallet } from \"@hot-labs/near-connect\";\nimport type { Store } from \"@idos-network/utils/store\";\nimport type { Keypair as StellarKeypair } from \"@stellar/stellar-sdk\";\nimport type { Wallet as EthersWallet, JsonRpcSigner } from \"ethers\";\nimport type { KeyPair as NearKeyPair } from \"near-api-js\";\nimport type { KeyPair as XrpKeyPair } from \"ripple-keypairs/src/types\";\n\nimport { KwilSigner } from \"@idos-network/kwil-js\";\nimport { bs58Encode, hexDecode, hexEncode } from \"@idos-network/utils/codecs\";\nimport nacl from \"tweetnacl\";\n\nimport type { WalletType } from \"./actions\";\nimport type { KwilActionClient } from \"./create-kwil-client\";\n\nimport { FaceSignSignerProvider } from \"./facesign/facesign-signer\";\nimport {\n createNearWalletKwilSigner,\n implicitAddressFromPublicKey,\n looksLikeNearWallet,\n} from \"./near/create-near-wallet-kwil-signer\";\nimport { kwilNep413Signer } from \"./near/nep413\";\nimport { createXrpKwilSigner } from \"./xrp/signer\";\nimport { getXrpPublicKey, looksLikeXrpWallet } from \"./xrp/utils\";\n\nexport { KwilSigner } from \"@idos-network/kwil-js\";\nexport type Wallet =\n | EthersWallet\n | JsonRpcSigner\n | NearWallet\n | CustomKwilSigner\n | FaceSignSignerProvider;\n\n/**\n * Helper function to check if the given object is a `nacl.SignKeyPair`.\n */\nfunction isNaclSignKeyPair(object: unknown): object is nacl.SignKeyPair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"publicKey\" in object &&\n object.publicKey instanceof Uint8Array &&\n object.publicKey.length === nacl.sign.publicKeyLength &&\n \"secretKey\" in object &&\n object.secretKey instanceof Uint8Array &&\n object.secretKey.length === nacl.sign.secretKeyLength\n );\n}\n\n/**\n * Helper function to check if the given object is a NEAR KeyPair.\n */\nfunction isNearKeyPair(object: unknown): object is NearKeyPair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"getPublicKey\" in object &&\n \"sign\" in object &&\n typeof object.getPublicKey === \"function\" &&\n typeof object.sign === \"function\"\n );\n}\n\n/**\n * Helper function to check if the given object is a Stellar Keypair.\n */\nfunction isStellarKeyPair(object: unknown): object is StellarKeypair {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"publicKey\" in object &&\n \"sign\" in object &&\n \"canSign\" in object &&\n typeof object.publicKey === \"function\" &&\n typeof object.sign === \"function\" &&\n typeof object.canSign === \"function\"\n );\n}\n\nexport interface CustomKwilSigner extends KwilSigner {\n publicAddress: string;\n signatureType: string;\n publicKey: string;\n walletType: string;\n signMessage: (message: Uint8Array | string) => Promise<Uint8Array>;\n}\n\nfunction isCustomKwilSigner(object: unknown): object is CustomKwilSigner {\n return (\n object !== null &&\n typeof object === \"object\" &&\n \"publicAddress\" in object &&\n \"signatureType\" in object &&\n \"publicKey\" in object &&\n \"signMessage\" in object\n );\n}\n\n/**\n * Helper function to check if the given object is a XRP KeyPair (Server key pairs only).\n */\nfunction isXrplKeyPair(object: unknown): object is XrpKeyPair {\n return !!object && typeof object === \"object\" && \"privateKey\" in object && \"publicKey\" in object;\n}\n\nexport type KwilSignerType =\n | NearKeyPair\n | EthersWallet\n | nacl.SignKeyPair\n | JsonRpcSigner\n | StellarKeypair\n | XrpKeyPair;\n\nexport type SignerAddress = string;\nexport type SignerPublicKey = string | undefined;\n\n/**\n * Creates a `KwilSigner` and its associated `SignerAddress`.\n *\n * This function is explicitly marked as being for backend use only because it doesn't reset\n * the KGW cookie when logging out and re-logging in with a different wallet.\n */\nexport async function createServerKwilSigner(\n signer: KwilSignerType,\n): Promise<[KwilSigner, SignerAddress]> {\n if (isNaclSignKeyPair(signer)) {\n return [\n new KwilSigner(\n async (msg: Uint8Array) => nacl.sign.detached(msg, signer.secretKey),\n signer.publicKey,\n \"ed25519\",\n ),\n implicitAddressFromPublicKey(bs58Encode(signer.publicKey)),\n ];\n }\n\n if (isNearKeyPair(signer)) {\n const publicKey = implicitAddressFromPublicKey(signer.getPublicKey().toString());\n return [\n new KwilSigner(kwilNep413Signer(\"idos-issuer\")(signer), publicKey, \"nep413\"),\n publicKey,\n ];\n }\n\n if (isStellarKeyPair(signer)) {\n const publicKeyString = signer.publicKey();\n const rawPublicKey = signer.rawPublicKey();\n return [\n new KwilSigner(\n async (msg: Uint8Array) => signer.sign(Buffer.from(msg)),\n rawPublicKey,\n \"ed25519\",\n ),\n publicKeyString,\n ];\n }\n\n if (isXrplKeyPair(signer)) {\n let xrpKeypair: typeof import(\"ripple-keypairs\");\n\n try {\n xrpKeypair = await import(\"ripple-keypairs\");\n } catch (e) {\n throw new Error(\"Can't load ripple-keypairs\", { cause: e });\n }\n\n return [\n new KwilSigner(\n async (msg: Uint8Array) => hexDecode(xrpKeypair.sign(hexEncode(msg), signer.privateKey)),\n signer.publicKey,\n \"xrpl\",\n ),\n signer.publicKey,\n ];\n }\n\n if (\"address\" in signer) {\n return [new KwilSigner(signer, signer.address), signer.address];\n }\n\n // Force the check that `signer` is never.\n // If these lines start complaining, that means we're missing an `if` above.\n return ((_: never) => {\n throw new Error(\"Invalid `signer` type\");\n })(signer);\n}\n\nexport async function createClientKwilSigner(\n store: Store,\n kwilClient: KwilActionClient,\n wallet: Wallet,\n): Promise<[KwilSigner, SignerAddress, SignerPublicKey, WalletType]> {\n if (\"connect\" in wallet && \"address\" in wallet) {\n // oxlint-disable-next-line no-param-reassign -- Narrowing the type on purpose\n wallet = wallet as unknown as JsonRpcSigner;\n const currentAddress = await wallet.getAddress();\n\n const storedAddress = await store.get<string>(\"signer-address\");\n\n if (storedAddress !== currentAddress) {\n // To avoid re-using the old signer's kgw cookie.\n // When kwil-js supports multi cookies, we can remove this.\n store.set(\"signer-address\", currentAddress);\n try {\n await kwilClient.client.auth.logoutKGW();\n } catch (error) {\n console.log(\"error logoutKGW\", error);\n }\n }\n\n return [new KwilSigner(wallet, currentAddress), currentAddress, undefined, \"EVM\"];\n }\n\n if (looksLikeNearWallet(wallet)) {\n const accounts = await wallet.getAccounts();\n const { kwilSigner, publicKey } = await createNearWalletKwilSigner(\n wallet,\n accounts[0].accountId,\n store,\n kwilClient,\n );\n\n return [kwilSigner, accounts[0].accountId, publicKey, \"NEAR\"];\n }\n\n if (looksLikeXrpWallet(wallet)) {\n const { address: currentAddress, publicKey: walletPublicKey } = (await getXrpPublicKey(\n wallet,\n )) as { address: string; publicKey: string };\n if (!currentAddress) {\n throw new Error(\"Failed to get XRP address\");\n }\n\n return [\n await createXrpKwilSigner(wallet, currentAddress, store, kwilClient, walletPublicKey),\n currentAddress,\n walletPublicKey,\n \"XRPL\",\n ];\n }\n\n if (isCustomKwilSigner(wallet) || wallet instanceof FaceSignSignerProvider) {\n const storedAddress = await store.get<string>(\"signer-address\");\n\n if (storedAddress !== wallet.publicAddress) {\n store.set(\"signer-address\", wallet.publicAddress);\n try {\n await kwilClient.client.auth.logoutKGW();\n } catch (error) {\n console.log(\"error logoutKGW\", error);\n }\n }\n\n return [\n new KwilSigner(\n async (msg: Uint8Array) => wallet.signMessage(msg),\n wallet.publicAddress,\n \"ed25519\",\n ),\n wallet.publicAddress,\n wallet.publicKey,\n wallet.walletType as WalletType,\n ];\n }\n\n // Force the check that `signer` is `never`.\n // If these lines start complaining, that means we're missing an `if` above.\n return ((_: never) => {\n throw new Error(\"Invalid `signer` type\");\n })(wallet);\n}\n"],"mappings":";;;;;;;;;;;;AA2CA,IAAa,mBAAb,MAA8B;CAC5B;CACA;CAEA,YAAY,QAA4B;EACtC,KAAK,SAAS;;CAGhB,oBAAoB,YAAoB,SAAkC,EAAE,EAAoB;EAC9F,IAAI,CAAC,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC,QAAQ,OAAO,EAAE;EAIrD,OAFc,aAAgE,YAElE,KAAK,EAAE,WAAW;GAC5B,MAAM,QAAQ,OAAO;GAErB,IAAI,UAAU,MAAM,UAAU,GAAG,OAAO;GACxC,OAAO,SAAS;IAChB;;CAGJ,aAAa,YAAgC;EAE3C,OADa,aAAa,YACd,KAAK,QAAQ,IAAI,KAAK;;;;;CAMpC,MAAM,KACJ,QACA,SAAiC,KAAK,QAC1B;EACZ,MAAM,SAAmB;GACvB,MAAM,OAAO;GACb,WAAW;GACX,QAAQ,KAAKA,oBAAoB,OAAO,MAAM,OAAO,OAAO;GAC5D,OAAO,KAAKC,aAAa,OAAO,KAAK;GACtC;EAGD,QAAO,MADgB,KAAK,OAAO,KAAK,QAAoB,OAAO,GAClD,MAAM;;;;;CAMzB,MAAM,QACJ,QACA,SAAiC,KAAK,QACtC,cAAc,MACe;EAC7B,UAAU,QAAQ,gEAAgE;EAClF,MAAM,SAAqB;GACzB,MAAM,OAAO;GACb,WAAW;GACX,aAAa,OAAO;GACpB,QAAQ,CAAC,KAAKD,oBAAoB,OAAO,MAAM,OAAO,OAAO,CAAC;GAC9D,OAAO,KAAKC,aAAa,OAAO,KAAK;GACtC;EAED,QAAO,MADgB,KAAK,OAAO,QAAQ,QAAQ,QAAQ,YAAY,EACvD,MAAM;;CAGxB,UAAU,QAAsC;EAC9C,KAAK,SAAS;;;AAQlB,MAAM,kBAAkB;AAExB,MAAM,oBACH,QACD,OAAO,EAAE,SAAS,cAAc,cAAiE;CAC/F,MAAM,QAAQ,IAAI,IAAI;EAAE;EAAc,SAAS;EAAI,CAAC;CAEpD,aAAa,MAAM,MAAM,UAAU,EAAE,gBAAgB,MAAM,CAAC,EAAE,MAAM;CACpE,UAAU,SAAS,yDAAyD;CAM5E,OAAO,IAJY,iBACjB,IAAI,IAAI;EAAE;EAAc;EAAS,SAAS;EAAiB,CAAC,CAGjD;;;;;AAMjB,MAAa,uBACX,iBAAiB,SAAS;;;;AAK5B,MAAa,sBACX,iBAAiB,QAAQ;;;AC9I3B,MAAM,gBAAgB;CACpB,SAAS;EACP,WAAW;EACX,SAAS;EACV;CACD,SAAS;EACP,WAAW;EACX,SAAS;EACV;CACD,SAAS;EACP,WAAW;EACX,SAAS;EACV;CACD,UAAU;EACR,WAAW;EACX,SAAS;EACV;CACF;AAGD,MAAa,qBAAqB,cAAkD;CAClF,IAAI,UAAU,SAAS,QAAQ,EAAE,OAAO;CACxC,IAAI,UAAU,SAAS,WAAW,EAAE,OAAO;CAC3C,IAAI,UAAU,SAAS,WAAW,EAAE,OAAO;CAC3C,IAAI,UAAU,SAAS,YAAY,EAAE,OAAO;CAG5C,OAAO;;AAIT,MAAa,kBAAkB,cAA8B;CAI3D,OAFsB,cADN,kBAAkB,UACS,EAEtB;;;;ACgBvB,SAAgB,oBAAoB,QAAuC;CACzE,OACE,WAAW,QACX,OAAO,WAAW,YAClB,cAAc,UACd,OAAO,aAAa,QACpB,OAAO,OAAO,aAAa,YAC3B,QAAQ,OAAO,YACf,UAAU,OAAO,YACjB,YAAY,UACZ,aAAa,UACb,iBAAiB,UACjB,iBAAiB,UACjB,4BAA4B;;AAIhC,IAAM,YAAN,MAAgB;CACd;CAEA,YAAY,SAAS,IAAI;EAGvB,KAAK,QAAQ,OAAO,gBAAgB,IAAI,WAAW,OAAO,CAAC;;CAG7D,IAAI,YAAY;EACd,OAAO,KAAK,MAAM,KAAK,SAAS,OAAO,IAAI;;;;;;AAO/C,SAAS,uBACP,QACA,WACuD;CACvD,OAAO,OAAO,YAAsD;EAClE,MAAM,gBAAgB,OAAO,YAAY,WAAW,UAAU,WAAW,QAAQ;EAEjF,IAAI,CAAC,OAAO,aACV,MAAM,IAAI,MAAM,+CAA+C;EAGjE,MAAM,kBAAkB,OAAO,KAAK,IAAI,UAAU,GAAG,CAAC,MAAM;EAE5D,MAAM,EACJ,QAAQ,iBACR,cAEG,MACH,OAAO,YACP;GACA,SAAS;GACT;GACA,OAAO;GACR,CAAC;EAoBF,MAAM,qBAAqB,eAAe,EAjBxC,QAAQ;GACN,KAAK;GACL,SAAS;GACT,OAAO,EAAE,OAAO;IAAE,MAAM;IAAM,KAAK;IAAI,EAAE;GACzC,WAAW;GACX,aAAa,EAAE,QAAQ,UAAU;GAClC,EAWyD,EAAE;GAP5D,KAAK;GACL,SAAS;GACT,OAAO,MAAM,KAAK,MAAM;GACxB;GACA,aAAa,KAAA;GAGgE,CAAC;EAOhF,OANe,YACb,oBAAoB,mBAAmB,OAAO,EAC9C,oBACA,aAAa,UAAU,CAGZ;;;AAIjB,SAAgB,6BAA6B,WAA2B;CAEtE,OAAO,UAAU,WADU,UAAU,QAAQ,aAAa,GACZ,CAAC,CAAC;;AAGlD,eAAsB,4BACpB,cAC+B;CAC/B,IAAI;CACJ,IAAI;EACF,iBAAiB,MAAM,OAAO,gBAAgB;UACvC,IAAI;EACX,MAAM,IAAI,MAAM,yBAAyB;;CAE3C,MAAM,UAAU,eAAe,aAAa;CAC5C,MAAM,WAAW,IAAI,cAAc,EAAE,KAAK,SAAS,CAAC;CAEpD,IAAI;EACF,MAAM,2BAAsE;GAC1E,YAAY;GACZ,cAAc;GACd,UAAU;GACX;EAKD,QAAO,MAFC,SAAS,MAAoC,yBAAyB,EAEzD,KAClB,QAAQ,YAAY,QAAQ,WAAW,eAAe,aAAa,EAClE,KAAK,MAAM,EAAE,WAAW;SACtB;EAEN;;;AAIJ,eAAsB,gBACpB,QACA,SACA,YAAY,gBACK;CAGjB,OAAO,UAAU,MAFF,uBAAuB,QAAQ,UACZ,CAAC,QAAQ,CACZ;;AAGjC,eAAsB,2BACpB,QACA,gBACA,OACA,YACA,YAAY,gBAC4C;CACxD,IAAI,CAAC,OAAO,aAAa,MAAM,IAAI,MAAM,+CAA+C;CAExF,IAAI,OAAO,SAAS,OAAO,gBAAgB;EACzC,MAAM,EAAE,WAAW,WAAW,WAAW,UAAU,OAAO,YACxD,IAAI,gBAAgB,OAAO,SAAS,KAAK,MAAM,EAAE,CAAC,CAAC,SAAS,CAC7D;EAED,IAAI,WAAW;GACb,MAAM,MAAM,IAAI,kBAAkB,UAAU;GAC5C,MAAM,MAAM,IAAI,qBAAqB,UAAU;;EAGjD,MAAM,sBAAsB,OAAO,YAAY,KAAK,OAAO;EAE3D,OAAO,cAAc,OAAO,EAC1B,SACA,gBACwE;GACxE,IAAI,OAAO,OAAO,QAAQ,QAAQ;GAElC,MAAM,cAAc,MAAM,MAAM,IAAY,oBAAoB;GAChE,MAAM,YAAY,MAAM,MAAM,IAAgB,kBAAkB;GAEhE,IAAI,aAAa,YAAY,eAAe,WAAW;IACrD,MAAM,QAAQ,OAAO,KAAK,UAAU;IACpC,MAAM,cAAc,MAAM,MAAM,IAAY,gBAAgB;IAE5D,OAAO,QAAQ,QAAQ;KACrB,WAAW;KACX;KACA;KACA;KACA;KACA;KACD,CAAkB;;GAGrB,MAAM,QAAQ,OAAO,KAAK,IAAI,UAAU,GAAG,CAAC,UAAU;GAEtD,MAAM,MAAM,IAAI,qBAAqB,QAAQ;GAC7C,MAAM,MAAM,IAAI,mBAAmB,MAAM,KAAK,MAAM,CAAC;GAErD,oBAAoB;IAAE;IAAS;IAAO;IAAW,CAAC;GAElD,OAAO,IAAI,eAAe,EAAE,EAAmB;;;CAInD,MAAM,gBAAgB,MAAM,MAAM,IAAY,iBAAiB;CAE/D,IAAI,YAAY,MAAM,MAAM,IAAY,oBAAoB;CAE5D,IAAI,kBAAkB,kBAAkB,CAAC,WAAW;EAClD,MAAM,OAAO;EAGb,MAAM,WAAW,OAAO,KAAK,WAAW;EAExC,MAAM,UAAU;EAChB,MAAM,QAAQ,OAAO,KAAK,IAAI,UAAU,GAAG,CAAC,MAAM;EAClD,MAAM,aAAa,MAAM,OAAO,YAAY;GAAE;GAAS;GAAW;GAAO,CAAC;EAC1E,IAAI,CAAC,YAAY,MAAM,IAAI,MAAM,iCAAiC;EAElE,YAAY,WAAW;EAEvB,MAAM,MAAM,IAAI,kBAAkB,eAAe;EACjD,MAAM,MAAM,IAAI,qBAAqB,UAAU;;CAKjD,OAAO;EACL,YAAY,IAAIC,aAHH,uBAAuB,QAAQ,UAGX,EAAE,6BAA6B,UAAU,EAAE,SAAS;EACrF;EACD;;;;ACjQH,SAAgB,iBACd,WACyE;CACzE,QAAQ,YACN,OAAO,iBAAkD;EACvD,MAAM,UAAU,WAAW,aAAa;EACxC,MAAM,cAAc;EACpB,MAAM,QAAQ,OAAO,gBAAgB,IAAI,WAAW,YAAY,CAAC;EAEjE,MAAM,qBAAqB,EACzB,QAAQ;GACN,SAAS;GACT,OAAO,EAAE,OAAO;IAAE,MAAM;IAAM,KAAK;IAAa,EAAE;GAClD,WAAW;GACX,aAAa,EAAE,QAAQ,UAAU;GAClC,EACF;EAED,MAAM,MAAM;EAEZ,MAAM,EAAE,cAAc,QAAQ,KAC5B,WACE,YACE,eAAe,OAAO,IAAI,EAC1B,eAAe,oBAAoB;GAAE;GAAS;GAAO;GAAW,CAAC,CAClE,CACF,CACF;EAgBD,MAAM,yBAAyB,eAAe,EAb5C,QAAQ;GACN,KAAK;GACL,GAAG,mBAAmB;GACvB,EAUiE,EAAE;GANpE;GACA;GACA;GACA;GAGyF,CAAC;EAE5F,OAAO,YACL,oBAAoB,uBAAuB,OAAO,EAClD,wBACA,UACD;;;;;ACjDP,eAAsB,oBACpB,QACA,gBACA,OACA,YACA,iBACqB;CACrB,MAAM,gBAAgB,MAAM,MAAM,IAAY,iBAAiB;CAC/D,MAAM,iBAAiB,MAAM,MAAM,IAAY,oBAAoB;CAEnE,IAAI,kBAAkB,kBAAmB,kBAAkB,mBAAmB,iBAC5E,IAAI;EAGF,QAAQ,IAAI,aAAa,WAAW;UAC7B,OAAO;EACd,QAAQ,MAAM,yBAAyB,MAAM;;CAIjD,MAAM,MAAM,IAAI,kBAAkB,eAAe;CACjD,MAAM,MAAM,IAAI,qBAAqB,gBAAgB;CAErD,MAAM,SAAS,OAAO,YAAsD;EAC1E,MAAM,YAAY,MAAM,aAAa,SAAS,OAAO;EACrD,IAAI,CAAC,WACH,MAAM,IAAI,MAAM,sCAAsC;EAExD,OAAO,OAAO,KAAK,WAAW,MAAM;;CAGtC,OAAO,IAAIC,aAAW,QAAQ,iBAAiB,OAAO;;;;;;;ACNxD,SAAS,kBAAkB,QAA6C;CACtE,OACE,WAAW,QACX,OAAO,WAAW,YAClB,eAAe,UACf,OAAO,qBAAqB,cAC5B,OAAO,UAAU,WAAW,KAAK,KAAK,mBACtC,eAAe,UACf,OAAO,qBAAqB,cAC5B,OAAO,UAAU,WAAW,KAAK,KAAK;;;;;AAO1C,SAAS,cAAc,QAAwC;CAC7D,OACE,WAAW,QACX,OAAO,WAAW,YAClB,kBAAkB,UAClB,UAAU,UACV,OAAO,OAAO,iBAAiB,cAC/B,OAAO,OAAO,SAAS;;;;;AAO3B,SAAS,iBAAiB,QAA2C;CACnE,OACE,WAAW,QACX,OAAO,WAAW,YAClB,eAAe,UACf,UAAU,UACV,aAAa,UACb,OAAO,OAAO,cAAc,cAC5B,OAAO,OAAO,SAAS,cACvB,OAAO,OAAO,YAAY;;AAY9B,SAAS,mBAAmB,QAA6C;CACvE,OACE,WAAW,QACX,OAAO,WAAW,YAClB,mBAAmB,UACnB,mBAAmB,UACnB,eAAe,UACf,iBAAiB;;;;;AAOrB,SAAS,cAAc,QAAuC;CAC5D,OAAO,CAAC,CAAC,UAAU,OAAO,WAAW,YAAY,gBAAgB,UAAU,eAAe;;;;;;;;AAoB5F,eAAsB,uBACpB,QACsC;CACtC,IAAI,kBAAkB,OAAO,EAC3B,OAAO,CACL,IAAIC,aACF,OAAO,QAAoB,KAAK,KAAK,SAAS,KAAK,OAAO,UAAU,EACpE,OAAO,WACP,UACD,EACD,6BAA6B,WAAW,OAAO,UAAU,CAAC,CAC3D;CAGH,IAAI,cAAc,OAAO,EAAE;EACzB,MAAM,YAAY,6BAA6B,OAAO,cAAc,CAAC,UAAU,CAAC;EAChF,OAAO,CACL,IAAIA,aAAW,iBAAiB,cAAc,CAAC,OAAO,EAAE,WAAW,SAAS,EAC5E,UACD;;CAGH,IAAI,iBAAiB,OAAO,EAAE;EAC5B,MAAM,kBAAkB,OAAO,WAAW;EAE1C,OAAO,CACL,IAAIA,aACF,OAAO,QAAoB,OAAO,KAAK,OAAO,KAAK,IAAI,CAAC,EAHvC,OAAO,cAIZ,EACZ,UACD,EACD,gBACD;;CAGH,IAAI,cAAc,OAAO,EAAE;EACzB,IAAI;EAEJ,IAAI;GACF,aAAa,MAAM,OAAO;WACnB,GAAG;GACV,MAAM,IAAI,MAAM,8BAA8B,EAAE,OAAO,GAAG,CAAC;;EAG7D,OAAO,CACL,IAAIA,aACF,OAAO,QAAoB,UAAU,WAAW,KAAK,UAAU,IAAI,EAAE,OAAO,WAAW,CAAC,EACxF,OAAO,WACP,OACD,EACD,OAAO,UACR;;CAGH,IAAI,aAAa,QACf,OAAO,CAAC,IAAIA,aAAW,QAAQ,OAAO,QAAQ,EAAE,OAAO,QAAQ;CAKjE,SAAS,MAAa;EACpB,MAAM,IAAI,MAAM,wBAAwB;IACvC,OAAO;;AAGZ,eAAsB,uBACpB,OACA,YACA,QACmE;CACnE,IAAI,aAAa,UAAU,aAAa,QAAQ;EAE9C,SAAS;EACT,MAAM,iBAAiB,MAAM,OAAO,YAAY;EAIhD,IAAI,MAFwB,MAAM,IAAY,iBAAiB,KAEzC,gBAAgB;GAGpC,MAAM,IAAI,kBAAkB,eAAe;GAC3C,IAAI;IACF,MAAM,WAAW,OAAO,KAAK,WAAW;YACjC,OAAO;IACd,QAAQ,IAAI,mBAAmB,MAAM;;;EAIzC,OAAO;GAAC,IAAIA,aAAW,QAAQ,eAAe;GAAE;GAAgB,KAAA;GAAW;GAAM;;CAGnF,IAAI,oBAAoB,OAAO,EAAE;EAC/B,MAAM,WAAW,MAAM,OAAO,aAAa;EAC3C,MAAM,EAAE,YAAY,cAAc,MAAM,2BACtC,QACA,SAAS,GAAG,WACZ,OACA,WACD;EAED,OAAO;GAAC;GAAY,SAAS,GAAG;GAAW;GAAW;GAAO;;CAG/D,IAAI,mBAAmB,OAAO,EAAE;EAC9B,MAAM,EAAE,SAAS,gBAAgB,WAAW,oBAAqB,MAAM,gBACrE,OACD;EACD,IAAI,CAAC,gBACH,MAAM,IAAI,MAAM,4BAA4B;EAG9C,OAAO;GACL,MAAM,oBAAoB,QAAQ,gBAAgB,OAAO,YAAY,gBAAgB;GACrF;GACA;GACA;GACD;;CAGH,IAAI,mBAAmB,OAAO,IAAI,kBAAkB,wBAAwB;EAG1E,IAAI,MAFwB,MAAM,IAAY,iBAAiB,KAEzC,OAAO,eAAe;GAC1C,MAAM,IAAI,kBAAkB,OAAO,cAAc;GACjD,IAAI;IACF,MAAM,WAAW,OAAO,KAAK,WAAW;YACjC,OAAO;IACd,QAAQ,IAAI,mBAAmB,MAAM;;;EAIzC,OAAO;GACL,IAAIA,aACF,OAAO,QAAoB,OAAO,YAAY,IAAI,EAClD,OAAO,eACP,UACD;GACD,OAAO;GACP,OAAO;GACP,OAAO;GACR;;CAKH,SAAS,MAAa;EACpB,MAAM,IAAI,MAAM,wBAAwB;IACvC,OAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/near/signature-verification.ts","../../src/xrp/signature-verification.ts","../../src/signature-verification/evm.ts","../../src/signature-verification/facesign.ts","../../src/signature-verification/stellar.ts","../../src/signature-verification/index.ts"],"sourcesContent":["import {\n borshDeserialize,\n borshSerialize,\n bs58Decode,\n hexDecode,\n sha256Hash,\n} from \"@idos-network/utils/codecs\";\nimport nacl from \"tweetnacl\";\n\ninterface NEP413Payload {\n tag: number;\n message: string;\n nonce: number[];\n recipient: string;\n callbackUrl?: string;\n}\n\nexport const verifyNearSignature = async (\n message: string,\n signature: string,\n publicKey: string,\n): Promise<boolean> => {\n try {\n // Parse the NEAR public key format: \"ed25519:base58_encoded_key\"\n const pieces = publicKey.split(\":\");\n if (pieces.length !== 2 || pieces[0] !== \"ed25519\") {\n console.warn(\"Invalid NEAR public key format:\", publicKey);\n return false;\n }\n\n // Extract raw public key bytes (am trying to match the logic I did in Backend)\n const publicKeyBytes = bs58Decode(pieces[1]);\n if (publicKeyBytes.length !== 32) {\n console.warn(\"Invalid NEAR public key length:\", publicKeyBytes.length);\n return false;\n }\n\n // Decode the signature from hex\n const signatureBytes = hexDecode(signature);\n\n // Deserialize the signature (matching Go's deserializeSignature)\n const payloadLength = new DataView(signatureBytes.buffer).getUint16(0, false);\n const payloadBytes = signatureBytes.slice(2, 2 + payloadLength);\n const actualSignature = signatureBytes.slice(2 + payloadLength);\n\n if (actualSignature.length !== 64) {\n console.warn(\"Invalid signature length:\", actualSignature.length);\n return false;\n }\n\n // Deserialize the payload to extract nonce, recipient, callbackUrl\n const payloadSchema = {\n struct: {\n tag: \"u32\",\n message: \"string\",\n nonce: { array: { type: \"u8\", len: 32 } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n };\n\n const deserializedPayload = borshDeserialize(payloadSchema, payloadBytes) as NEP413Payload;\n\n // Reconstruct the payload with tag and message (matching Go implementation)\n const reconstructedPayload: NEP413Payload = {\n tag: 2147484061, // 2**31 + 413\n message: message, // Use the provided message\n nonce: deserializedPayload.nonce,\n recipient: deserializedPayload.recipient,\n callbackUrl: deserializedPayload.callbackUrl,\n };\n\n // Serialize the entire payload (matching Go's borsch.Serialize(*payload))\n const fullPayloadBytes = borshSerialize(payloadSchema, reconstructedPayload);\n // Hash the payload (matching Go's sha256.Sum256(payloadBytes))\n const hash = sha256Hash(fullPayloadBytes);\n // Raw ed25519 verification using nacl (matching Go's ed25519.Verify)\n const isValid = nacl.sign.detached.verify(hash, actualSignature, publicKeyBytes);\n\n return isValid;\n } catch (error) {\n console.warn(\"NEAR signature verification failed:\", error);\n return false;\n }\n};\n","import { hexEncode, utf8Encode } from \"@idos-network/utils/codecs\";\n\nexport const verifyRippleSignature = async (\n message: string,\n signature: string,\n publicKey: string,\n): Promise<boolean> => {\n let xrpKeypair: typeof import(\"ripple-keypairs\");\n\n try {\n xrpKeypair = await import(\"ripple-keypairs\");\n } catch (e) {\n throw new Error(\"Can't load `ripple-keypairs`\", { cause: e });\n }\n\n const messageHex = hexEncode(utf8Encode(message));\n return xrpKeypair.verify(messageHex, signature, publicKey);\n};\n","export const verifyEvmSignature = async (\n message: string,\n signature: `0x${string}`,\n address: `0x${string}`,\n): Promise<boolean> => {\n let wagmi: typeof import(\"@wagmi/core\");\n\n try {\n wagmi = await import(\"@wagmi/core\");\n } catch (_e) {\n throw new Error(\"Can't load @wagmi/core\");\n }\n\n let chains: typeof import(\"@wagmi/core/chains\");\n try {\n chains = await import(\"@wagmi/core/chains\");\n } catch (_e) {\n throw new Error(\"Can't load @wagmi/core/chains\");\n }\n\n const wagmiConfig = wagmi.createConfig({\n chains: [chains.mainnet],\n transports: {\n [chains.mainnet.id]: wagmi.http(),\n },\n });\n\n return wagmi.verifyMessage(wagmiConfig, {\n address,\n message,\n signature,\n });\n};\n","import { hexDecode, utf8Encode } from \"@idos-network/utils/codecs\";\nimport nacl from \"tweetnacl\";\n\nexport const verifyFaceSignSignature = (\n message: string,\n signature: string,\n publicKey: string,\n): boolean => {\n try {\n return nacl.sign.detached.verify(\n utf8Encode(message),\n hexDecode(signature),\n hexDecode(publicKey),\n );\n } catch (error) {\n console.warn(\"FaceSign signature verification failed:\", error);\n return false;\n }\n};\n","export const verifyStellarSignature = async (\n message: string,\n signature: string,\n publicKey: string,\n): Promise<boolean> => {\n let stellar: typeof import(\"@stellar/stellar-sdk\");\n\n try {\n stellar = await import(\"@stellar/stellar-sdk\");\n } catch (e) {\n throw new Error(\"Can't load `@stellar/stellar-sdk`\", { cause: e });\n }\n\n try {\n // Convert hex signature to buffer\n const signatureBuffer = Buffer.from(signature, \"hex\");\n\n // `Keypair.fromPublicKey()` expects StrKey format, but we're passing as hex (derivePublicKey result).\n const publicKeyBuffer = Buffer.from(publicKey, \"hex\");\n const strKeyAddress = stellar.StrKey.encodeEd25519PublicKey(publicKeyBuffer);\n\n const keypair = stellar.Keypair.fromPublicKey(strKeyAddress);\n\n const result = keypair.verify(Buffer.from(message), signatureBuffer);\n\n return result;\n } catch (error) {\n console.warn(\"Stellar signature verification failed:\", error);\n return false;\n }\n};\n","import invariant from \"tiny-invariant\";\n\nimport type { WalletType } from \"../actions\";\n\nimport { verifyNearSignature } from \"../near/signature-verification\";\nimport { verifyRippleSignature } from \"../xrp/signature-verification\";\nimport { verifyEvmSignature } from \"./evm\";\nimport { verifyFaceSignSignature } from \"./facesign\";\nimport { verifyStellarSignature } from \"./stellar\";\n\nexport interface WalletSignature {\n address: string;\n signature: string;\n message: string;\n wallet_type: WalletType;\n public_key?: string[];\n}\n\nexport const verifySignature = async (walletPayload: WalletSignature): Promise<boolean> => {\n invariant(walletPayload.address, \"Wallet address is required\");\n invariant(walletPayload.message, \"Wallet message is required\");\n invariant(walletPayload.signature, \"Wallet signature is required\");\n invariant(walletPayload.wallet_type, \"Wallet type is required\");\n\n if (walletPayload.wallet_type !== \"EVM\") {\n invariant(walletPayload.public_key?.[0], \"Wallet public_key is required for non-EVM wallets\");\n }\n\n try {\n switch (walletPayload.wallet_type) {\n case \"EVM\":\n return verifyEvmSignature(\n walletPayload.message,\n walletPayload.signature as `0x${string}`,\n walletPayload.address as `0x${string}`,\n );\n case \"NEAR\":\n return verifyNearSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n case \"XRPL\":\n return verifyRippleSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n case \"Stellar\":\n return await verifyStellarSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n case \"FaceSign\":\n return verifyFaceSignSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n default:\n throw new Error(`Unsupported wallet type: ${walletPayload.wallet_type}`);\n }\n } catch (error) {\n console.warn(\"Error verifying signature\", error);\n return false;\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../src/near/signature-verification.ts","../../src/xrp/signature-verification.ts","../../src/signature-verification/evm.ts","../../src/signature-verification/facesign.ts","../../src/signature-verification/stellar.ts","../../src/signature-verification/index.ts"],"sourcesContent":["import {\n borshDeserialize,\n borshSerialize,\n bs58Decode,\n hexDecode,\n sha256Hash,\n} from \"@idos-network/utils/codecs\";\nimport nacl from \"tweetnacl\";\n\ninterface NEP413Payload {\n tag: number;\n message: string;\n nonce: number[];\n recipient: string;\n callbackUrl?: string;\n}\n\nexport const verifyNearSignature = async (\n message: string,\n signature: string,\n publicKey: string,\n): Promise<boolean> => {\n try {\n // Parse the NEAR public key format: \"ed25519:base58_encoded_key\"\n const pieces = publicKey.split(\":\");\n if (pieces.length !== 2 || pieces[0] !== \"ed25519\") {\n console.warn(\"Invalid NEAR public key format:\", publicKey);\n return false;\n }\n\n // Extract raw public key bytes (am trying to match the logic I did in Backend)\n const publicKeyBytes = bs58Decode(pieces[1]);\n if (publicKeyBytes.length !== 32) {\n console.warn(\"Invalid NEAR public key length:\", publicKeyBytes.length);\n return false;\n }\n\n // Decode the signature from hex\n const signatureBytes = hexDecode(signature);\n\n // Deserialize the signature (matching Go's deserializeSignature)\n const payloadLength = new DataView(signatureBytes.buffer).getUint16(0, false);\n const payloadBytes = signatureBytes.slice(2, 2 + payloadLength);\n const actualSignature = signatureBytes.slice(2 + payloadLength);\n\n if (actualSignature.length !== 64) {\n console.warn(\"Invalid signature length:\", actualSignature.length);\n return false;\n }\n\n // Deserialize the payload to extract nonce, recipient, callbackUrl\n const payloadSchema = {\n struct: {\n tag: \"u32\",\n message: \"string\",\n nonce: { array: { type: \"u8\", len: 32 } },\n recipient: \"string\",\n callbackUrl: { option: \"string\" },\n },\n };\n\n const deserializedPayload = borshDeserialize(payloadSchema, payloadBytes) as NEP413Payload;\n\n // Reconstruct the payload with tag and message (matching Go implementation)\n const reconstructedPayload: NEP413Payload = {\n tag: 2147484061, // 2**31 + 413\n message: message, // Use the provided message\n nonce: deserializedPayload.nonce,\n recipient: deserializedPayload.recipient,\n callbackUrl: deserializedPayload.callbackUrl,\n };\n\n // Serialize the entire payload (matching Go's borsch.Serialize(*payload))\n const fullPayloadBytes = borshSerialize(payloadSchema, reconstructedPayload);\n // Hash the payload (matching Go's sha256.Sum256(payloadBytes))\n const hash = sha256Hash(fullPayloadBytes);\n // Raw ed25519 verification using nacl (matching Go's ed25519.Verify)\n const isValid = nacl.sign.detached.verify(hash, actualSignature, publicKeyBytes);\n\n return isValid;\n } catch (error) {\n console.warn(\"NEAR signature verification failed:\", error);\n return false;\n }\n};\n","import { hexEncode, utf8Encode } from \"@idos-network/utils/codecs\";\n\nexport const verifyRippleSignature = async (\n message: string,\n signature: string,\n publicKey: string,\n): Promise<boolean> => {\n let xrpKeypair: typeof import(\"ripple-keypairs\");\n\n try {\n xrpKeypair = await import(\"ripple-keypairs\");\n } catch (e) {\n throw new Error(\"Can't load `ripple-keypairs`\", { cause: e });\n }\n\n const messageHex = hexEncode(utf8Encode(message));\n return xrpKeypair.verify(messageHex, signature, publicKey);\n};\n","export const verifyEvmSignature = async (\n message: string,\n signature: `0x${string}`,\n address: `0x${string}`,\n): Promise<boolean> => {\n let wagmi: typeof import(\"@wagmi/core\");\n\n try {\n wagmi = await import(\"@wagmi/core\");\n } catch (_e) {\n throw new Error(\"Can't load @wagmi/core\");\n }\n\n let chains: typeof import(\"@wagmi/core/chains\");\n try {\n chains = await import(\"@wagmi/core/chains\");\n } catch (_e) {\n throw new Error(\"Can't load @wagmi/core/chains\");\n }\n\n const wagmiConfig = wagmi.createConfig({\n chains: [chains.mainnet],\n transports: {\n [chains.mainnet.id]: wagmi.http(),\n },\n });\n\n return wagmi.verifyMessage(wagmiConfig, {\n address,\n message,\n signature,\n });\n};\n","import { hexDecode, utf8Encode } from \"@idos-network/utils/codecs\";\nimport nacl from \"tweetnacl\";\n\nexport const verifyFaceSignSignature = (\n message: string,\n signature: string,\n publicKey: string,\n): boolean => {\n try {\n return nacl.sign.detached.verify(\n utf8Encode(message),\n hexDecode(signature),\n hexDecode(publicKey),\n );\n } catch (error) {\n console.warn(\"FaceSign signature verification failed:\", error);\n return false;\n }\n};\n","export const verifyStellarSignature = async (\n message: string,\n signature: string,\n publicKey: string,\n): Promise<boolean> => {\n let stellar: typeof import(\"@stellar/stellar-sdk\");\n\n try {\n stellar = await import(\"@stellar/stellar-sdk\");\n } catch (e) {\n throw new Error(\"Can't load `@stellar/stellar-sdk`\", { cause: e });\n }\n\n try {\n // Convert hex signature to buffer\n const signatureBuffer = Buffer.from(signature, \"hex\");\n\n // `Keypair.fromPublicKey()` expects StrKey format, but we're passing as hex (derivePublicKey result).\n const publicKeyBuffer = Buffer.from(publicKey, \"hex\");\n const strKeyAddress = stellar.StrKey.encodeEd25519PublicKey(publicKeyBuffer);\n\n const keypair = stellar.Keypair.fromPublicKey(strKeyAddress);\n\n const result = keypair.verify(Buffer.from(message), signatureBuffer);\n\n return result;\n } catch (error) {\n console.warn(\"Stellar signature verification failed:\", error);\n return false;\n }\n};\n","import invariant from \"tiny-invariant\";\n\nimport type { WalletType } from \"../actions\";\n\nimport { verifyNearSignature } from \"../near/signature-verification\";\nimport { verifyRippleSignature } from \"../xrp/signature-verification\";\nimport { verifyEvmSignature } from \"./evm\";\nimport { verifyFaceSignSignature } from \"./facesign\";\nimport { verifyStellarSignature } from \"./stellar\";\n\nexport interface WalletSignature {\n address: string;\n signature: string;\n message: string;\n wallet_type: WalletType;\n public_key?: string[];\n}\n\nexport const verifySignature = async (walletPayload: WalletSignature): Promise<boolean> => {\n invariant(walletPayload.address, \"Wallet address is required\");\n invariant(walletPayload.message, \"Wallet message is required\");\n invariant(walletPayload.signature, \"Wallet signature is required\");\n invariant(walletPayload.wallet_type, \"Wallet type is required\");\n\n if (walletPayload.wallet_type !== \"EVM\") {\n invariant(walletPayload.public_key?.[0], \"Wallet public_key is required for non-EVM wallets\");\n }\n\n try {\n switch (walletPayload.wallet_type) {\n case \"EVM\":\n return verifyEvmSignature(\n walletPayload.message,\n walletPayload.signature as `0x${string}`,\n walletPayload.address as `0x${string}`,\n );\n case \"NEAR\":\n return verifyNearSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n case \"XRPL\":\n return verifyRippleSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n case \"Stellar\":\n return await verifyStellarSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n case \"FaceSign\":\n return verifyFaceSignSignature(\n walletPayload.message,\n walletPayload.signature,\n // @ts-expect-error - this has been checked above\n walletPayload.public_key[0],\n );\n default:\n throw new Error(`Unsupported wallet type: ${walletPayload.wallet_type}`);\n }\n } catch (error) {\n console.warn(\"Error verifying signature\", error);\n return false;\n }\n};\n"],"mappings":"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"}
|
package/dist/xrp/utils.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/xrp/utils.ts"],"sourcesContent":["import type * as GemWallet from \"@gemwallet/api\";\nimport type { Xumm } from \"xumm\";\nexport type WalletName = \"XAMAN\" | \"GEM\";\n\nexport interface WalletConfig {\n name: WalletName;\n instance: Xumm | typeof GemWallet;\n}\n\nexport type XamanConfig = {\n name: \"XAMAN\";\n instance: Xumm;\n};\n\nexport type GemConfig = {\n name: \"GEM\";\n instance: typeof GemWallet;\n};\n\nexport type WalletInitConfig = XamanConfig | GemConfig;\n\ntype XrpWallet = \"Xumm\" | \"GemWallet\";\n\nexport function createXummPayload(message: string): Record<string, unknown> {\n const memoData = Buffer.from(message).toString(\"hex\"); // Encode message as hex for Memos\n return {\n custom_meta: {\n instruction: message,\n },\n txjson: {\n TransactionType: \"SignIn\",\n Memos: [\n {\n Memo: {\n MemoData: memoData,\n MemoType: Buffer.from(\"idOS\").toString(\"hex\"), // Optional type identifier\n },\n },\n ],\n },\n };\n}\n\nexport function signXummTx(xummInstance: Xumm, payload: Record<string, unknown>): Promise<string> {\n return new Promise((resolve) => {\n // oxlint-disable-next-line typescript/no-explicit-any -- xumm payload type is not easy to import\n xummInstance.payload?.createAndSubscribe(payload as unknown as any, async (event) => {\n if (!event.payload.response.hex) return;\n const hex = event.payload.response.hex;\n resolve(hex);\n });\n });\n}\n\nexport async function getXummPublicKey(wallet: Xumm): Promise<string | undefined> {\n const payload = createXummPayload(\"Sign request from idOS\");\n const txHash = await signXummTx(wallet, payload);\n\n let decode: typeof import(\"xrpl\").decode;\n try {\n ({ decode } = await import(\"xrpl\"));\n } catch {\n throw new Error(\n 'Missing optional peer dependency \"xrpl\". Install it to use Xumm public-key extraction.',\n );\n }\n\n let decodedTx: { SigningPubKey?: string };\n try {\n decodedTx = decode(txHash);\n } catch {\n throw new Error(\"Failed to decode Xumm transaction payload.\");\n }\n\n if (!decodedTx.SigningPubKey) {\n throw new Error(\"SigningPubKey not found in decoded Xumm transaction.\");\n }\n\n return decodedTx.SigningPubKey;\n}\n\nexport function signGemWalletTx(\n gemWalletInstance: typeof GemWallet,\n message: string,\n): Promise<string | undefined> {\n return gemWalletInstance.signMessage(message).then((response) => response.result?.signedMessage);\n}\n\nexport async function getGemWalletPublicKey(\n wallet: typeof GemWallet,\n): Promise<{ address: string; publicKey: string } | undefined> {\n if (\"isInstalled\" in wallet) {\n await wallet.isInstalled();\n const { publicKey, address } = await wallet\n .getPublicKey()\n .then((res) => res.result as { publicKey: string; address: string });\n return { address, publicKey };\n }\n}\n\nexport async function getXrpAddress(wallet: Xumm | typeof GemWallet): Promise<string | undefined> {\n if (\"isInstalled\" in wallet) {\n await wallet.isInstalled();\n return wallet.getAddress().then((response) => response.result?.address);\n }\n return wallet.user.account;\n}\n\n// Type guard to check if the wallet is an Xumm wallet\nexport function looksLikeXrpWallet(wallet: unknown): wallet is Xumm | typeof GemWallet {\n return (\n wallet !== null &&\n typeof wallet === \"object\" &&\n (\"authorize\" in wallet || \"isInstalled\" in wallet)\n );\n}\n\nexport async function getXrpWalletType(object: Record<string, unknown>): Promise<XrpWallet> {\n if (\"authorize\" in object) {\n return \"Xumm\";\n }\n if (\"isInstalled\" in object) {\n return \"GemWallet\";\n }\n throw new Error(\"Unknown wallet type\");\n}\n\nexport async function getXrpTxHash(\n message: string | Uint8Array,\n wallet: Xumm | typeof GemWallet,\n): Promise<string | undefined> {\n let messageString: string;\n\n const xrpWalletType = await getXrpWalletType(wallet as Record<string, unknown>);\n\n messageString = typeof message === \"string\" ? message : Buffer.from(message).toString(\"utf8\"); // Decode Uint8Array to string\n if (xrpWalletType === \"Xumm\") {\n const memoData = Buffer.from(messageString).toString(\"hex\"); // Encode message as hex for Memos\n\n const payload = {\n custom_meta: {\n instruction: messageString,\n },\n txjson: {\n TransactionType: \"SignIn\",\n Memos: [\n {\n Memo: {\n MemoData: memoData,\n MemoType: Buffer.from(\"idOS\").toString(\"hex\"), // Optional type identifier\n },\n },\n ],\n },\n };\n const xummTx = await signXummTx(wallet as Xumm, payload);\n console.log(\"xummTx\", xummTx);\n } else if (xrpWalletType === \"GemWallet\") {\n const signature = await signGemWalletTx(wallet as typeof GemWallet, messageString);\n if (!signature) {\n throw new Error(\"Failed to sign transaction with GemWallet\");\n }\n return signature;\n }\n}\n\nexport async function getXrpPublicKey(\n wallet: Xumm | typeof GemWallet,\n): Promise<{ address: string; publicKey: string } | undefined> {\n const xrpWalletType = await getXrpWalletType(wallet as Record<string, unknown>);\n if (xrpWalletType === \"Xumm\") {\n // @todo: should we remove xaman wallet support?\n const publicKey = await getXummPublicKey(wallet as Xumm);\n const address = await getXrpAddress(wallet);\n return { address: address as string, publicKey: publicKey as string };\n }\n return getGemWalletPublicKey(wallet as typeof GemWallet);\n}\n"],"mappings":";AAuBA,SAAgB,kBAAkB,SAA0C;CAC1E,MAAM,WAAW,OAAO,KAAK,QAAQ,CAAC,SAAS,MAAM;
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../src/xrp/utils.ts"],"sourcesContent":["import type * as GemWallet from \"@gemwallet/api\";\nimport type { Xumm } from \"xumm\";\nexport type WalletName = \"XAMAN\" | \"GEM\";\n\nexport interface WalletConfig {\n name: WalletName;\n instance: Xumm | typeof GemWallet;\n}\n\nexport type XamanConfig = {\n name: \"XAMAN\";\n instance: Xumm;\n};\n\nexport type GemConfig = {\n name: \"GEM\";\n instance: typeof GemWallet;\n};\n\nexport type WalletInitConfig = XamanConfig | GemConfig;\n\ntype XrpWallet = \"Xumm\" | \"GemWallet\";\n\nexport function createXummPayload(message: string): Record<string, unknown> {\n const memoData = Buffer.from(message).toString(\"hex\"); // Encode message as hex for Memos\n return {\n custom_meta: {\n instruction: message,\n },\n txjson: {\n TransactionType: \"SignIn\",\n Memos: [\n {\n Memo: {\n MemoData: memoData,\n MemoType: Buffer.from(\"idOS\").toString(\"hex\"), // Optional type identifier\n },\n },\n ],\n },\n };\n}\n\nexport function signXummTx(xummInstance: Xumm, payload: Record<string, unknown>): Promise<string> {\n return new Promise((resolve) => {\n // oxlint-disable-next-line typescript/no-explicit-any -- xumm payload type is not easy to import\n xummInstance.payload?.createAndSubscribe(payload as unknown as any, async (event) => {\n if (!event.payload.response.hex) return;\n const hex = event.payload.response.hex;\n resolve(hex);\n });\n });\n}\n\nexport async function getXummPublicKey(wallet: Xumm): Promise<string | undefined> {\n const payload = createXummPayload(\"Sign request from idOS\");\n const txHash = await signXummTx(wallet, payload);\n\n let decode: typeof import(\"xrpl\").decode;\n try {\n ({ decode } = await import(\"xrpl\"));\n } catch {\n throw new Error(\n 'Missing optional peer dependency \"xrpl\". Install it to use Xumm public-key extraction.',\n );\n }\n\n let decodedTx: { SigningPubKey?: string };\n try {\n decodedTx = decode(txHash);\n } catch {\n throw new Error(\"Failed to decode Xumm transaction payload.\");\n }\n\n if (!decodedTx.SigningPubKey) {\n throw new Error(\"SigningPubKey not found in decoded Xumm transaction.\");\n }\n\n return decodedTx.SigningPubKey;\n}\n\nexport function signGemWalletTx(\n gemWalletInstance: typeof GemWallet,\n message: string,\n): Promise<string | undefined> {\n return gemWalletInstance.signMessage(message).then((response) => response.result?.signedMessage);\n}\n\nexport async function getGemWalletPublicKey(\n wallet: typeof GemWallet,\n): Promise<{ address: string; publicKey: string } | undefined> {\n if (\"isInstalled\" in wallet) {\n await wallet.isInstalled();\n const { publicKey, address } = await wallet\n .getPublicKey()\n .then((res) => res.result as { publicKey: string; address: string });\n return { address, publicKey };\n }\n}\n\nexport async function getXrpAddress(wallet: Xumm | typeof GemWallet): Promise<string | undefined> {\n if (\"isInstalled\" in wallet) {\n await wallet.isInstalled();\n return wallet.getAddress().then((response) => response.result?.address);\n }\n return wallet.user.account;\n}\n\n// Type guard to check if the wallet is an Xumm wallet\nexport function looksLikeXrpWallet(wallet: unknown): wallet is Xumm | typeof GemWallet {\n return (\n wallet !== null &&\n typeof wallet === \"object\" &&\n (\"authorize\" in wallet || \"isInstalled\" in wallet)\n );\n}\n\nexport async function getXrpWalletType(object: Record<string, unknown>): Promise<XrpWallet> {\n if (\"authorize\" in object) {\n return \"Xumm\";\n }\n if (\"isInstalled\" in object) {\n return \"GemWallet\";\n }\n throw new Error(\"Unknown wallet type\");\n}\n\nexport async function getXrpTxHash(\n message: string | Uint8Array,\n wallet: Xumm | typeof GemWallet,\n): Promise<string | undefined> {\n let messageString: string;\n\n const xrpWalletType = await getXrpWalletType(wallet as Record<string, unknown>);\n\n messageString = typeof message === \"string\" ? message : Buffer.from(message).toString(\"utf8\"); // Decode Uint8Array to string\n if (xrpWalletType === \"Xumm\") {\n const memoData = Buffer.from(messageString).toString(\"hex\"); // Encode message as hex for Memos\n\n const payload = {\n custom_meta: {\n instruction: messageString,\n },\n txjson: {\n TransactionType: \"SignIn\",\n Memos: [\n {\n Memo: {\n MemoData: memoData,\n MemoType: Buffer.from(\"idOS\").toString(\"hex\"), // Optional type identifier\n },\n },\n ],\n },\n };\n const xummTx = await signXummTx(wallet as Xumm, payload);\n console.log(\"xummTx\", xummTx);\n } else if (xrpWalletType === \"GemWallet\") {\n const signature = await signGemWalletTx(wallet as typeof GemWallet, messageString);\n if (!signature) {\n throw new Error(\"Failed to sign transaction with GemWallet\");\n }\n return signature;\n }\n}\n\nexport async function getXrpPublicKey(\n wallet: Xumm | typeof GemWallet,\n): Promise<{ address: string; publicKey: string } | undefined> {\n const xrpWalletType = await getXrpWalletType(wallet as Record<string, unknown>);\n if (xrpWalletType === \"Xumm\") {\n // @todo: should we remove xaman wallet support?\n const publicKey = await getXummPublicKey(wallet as Xumm);\n const address = await getXrpAddress(wallet);\n return { address: address as string, publicKey: publicKey as string };\n }\n return getGemWalletPublicKey(wallet as typeof GemWallet);\n}\n"],"mappings":"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"}
|