@solana-mobile/mobile-wallet-adapter-protocol-kit 0.2.3 → 0.3.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.native.js","names":["toUint8Array","fromUint8Array"],"sources":["../../src/transact.ts"],"sourcesContent":["import type { SignatureBytes } from '@solana/keys';\nimport {\n type TransactionMessage,\n type TransactionMessageWithFeePayer,\n type TransactionMessageWithLifetime,\n} from '@solana/transaction-messages';\nimport {\n compileTransaction,\n getBase64EncodedWireTransaction,\n getTransactionDecoder,\n type Transaction,\n} from '@solana/transactions';\nimport {\n AuthorizeAPI,\n Base64EncodedAddress,\n Base64EncodedTransaction,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n MobileWallet,\n ReauthorizeAPI,\n RemoteWalletAssociationConfig,\n startRemoteScenario as baseStartRemoteScenario,\n TerminateSessionAPI,\n transact as baseTransact,\n WalletAssociationConfig,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { fromUint8Array, toUint8Array } from './base64Utils.js';\n\nexport type TransactionMessageWithFeePayerAndLifetime<TAddress extends string = string> = TransactionMessage &\n TransactionMessageWithFeePayer<TAddress> &\n TransactionMessageWithLifetime;\n\nexport type SignAndSendTransactionMessage = TransactionMessageWithFeePayerAndLifetime;\n\ninterface KitSignAndSendTransactionsAPI {\n signAndSendTransactions<T extends Transaction | SignAndSendTransactionMessage>(params: {\n minContextSlot?: number;\n commitment?: string;\n skipPreflight?: boolean;\n maxRetries?: number;\n waitForCommitmentToSendNextTransaction?: boolean;\n transactions: T[];\n }): Promise<SignatureBytes[]>;\n}\n\ninterface KitSignTransactionsAPI {\n signTransactions<T extends Transaction>(params: { transactions: T[] }): Promise<T[]>;\n}\n\ninterface KitSignMessagesAPI {\n signMessages(params: { addresses: Base64EncodedAddress[]; payloads: Uint8Array[] }): Promise<Uint8Array[]>;\n}\n\nexport interface KitMobileWallet\n extends\n AuthorizeAPI,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n ReauthorizeAPI,\n KitSignAndSendTransactionsAPI,\n KitSignTransactionsAPI,\n KitSignMessagesAPI {}\n\nexport interface KitRemoteMobileWallet extends KitMobileWallet, TerminateSessionAPI {}\n\nexport type KitScenario = Readonly<{\n wallet: Promise<KitMobileWallet>;\n close: () => void;\n}>;\n\nexport type KitRemoteScenario = KitScenario &\n Readonly<{\n associationUrl: URL;\n }>;\n\nfunction getPayloadFromTransaction(transaction: Transaction | SignAndSendTransactionMessage): Base64EncodedTransaction {\n if ('messageBytes' in transaction) {\n return getBase64EncodedWireTransaction(transaction);\n } else if ('instructions' in transaction) {\n const compiledTransaction = compileTransaction(transaction);\n return getBase64EncodedWireTransaction(compiledTransaction);\n } else {\n throw new Error('Invalid transaction type');\n }\n}\n\nfunction getTransactionFromWireMessage(byteArray: Uint8Array): Transaction {\n const transactionDecoder = getTransactionDecoder();\n return transactionDecoder.decode(byteArray);\n}\n\nexport async function transact<TReturn>(\n callback: (wallet: KitMobileWallet) => TReturn,\n config?: WalletAssociationConfig,\n): Promise<TReturn> {\n const augmentedCallback: (wallet: MobileWallet) => TReturn = (wallet) => {\n return callback(augmentWalletAPI(wallet));\n };\n return await baseTransact(augmentedCallback, config);\n}\n\nexport async function startRemoteScenario(config: RemoteWalletAssociationConfig): Promise<KitRemoteScenario> {\n const { wallet, close, associationUrl } = await baseStartRemoteScenario(config);\n const augmentedPromise = wallet.then((wallet) => {\n return augmentWalletAPI(wallet);\n });\n return { wallet: augmentedPromise, close, associationUrl };\n}\n\nfunction augmentWalletAPI(wallet: MobileWallet): KitMobileWallet {\n return new Proxy<KitMobileWallet>({} as KitMobileWallet, {\n get<TMethodName extends keyof KitMobileWallet>(target: KitMobileWallet, p: TMethodName) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = async function ({\n minContextSlot,\n commitment,\n skipPreflight,\n maxRetries,\n waitForCommitmentToSendNextTransaction,\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signAndSendTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction,\n };\n const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({\n ...rest,\n ...(Object.values(options).some((element) => element != null)\n ? { options: options }\n : null),\n payloads,\n });\n const signatures = base64EncodedSignatures.map(toUint8Array);\n return signatures as SignatureBytes[];\n } as KitMobileWallet[TMethodName];\n break;\n case 'signMessages':\n target[p] = async function ({\n payloads,\n ...rest\n }: Parameters<KitMobileWallet['signMessages']>[0]) {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({\n ...rest,\n payloads: base64EncodedPayloads,\n });\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n } as KitMobileWallet[TMethodName];\n break;\n case 'signTransactions':\n target[p] = async function ({\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } =\n await wallet.signTransactions({\n ...rest,\n payloads,\n });\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n } as KitMobileWallet[TMethodName];\n break;\n default: {\n target[p] = wallet[p] as unknown as KitMobileWallet[TMethodName];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n"],"mappings":";;;;;AA8EA,SAAS,0BAA0B,aAAoF;AACnH,KAAI,kBAAkB,YAClB,SAAA,GAAA,qBAAA,iCAAuC,YAAY;UAC5C,kBAAkB,YAEzB,SAAA,GAAA,qBAAA,kCAAA,GAAA,qBAAA,oBAD+C,YAAY,CACA;KAE3D,OAAM,IAAI,MAAM,2BAA2B;;AAInD,SAAS,8BAA8B,WAAoC;AAEvE,SAAA,GAAA,qBAAA,wBADkD,CACxB,OAAO,UAAU;;AAG/C,eAAsB,SAClB,UACA,QACgB;CAChB,MAAM,qBAAwD,WAAW;AACrE,SAAO,SAAS,iBAAiB,OAAO,CAAC;;AAE7C,QAAO,OAAA,GAAA,8CAAA,UAAmB,mBAAmB,OAAO;;AAGxD,eAAsB,oBAAoB,QAAmE;CACzG,MAAM,EAAE,QAAQ,OAAO,mBAAmB,OAAA,GAAA,8CAAA,qBAA8B,OAAO;AAI/E,QAAO;EAAE,QAHgB,OAAO,MAAM,WAAW;AAC7C,UAAO,iBAAiB,OAAO;IACjC;EACiC;EAAO;EAAgB;;AAG9D,SAAS,iBAAiB,QAAuC;AAC7D,QAAO,IAAI,MAAuB,EAAE,EAAqB;EACrD,IAA+C,QAAyB,GAAgB;AACpF,OAAI,OAAO,MAAM,KACb,SAAQ,GAAR;IACI,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,gBACA,YACA,eACA,YACA,wCACA,cACA,GAAG,QACuD;MAC1D,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,UAAU;OACZ,kBAAkB;OACN;OACZ,gBAAgB;OAChB,aAAa;OACb,8CAA8C;OACjD;MACD,MAAM,EAAE,YAAY,4BAA4B,MAAM,OAAO,wBAAwB;OACjF,GAAG;OACH,GAAI,OAAO,OAAO,QAAQ,CAAC,MAAM,YAAY,WAAW,KAAK,GACvD,EAAW,SAAS,GACpB;OACN;OACH,CAAC;AAEF,aADmB,wBAAwB,IAAIA,UAAAA,aAAa;;AAGhE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,UACA,GAAG,QAC4C;MAC/C,MAAM,wBAAwB,SAAS,IAAIC,UAAAA,eAAe;MAC1D,MAAM,EAAE,iBAAiB,gCAAgC,MAAM,OAAO,aAAa;OAC/E,GAAG;OACH,UAAU;OACb,CAAC;AAEF,aADuB,4BAA4B,IAAID,UAAAA,aAAa;;AAGxE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,cACA,GAAG,QACgD;MACnD,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,EAAE,iBAAiB,sCACrB,MAAM,OAAO,iBAAiB;OAC1B,GAAG;OACH;OACH,CAAC;AAGN,aAF6B,kCAAkC,IAAIA,UAAAA,aAAa,CAChC,IAAI,8BAA8B;;AAGtF;IACJ;AACI,YAAO,KAAK,OAAO;AACnB;;AAIZ,UAAO,OAAO;;EAElB,iBAAiB;AACb,UAAO;;EAEX,iBAAiB;AACb,UAAO;;EAEd,CAAC"}
@@ -1,3 +1 @@
1
- {
2
- "type": "commonjs"
3
- }
1
+ {"type":"commonjs"}
@@ -1,109 +1,95 @@
1
- import { getBase64EncodedWireTransaction, compileTransaction, getTransactionDecoder } from '@solana/transactions';
2
- import { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from '@solana-mobile/mobile-wallet-adapter-protocol';
3
-
1
+ import { compileTransaction, getBase64EncodedWireTransaction, getTransactionDecoder } from "@solana/transactions";
2
+ import { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from "@solana-mobile/mobile-wallet-adapter-protocol";
3
+ //#region src/base64Utils.ts
4
4
  function fromUint8Array(byteArray) {
5
- return window.btoa(String.fromCharCode.call(null, ...byteArray));
5
+ return window.btoa(String.fromCharCode.call(null, ...byteArray));
6
6
  }
7
7
  function toUint8Array(base64EncodedByteArray) {
8
- return new Uint8Array(window
9
- .atob(base64EncodedByteArray)
10
- .split('')
11
- .map((c) => c.charCodeAt(0)));
8
+ return new Uint8Array(window.atob(base64EncodedByteArray).split("").map((c) => c.charCodeAt(0)));
12
9
  }
13
-
10
+ //#endregion
11
+ //#region src/transact.ts
14
12
  function getPayloadFromTransaction(transaction) {
15
- if ('messageBytes' in transaction) {
16
- return getBase64EncodedWireTransaction(transaction);
17
- }
18
- else if ('instructions' in transaction) {
19
- const compiledTransaction = compileTransaction(transaction);
20
- return getBase64EncodedWireTransaction(compiledTransaction);
21
- }
22
- else {
23
- throw new Error('Invalid transaction type');
24
- }
13
+ if ("messageBytes" in transaction) return getBase64EncodedWireTransaction(transaction);
14
+ else if ("instructions" in transaction) return getBase64EncodedWireTransaction(compileTransaction(transaction));
15
+ else throw new Error("Invalid transaction type");
25
16
  }
26
17
  function getTransactionFromWireMessage(byteArray) {
27
- const transactionDecoder = getTransactionDecoder();
28
- return transactionDecoder.decode(byteArray);
18
+ return getTransactionDecoder().decode(byteArray);
29
19
  }
30
20
  async function transact(callback, config) {
31
- const augmentedCallback = (wallet) => {
32
- return callback(augmentWalletAPI(wallet));
33
- };
34
- return await transact$1(augmentedCallback, config);
21
+ const augmentedCallback = (wallet) => {
22
+ return callback(augmentWalletAPI(wallet));
23
+ };
24
+ return await transact$1(augmentedCallback, config);
35
25
  }
36
26
  async function startRemoteScenario(config) {
37
- const { wallet, close, associationUrl } = await startRemoteScenario$1(config);
38
- const augmentedPromise = wallet.then((wallet) => {
39
- return augmentWalletAPI(wallet);
40
- });
41
- return { wallet: augmentedPromise, close, associationUrl };
27
+ const { wallet, close, associationUrl } = await startRemoteScenario$1(config);
28
+ return {
29
+ wallet: wallet.then((wallet) => {
30
+ return augmentWalletAPI(wallet);
31
+ }),
32
+ close,
33
+ associationUrl
34
+ };
42
35
  }
43
36
  function augmentWalletAPI(wallet) {
44
- return new Proxy({}, {
45
- get(target, p) {
46
- if (target[p] == null) {
47
- switch (p) {
48
- case 'signAndSendTransactions':
49
- target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
50
- const payloads = transactions.map(getPayloadFromTransaction);
51
- const options = {
52
- min_context_slot: minContextSlot,
53
- commitment: commitment,
54
- skip_preflight: skipPreflight,
55
- max_retries: maxRetries,
56
- wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
57
- };
58
- const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
59
- ...rest,
60
- ...(Object.values(options).some(element => element != null)
61
- ? { options: options }
62
- : null),
63
- payloads,
64
- });
65
- const signatures = base64EncodedSignatures.map(toUint8Array);
66
- return signatures;
67
- };
68
- break;
69
- case 'signMessages':
70
- target[p] = async function ({ payloads, ...rest }) {
71
- const base64EncodedPayloads = payloads.map(fromUint8Array);
72
- const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
73
- ...rest,
74
- payloads: base64EncodedPayloads,
75
- });
76
- const signedMessages = base64EncodedSignedMessages.map(toUint8Array);
77
- return signedMessages;
78
- };
79
- break;
80
- case 'signTransactions':
81
- target[p] = async function ({ transactions, ...rest }) {
82
- const payloads = transactions.map(getPayloadFromTransaction);
83
- const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
84
- ...rest,
85
- payloads,
86
- });
87
- const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);
88
- const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
89
- return signedTransactions;
90
- };
91
- break;
92
- default: {
93
- target[p] = wallet[p];
94
- break;
95
- }
96
- }
97
- }
98
- return target[p];
99
- },
100
- defineProperty() {
101
- return false;
102
- },
103
- deleteProperty() {
104
- return false;
105
- },
106
- });
37
+ return new Proxy({}, {
38
+ get(target, p) {
39
+ if (target[p] == null) switch (p) {
40
+ case "signAndSendTransactions":
41
+ target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
42
+ const payloads = transactions.map(getPayloadFromTransaction);
43
+ const options = {
44
+ min_context_slot: minContextSlot,
45
+ commitment,
46
+ skip_preflight: skipPreflight,
47
+ max_retries: maxRetries,
48
+ wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
49
+ };
50
+ const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
51
+ ...rest,
52
+ ...Object.values(options).some((element) => element != null) ? { options } : null,
53
+ payloads
54
+ });
55
+ return base64EncodedSignatures.map(toUint8Array);
56
+ };
57
+ break;
58
+ case "signMessages":
59
+ target[p] = async function({ payloads, ...rest }) {
60
+ const base64EncodedPayloads = payloads.map(fromUint8Array);
61
+ const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
62
+ ...rest,
63
+ payloads: base64EncodedPayloads
64
+ });
65
+ return base64EncodedSignedMessages.map(toUint8Array);
66
+ };
67
+ break;
68
+ case "signTransactions":
69
+ target[p] = async function({ transactions, ...rest }) {
70
+ const payloads = transactions.map(getPayloadFromTransaction);
71
+ const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
72
+ ...rest,
73
+ payloads
74
+ });
75
+ return base64EncodedCompiledTransactions.map(toUint8Array).map(getTransactionFromWireMessage);
76
+ };
77
+ break;
78
+ default:
79
+ target[p] = wallet[p];
80
+ break;
81
+ }
82
+ return target[p];
83
+ },
84
+ defineProperty() {
85
+ return false;
86
+ },
87
+ deleteProperty() {
88
+ return false;
89
+ }
90
+ });
107
91
  }
108
-
92
+ //#endregion
109
93
  export { startRemoteScenario, transact };
94
+
95
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.browser.js","names":["baseTransact","baseStartRemoteScenario"],"sources":["../../src/base64Utils.ts","../../src/transact.ts"],"sourcesContent":["export function fromUint8Array(byteArray: Uint8Array): string {\n return window.btoa(String.fromCharCode.call(null, ...byteArray));\n}\n\nexport function toUint8Array(base64EncodedByteArray: string): Uint8Array {\n return new Uint8Array(\n window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)),\n );\n}\n","import type { SignatureBytes } from '@solana/keys';\nimport {\n type TransactionMessage,\n type TransactionMessageWithFeePayer,\n type TransactionMessageWithLifetime,\n} from '@solana/transaction-messages';\nimport {\n compileTransaction,\n getBase64EncodedWireTransaction,\n getTransactionDecoder,\n type Transaction,\n} from '@solana/transactions';\nimport {\n AuthorizeAPI,\n Base64EncodedAddress,\n Base64EncodedTransaction,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n MobileWallet,\n ReauthorizeAPI,\n RemoteWalletAssociationConfig,\n startRemoteScenario as baseStartRemoteScenario,\n TerminateSessionAPI,\n transact as baseTransact,\n WalletAssociationConfig,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { fromUint8Array, toUint8Array } from './base64Utils.js';\n\nexport type TransactionMessageWithFeePayerAndLifetime<TAddress extends string = string> = TransactionMessage &\n TransactionMessageWithFeePayer<TAddress> &\n TransactionMessageWithLifetime;\n\nexport type SignAndSendTransactionMessage = TransactionMessageWithFeePayerAndLifetime;\n\ninterface KitSignAndSendTransactionsAPI {\n signAndSendTransactions<T extends Transaction | SignAndSendTransactionMessage>(params: {\n minContextSlot?: number;\n commitment?: string;\n skipPreflight?: boolean;\n maxRetries?: number;\n waitForCommitmentToSendNextTransaction?: boolean;\n transactions: T[];\n }): Promise<SignatureBytes[]>;\n}\n\ninterface KitSignTransactionsAPI {\n signTransactions<T extends Transaction>(params: { transactions: T[] }): Promise<T[]>;\n}\n\ninterface KitSignMessagesAPI {\n signMessages(params: { addresses: Base64EncodedAddress[]; payloads: Uint8Array[] }): Promise<Uint8Array[]>;\n}\n\nexport interface KitMobileWallet\n extends\n AuthorizeAPI,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n ReauthorizeAPI,\n KitSignAndSendTransactionsAPI,\n KitSignTransactionsAPI,\n KitSignMessagesAPI {}\n\nexport interface KitRemoteMobileWallet extends KitMobileWallet, TerminateSessionAPI {}\n\nexport type KitScenario = Readonly<{\n wallet: Promise<KitMobileWallet>;\n close: () => void;\n}>;\n\nexport type KitRemoteScenario = KitScenario &\n Readonly<{\n associationUrl: URL;\n }>;\n\nfunction getPayloadFromTransaction(transaction: Transaction | SignAndSendTransactionMessage): Base64EncodedTransaction {\n if ('messageBytes' in transaction) {\n return getBase64EncodedWireTransaction(transaction);\n } else if ('instructions' in transaction) {\n const compiledTransaction = compileTransaction(transaction);\n return getBase64EncodedWireTransaction(compiledTransaction);\n } else {\n throw new Error('Invalid transaction type');\n }\n}\n\nfunction getTransactionFromWireMessage(byteArray: Uint8Array): Transaction {\n const transactionDecoder = getTransactionDecoder();\n return transactionDecoder.decode(byteArray);\n}\n\nexport async function transact<TReturn>(\n callback: (wallet: KitMobileWallet) => TReturn,\n config?: WalletAssociationConfig,\n): Promise<TReturn> {\n const augmentedCallback: (wallet: MobileWallet) => TReturn = (wallet) => {\n return callback(augmentWalletAPI(wallet));\n };\n return await baseTransact(augmentedCallback, config);\n}\n\nexport async function startRemoteScenario(config: RemoteWalletAssociationConfig): Promise<KitRemoteScenario> {\n const { wallet, close, associationUrl } = await baseStartRemoteScenario(config);\n const augmentedPromise = wallet.then((wallet) => {\n return augmentWalletAPI(wallet);\n });\n return { wallet: augmentedPromise, close, associationUrl };\n}\n\nfunction augmentWalletAPI(wallet: MobileWallet): KitMobileWallet {\n return new Proxy<KitMobileWallet>({} as KitMobileWallet, {\n get<TMethodName extends keyof KitMobileWallet>(target: KitMobileWallet, p: TMethodName) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = async function ({\n minContextSlot,\n commitment,\n skipPreflight,\n maxRetries,\n waitForCommitmentToSendNextTransaction,\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signAndSendTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction,\n };\n const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({\n ...rest,\n ...(Object.values(options).some((element) => element != null)\n ? { options: options }\n : null),\n payloads,\n });\n const signatures = base64EncodedSignatures.map(toUint8Array);\n return signatures as SignatureBytes[];\n } as KitMobileWallet[TMethodName];\n break;\n case 'signMessages':\n target[p] = async function ({\n payloads,\n ...rest\n }: Parameters<KitMobileWallet['signMessages']>[0]) {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({\n ...rest,\n payloads: base64EncodedPayloads,\n });\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n } as KitMobileWallet[TMethodName];\n break;\n case 'signTransactions':\n target[p] = async function ({\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } =\n await wallet.signTransactions({\n ...rest,\n payloads,\n });\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n } as KitMobileWallet[TMethodName];\n break;\n default: {\n target[p] = wallet[p] as unknown as KitMobileWallet[TMethodName];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n"],"mappings":";;;AAAA,SAAgB,eAAe,WAA+B;AAC1D,QAAO,OAAO,KAAK,OAAO,aAAa,KAAK,MAAM,GAAG,UAAU,CAAC;;AAGpE,SAAgB,aAAa,wBAA4C;AACrE,QAAO,IAAI,WACP,OACK,KAAK,uBAAuB,CAC5B,MAAM,GAAG,CACT,KAAK,MAAM,EAAE,WAAW,EAAE,CAAC,CACnC;;;;ACoEL,SAAS,0BAA0B,aAAoF;AACnH,KAAI,kBAAkB,YAClB,QAAO,gCAAgC,YAAY;UAC5C,kBAAkB,YAEzB,QAAO,gCADqB,mBAAmB,YAAY,CACA;KAE3D,OAAM,IAAI,MAAM,2BAA2B;;AAInD,SAAS,8BAA8B,WAAoC;AAEvE,QAD2B,uBAAuB,CACxB,OAAO,UAAU;;AAG/C,eAAsB,SAClB,UACA,QACgB;CAChB,MAAM,qBAAwD,WAAW;AACrE,SAAO,SAAS,iBAAiB,OAAO,CAAC;;AAE7C,QAAO,MAAMA,WAAa,mBAAmB,OAAO;;AAGxD,eAAsB,oBAAoB,QAAmE;CACzG,MAAM,EAAE,QAAQ,OAAO,mBAAmB,MAAMC,sBAAwB,OAAO;AAI/E,QAAO;EAAE,QAHgB,OAAO,MAAM,WAAW;AAC7C,UAAO,iBAAiB,OAAO;IACjC;EACiC;EAAO;EAAgB;;AAG9D,SAAS,iBAAiB,QAAuC;AAC7D,QAAO,IAAI,MAAuB,EAAE,EAAqB;EACrD,IAA+C,QAAyB,GAAgB;AACpF,OAAI,OAAO,MAAM,KACb,SAAQ,GAAR;IACI,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,gBACA,YACA,eACA,YACA,wCACA,cACA,GAAG,QACuD;MAC1D,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,UAAU;OACZ,kBAAkB;OACN;OACZ,gBAAgB;OAChB,aAAa;OACb,8CAA8C;OACjD;MACD,MAAM,EAAE,YAAY,4BAA4B,MAAM,OAAO,wBAAwB;OACjF,GAAG;OACH,GAAI,OAAO,OAAO,QAAQ,CAAC,MAAM,YAAY,WAAW,KAAK,GACvD,EAAW,SAAS,GACpB;OACN;OACH,CAAC;AAEF,aADmB,wBAAwB,IAAI,aAAa;;AAGhE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,UACA,GAAG,QAC4C;MAC/C,MAAM,wBAAwB,SAAS,IAAI,eAAe;MAC1D,MAAM,EAAE,iBAAiB,gCAAgC,MAAM,OAAO,aAAa;OAC/E,GAAG;OACH,UAAU;OACb,CAAC;AAEF,aADuB,4BAA4B,IAAI,aAAa;;AAGxE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,cACA,GAAG,QACgD;MACnD,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,EAAE,iBAAiB,sCACrB,MAAM,OAAO,iBAAiB;OAC1B,GAAG;OACH;OACH,CAAC;AAGN,aAF6B,kCAAkC,IAAI,aAAa,CAChC,IAAI,8BAA8B;;AAGtF;IACJ;AACI,YAAO,KAAK,OAAO;AACnB;;AAIZ,UAAO,OAAO;;EAElB,iBAAiB;AACb,UAAO;;EAEX,iBAAiB;AACb,UAAO;;EAEd,CAAC"}
package/lib/esm/index.js CHANGED
@@ -1,109 +1,95 @@
1
- import { getBase64EncodedWireTransaction, compileTransaction, getTransactionDecoder } from '@solana/transactions';
2
- import { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from '@solana-mobile/mobile-wallet-adapter-protocol';
3
-
1
+ import { compileTransaction, getBase64EncodedWireTransaction, getTransactionDecoder } from "@solana/transactions";
2
+ import { startRemoteScenario as startRemoteScenario$1, transact as transact$1 } from "@solana-mobile/mobile-wallet-adapter-protocol";
3
+ //#region src/base64Utils.ts
4
4
  function fromUint8Array(byteArray) {
5
- return window.btoa(String.fromCharCode.call(null, ...byteArray));
5
+ return window.btoa(String.fromCharCode.call(null, ...byteArray));
6
6
  }
7
7
  function toUint8Array(base64EncodedByteArray) {
8
- return new Uint8Array(window
9
- .atob(base64EncodedByteArray)
10
- .split('')
11
- .map((c) => c.charCodeAt(0)));
8
+ return new Uint8Array(window.atob(base64EncodedByteArray).split("").map((c) => c.charCodeAt(0)));
12
9
  }
13
-
10
+ //#endregion
11
+ //#region src/transact.ts
14
12
  function getPayloadFromTransaction(transaction) {
15
- if ('messageBytes' in transaction) {
16
- return getBase64EncodedWireTransaction(transaction);
17
- }
18
- else if ('instructions' in transaction) {
19
- const compiledTransaction = compileTransaction(transaction);
20
- return getBase64EncodedWireTransaction(compiledTransaction);
21
- }
22
- else {
23
- throw new Error('Invalid transaction type');
24
- }
13
+ if ("messageBytes" in transaction) return getBase64EncodedWireTransaction(transaction);
14
+ else if ("instructions" in transaction) return getBase64EncodedWireTransaction(compileTransaction(transaction));
15
+ else throw new Error("Invalid transaction type");
25
16
  }
26
17
  function getTransactionFromWireMessage(byteArray) {
27
- const transactionDecoder = getTransactionDecoder();
28
- return transactionDecoder.decode(byteArray);
18
+ return getTransactionDecoder().decode(byteArray);
29
19
  }
30
20
  async function transact(callback, config) {
31
- const augmentedCallback = (wallet) => {
32
- return callback(augmentWalletAPI(wallet));
33
- };
34
- return await transact$1(augmentedCallback, config);
21
+ const augmentedCallback = (wallet) => {
22
+ return callback(augmentWalletAPI(wallet));
23
+ };
24
+ return await transact$1(augmentedCallback, config);
35
25
  }
36
26
  async function startRemoteScenario(config) {
37
- const { wallet, close, associationUrl } = await startRemoteScenario$1(config);
38
- const augmentedPromise = wallet.then((wallet) => {
39
- return augmentWalletAPI(wallet);
40
- });
41
- return { wallet: augmentedPromise, close, associationUrl };
27
+ const { wallet, close, associationUrl } = await startRemoteScenario$1(config);
28
+ return {
29
+ wallet: wallet.then((wallet) => {
30
+ return augmentWalletAPI(wallet);
31
+ }),
32
+ close,
33
+ associationUrl
34
+ };
42
35
  }
43
36
  function augmentWalletAPI(wallet) {
44
- return new Proxy({}, {
45
- get(target, p) {
46
- if (target[p] == null) {
47
- switch (p) {
48
- case 'signAndSendTransactions':
49
- target[p] = async function ({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
50
- const payloads = transactions.map(getPayloadFromTransaction);
51
- const options = {
52
- min_context_slot: minContextSlot,
53
- commitment: commitment,
54
- skip_preflight: skipPreflight,
55
- max_retries: maxRetries,
56
- wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
57
- };
58
- const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
59
- ...rest,
60
- ...(Object.values(options).some(element => element != null)
61
- ? { options: options }
62
- : null),
63
- payloads,
64
- });
65
- const signatures = base64EncodedSignatures.map(toUint8Array);
66
- return signatures;
67
- };
68
- break;
69
- case 'signMessages':
70
- target[p] = async function ({ payloads, ...rest }) {
71
- const base64EncodedPayloads = payloads.map(fromUint8Array);
72
- const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
73
- ...rest,
74
- payloads: base64EncodedPayloads,
75
- });
76
- const signedMessages = base64EncodedSignedMessages.map(toUint8Array);
77
- return signedMessages;
78
- };
79
- break;
80
- case 'signTransactions':
81
- target[p] = async function ({ transactions, ...rest }) {
82
- const payloads = transactions.map(getPayloadFromTransaction);
83
- const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
84
- ...rest,
85
- payloads,
86
- });
87
- const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);
88
- const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);
89
- return signedTransactions;
90
- };
91
- break;
92
- default: {
93
- target[p] = wallet[p];
94
- break;
95
- }
96
- }
97
- }
98
- return target[p];
99
- },
100
- defineProperty() {
101
- return false;
102
- },
103
- deleteProperty() {
104
- return false;
105
- },
106
- });
37
+ return new Proxy({}, {
38
+ get(target, p) {
39
+ if (target[p] == null) switch (p) {
40
+ case "signAndSendTransactions":
41
+ target[p] = async function({ minContextSlot, commitment, skipPreflight, maxRetries, waitForCommitmentToSendNextTransaction, transactions, ...rest }) {
42
+ const payloads = transactions.map(getPayloadFromTransaction);
43
+ const options = {
44
+ min_context_slot: minContextSlot,
45
+ commitment,
46
+ skip_preflight: skipPreflight,
47
+ max_retries: maxRetries,
48
+ wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction
49
+ };
50
+ const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({
51
+ ...rest,
52
+ ...Object.values(options).some((element) => element != null) ? { options } : null,
53
+ payloads
54
+ });
55
+ return base64EncodedSignatures.map(toUint8Array);
56
+ };
57
+ break;
58
+ case "signMessages":
59
+ target[p] = async function({ payloads, ...rest }) {
60
+ const base64EncodedPayloads = payloads.map(fromUint8Array);
61
+ const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({
62
+ ...rest,
63
+ payloads: base64EncodedPayloads
64
+ });
65
+ return base64EncodedSignedMessages.map(toUint8Array);
66
+ };
67
+ break;
68
+ case "signTransactions":
69
+ target[p] = async function({ transactions, ...rest }) {
70
+ const payloads = transactions.map(getPayloadFromTransaction);
71
+ const { signed_payloads: base64EncodedCompiledTransactions } = await wallet.signTransactions({
72
+ ...rest,
73
+ payloads
74
+ });
75
+ return base64EncodedCompiledTransactions.map(toUint8Array).map(getTransactionFromWireMessage);
76
+ };
77
+ break;
78
+ default:
79
+ target[p] = wallet[p];
80
+ break;
81
+ }
82
+ return target[p];
83
+ },
84
+ defineProperty() {
85
+ return false;
86
+ },
87
+ deleteProperty() {
88
+ return false;
89
+ }
90
+ });
107
91
  }
108
-
92
+ //#endregion
109
93
  export { startRemoteScenario, transact };
94
+
95
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["baseTransact","baseStartRemoteScenario"],"sources":["../../src/base64Utils.ts","../../src/transact.ts"],"sourcesContent":["export function fromUint8Array(byteArray: Uint8Array): string {\n return window.btoa(String.fromCharCode.call(null, ...byteArray));\n}\n\nexport function toUint8Array(base64EncodedByteArray: string): Uint8Array {\n return new Uint8Array(\n window\n .atob(base64EncodedByteArray)\n .split('')\n .map((c) => c.charCodeAt(0)),\n );\n}\n","import type { SignatureBytes } from '@solana/keys';\nimport {\n type TransactionMessage,\n type TransactionMessageWithFeePayer,\n type TransactionMessageWithLifetime,\n} from '@solana/transaction-messages';\nimport {\n compileTransaction,\n getBase64EncodedWireTransaction,\n getTransactionDecoder,\n type Transaction,\n} from '@solana/transactions';\nimport {\n AuthorizeAPI,\n Base64EncodedAddress,\n Base64EncodedTransaction,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n MobileWallet,\n ReauthorizeAPI,\n RemoteWalletAssociationConfig,\n startRemoteScenario as baseStartRemoteScenario,\n TerminateSessionAPI,\n transact as baseTransact,\n WalletAssociationConfig,\n} from '@solana-mobile/mobile-wallet-adapter-protocol';\n\nimport { fromUint8Array, toUint8Array } from './base64Utils.js';\n\nexport type TransactionMessageWithFeePayerAndLifetime<TAddress extends string = string> = TransactionMessage &\n TransactionMessageWithFeePayer<TAddress> &\n TransactionMessageWithLifetime;\n\nexport type SignAndSendTransactionMessage = TransactionMessageWithFeePayerAndLifetime;\n\ninterface KitSignAndSendTransactionsAPI {\n signAndSendTransactions<T extends Transaction | SignAndSendTransactionMessage>(params: {\n minContextSlot?: number;\n commitment?: string;\n skipPreflight?: boolean;\n maxRetries?: number;\n waitForCommitmentToSendNextTransaction?: boolean;\n transactions: T[];\n }): Promise<SignatureBytes[]>;\n}\n\ninterface KitSignTransactionsAPI {\n signTransactions<T extends Transaction>(params: { transactions: T[] }): Promise<T[]>;\n}\n\ninterface KitSignMessagesAPI {\n signMessages(params: { addresses: Base64EncodedAddress[]; payloads: Uint8Array[] }): Promise<Uint8Array[]>;\n}\n\nexport interface KitMobileWallet\n extends\n AuthorizeAPI,\n CloneAuthorizationAPI,\n DeauthorizeAPI,\n GetCapabilitiesAPI,\n ReauthorizeAPI,\n KitSignAndSendTransactionsAPI,\n KitSignTransactionsAPI,\n KitSignMessagesAPI {}\n\nexport interface KitRemoteMobileWallet extends KitMobileWallet, TerminateSessionAPI {}\n\nexport type KitScenario = Readonly<{\n wallet: Promise<KitMobileWallet>;\n close: () => void;\n}>;\n\nexport type KitRemoteScenario = KitScenario &\n Readonly<{\n associationUrl: URL;\n }>;\n\nfunction getPayloadFromTransaction(transaction: Transaction | SignAndSendTransactionMessage): Base64EncodedTransaction {\n if ('messageBytes' in transaction) {\n return getBase64EncodedWireTransaction(transaction);\n } else if ('instructions' in transaction) {\n const compiledTransaction = compileTransaction(transaction);\n return getBase64EncodedWireTransaction(compiledTransaction);\n } else {\n throw new Error('Invalid transaction type');\n }\n}\n\nfunction getTransactionFromWireMessage(byteArray: Uint8Array): Transaction {\n const transactionDecoder = getTransactionDecoder();\n return transactionDecoder.decode(byteArray);\n}\n\nexport async function transact<TReturn>(\n callback: (wallet: KitMobileWallet) => TReturn,\n config?: WalletAssociationConfig,\n): Promise<TReturn> {\n const augmentedCallback: (wallet: MobileWallet) => TReturn = (wallet) => {\n return callback(augmentWalletAPI(wallet));\n };\n return await baseTransact(augmentedCallback, config);\n}\n\nexport async function startRemoteScenario(config: RemoteWalletAssociationConfig): Promise<KitRemoteScenario> {\n const { wallet, close, associationUrl } = await baseStartRemoteScenario(config);\n const augmentedPromise = wallet.then((wallet) => {\n return augmentWalletAPI(wallet);\n });\n return { wallet: augmentedPromise, close, associationUrl };\n}\n\nfunction augmentWalletAPI(wallet: MobileWallet): KitMobileWallet {\n return new Proxy<KitMobileWallet>({} as KitMobileWallet, {\n get<TMethodName extends keyof KitMobileWallet>(target: KitMobileWallet, p: TMethodName) {\n if (target[p] == null) {\n switch (p) {\n case 'signAndSendTransactions':\n target[p] = async function ({\n minContextSlot,\n commitment,\n skipPreflight,\n maxRetries,\n waitForCommitmentToSendNextTransaction,\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signAndSendTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const options = {\n min_context_slot: minContextSlot,\n commitment: commitment,\n skip_preflight: skipPreflight,\n max_retries: maxRetries,\n wait_for_commitment_to_send_next_transaction: waitForCommitmentToSendNextTransaction,\n };\n const { signatures: base64EncodedSignatures } = await wallet.signAndSendTransactions({\n ...rest,\n ...(Object.values(options).some((element) => element != null)\n ? { options: options }\n : null),\n payloads,\n });\n const signatures = base64EncodedSignatures.map(toUint8Array);\n return signatures as SignatureBytes[];\n } as KitMobileWallet[TMethodName];\n break;\n case 'signMessages':\n target[p] = async function ({\n payloads,\n ...rest\n }: Parameters<KitMobileWallet['signMessages']>[0]) {\n const base64EncodedPayloads = payloads.map(fromUint8Array);\n const { signed_payloads: base64EncodedSignedMessages } = await wallet.signMessages({\n ...rest,\n payloads: base64EncodedPayloads,\n });\n const signedMessages = base64EncodedSignedMessages.map(toUint8Array);\n return signedMessages;\n } as KitMobileWallet[TMethodName];\n break;\n case 'signTransactions':\n target[p] = async function ({\n transactions,\n ...rest\n }: Parameters<KitMobileWallet['signTransactions']>[0]) {\n const payloads = transactions.map(getPayloadFromTransaction);\n const { signed_payloads: base64EncodedCompiledTransactions } =\n await wallet.signTransactions({\n ...rest,\n payloads,\n });\n const compiledTransactions = base64EncodedCompiledTransactions.map(toUint8Array);\n const signedTransactions = compiledTransactions.map(getTransactionFromWireMessage);\n return signedTransactions;\n } as KitMobileWallet[TMethodName];\n break;\n default: {\n target[p] = wallet[p] as unknown as KitMobileWallet[TMethodName];\n break;\n }\n }\n }\n return target[p];\n },\n defineProperty() {\n return false;\n },\n deleteProperty() {\n return false;\n },\n });\n}\n"],"mappings":";;;AAAA,SAAgB,eAAe,WAA+B;AAC1D,QAAO,OAAO,KAAK,OAAO,aAAa,KAAK,MAAM,GAAG,UAAU,CAAC;;AAGpE,SAAgB,aAAa,wBAA4C;AACrE,QAAO,IAAI,WACP,OACK,KAAK,uBAAuB,CAC5B,MAAM,GAAG,CACT,KAAK,MAAM,EAAE,WAAW,EAAE,CAAC,CACnC;;;;ACoEL,SAAS,0BAA0B,aAAoF;AACnH,KAAI,kBAAkB,YAClB,QAAO,gCAAgC,YAAY;UAC5C,kBAAkB,YAEzB,QAAO,gCADqB,mBAAmB,YAAY,CACA;KAE3D,OAAM,IAAI,MAAM,2BAA2B;;AAInD,SAAS,8BAA8B,WAAoC;AAEvE,QAD2B,uBAAuB,CACxB,OAAO,UAAU;;AAG/C,eAAsB,SAClB,UACA,QACgB;CAChB,MAAM,qBAAwD,WAAW;AACrE,SAAO,SAAS,iBAAiB,OAAO,CAAC;;AAE7C,QAAO,MAAMA,WAAa,mBAAmB,OAAO;;AAGxD,eAAsB,oBAAoB,QAAmE;CACzG,MAAM,EAAE,QAAQ,OAAO,mBAAmB,MAAMC,sBAAwB,OAAO;AAI/E,QAAO;EAAE,QAHgB,OAAO,MAAM,WAAW;AAC7C,UAAO,iBAAiB,OAAO;IACjC;EACiC;EAAO;EAAgB;;AAG9D,SAAS,iBAAiB,QAAuC;AAC7D,QAAO,IAAI,MAAuB,EAAE,EAAqB;EACrD,IAA+C,QAAyB,GAAgB;AACpF,OAAI,OAAO,MAAM,KACb,SAAQ,GAAR;IACI,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,gBACA,YACA,eACA,YACA,wCACA,cACA,GAAG,QACuD;MAC1D,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,UAAU;OACZ,kBAAkB;OACN;OACZ,gBAAgB;OAChB,aAAa;OACb,8CAA8C;OACjD;MACD,MAAM,EAAE,YAAY,4BAA4B,MAAM,OAAO,wBAAwB;OACjF,GAAG;OACH,GAAI,OAAO,OAAO,QAAQ,CAAC,MAAM,YAAY,WAAW,KAAK,GACvD,EAAW,SAAS,GACpB;OACN;OACH,CAAC;AAEF,aADmB,wBAAwB,IAAI,aAAa;;AAGhE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,UACA,GAAG,QAC4C;MAC/C,MAAM,wBAAwB,SAAS,IAAI,eAAe;MAC1D,MAAM,EAAE,iBAAiB,gCAAgC,MAAM,OAAO,aAAa;OAC/E,GAAG;OACH,UAAU;OACb,CAAC;AAEF,aADuB,4BAA4B,IAAI,aAAa;;AAGxE;IACJ,KAAK;AACD,YAAO,KAAK,eAAgB,EACxB,cACA,GAAG,QACgD;MACnD,MAAM,WAAW,aAAa,IAAI,0BAA0B;MAC5D,MAAM,EAAE,iBAAiB,sCACrB,MAAM,OAAO,iBAAiB;OAC1B,GAAG;OACH;OACH,CAAC;AAGN,aAF6B,kCAAkC,IAAI,aAAa,CAChC,IAAI,8BAA8B;;AAGtF;IACJ;AACI,YAAO,KAAK,OAAO;AACnB;;AAIZ,UAAO,OAAO;;EAElB,iBAAiB;AACb,UAAO;;EAEX,iBAAiB;AACb,UAAO;;EAEd,CAAC"}
@@ -1,3 +1 @@
1
- {
2
- "type": "module"
3
- }
1
+ {"type":"module"}
@@ -1,40 +1,103 @@
1
+ import { TransactionMessage, TransactionMessageWithFeePayer, TransactionMessageWithLifetime } from "@solana/transaction-messages";
1
2
  import { Transaction } from "@solana/transactions";
2
- import { CompilableTransactionMessage } from "@solana/transaction-messages";
3
- import { SignatureBytes } from "@solana/keys";
4
- import { AuthorizeAPI, Base64EncodedAddress, CloneAuthorizationAPI, DeauthorizeAPI, GetCapabilitiesAPI, ReauthorizeAPI, TerminateSessionAPI, WalletAssociationConfig, RemoteWalletAssociationConfig } from "@solana-mobile/mobile-wallet-adapter-protocol";
3
+ import { AuthorizeAPI, Base64EncodedAddress, CloneAuthorizationAPI, DeauthorizeAPI, GetCapabilitiesAPI, ReauthorizeAPI, RemoteWalletAssociationConfig, TerminateSessionAPI, WalletAssociationConfig } from "@solana-mobile/mobile-wallet-adapter-protocol";
4
+
5
+ //#region ../../node_modules/.pnpm/@solana+nominal-types@6.5.0_typescript@5.6.3/node_modules/@solana/nominal-types/dist/types/index.d.ts
6
+ /**
7
+ * Use this to produce a new type that satisfies the original type, but not the other way around.
8
+ * That is to say, the branded type is acceptable wherever the original type is specified, but
9
+ * wherever the branded type is specified, the original type will be insufficient.
10
+ *
11
+ * You can use this to create specialized instances of strings, numbers, objects, and more which
12
+ * you would like to assert are special in some way (eg. numbers that are non-negative, strings
13
+ * which represent the names of foods, objects that have passed validation).
14
+ *
15
+ * @typeParam T - The base type to brand
16
+ * @typeParam TBrandName - A string that identifies a particular brand. Branded types with identical
17
+ * names will satisfy each other so long as their base types satisfy each other. Branded types with
18
+ * different names will never satisfy each other.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const unverifiedName = 'Alice';
23
+ * const verifiedName = unverifiedName as Brand<'Alice', 'VerifiedName'>;
24
+ *
25
+ * 'Alice' satisfies Brand<string, 'VerifiedName'>; // ERROR
26
+ * 'Alice' satisfies Brand<'Alice', 'VerifiedName'>; // ERROR
27
+ * unverifiedName satisfies Brand<string, 'VerifiedName'>; // ERROR
28
+ * verifiedName satisfies Brand<'Bob', 'VerifiedName'>; // ERROR
29
+ * verifiedName satisfies Brand<'Alice', 'VerifiedName'>; // OK
30
+ * verifiedName satisfies Brand<string, 'VerifiedName'>; // OK
31
+ * ```
32
+ */
33
+ type Brand<T, TBrandName extends string> = NominalType<'brand', TBrandName> & T;
34
+ /**
35
+ * Use this to produce a nominal type.
36
+ *
37
+ * This can be intersected with other base types to produce custom branded types.
38
+ *
39
+ * @typeParam TKey - The name of the nominal type. This distinguishes one nominal type from another.
40
+ * @typeParam TMarker - The type of the value the nominal type can take.
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * type SweeteningSubstance = 'aspartame' | 'cane-sugar' | 'stevia';
45
+ * type Sweetener<T extends SweeteningSubstance> = NominalType<'sweetener', T>;
46
+ *
47
+ * // This function accepts sweetened foods, except those with aspartame.
48
+ * declare function eat(food: string & Sweetener<Exclude<SweeteningSubstance, 'aspartame'>>): void;
49
+ *
50
+ * const artificiallySweetenedDessert = 'ice-cream' as string & Sweetener<'aspartame'>;
51
+ * eat(artificiallySweetenedDessert); // ERROR
52
+ * ```
53
+ */
54
+ type NominalType<TKey extends string, TMarker extends string> = { readonly [K in `__${TKey}:@solana/kit`]: TMarker };
55
+ //#endregion
56
+ //#region ../../node_modules/.pnpm/@solana+keys@6.5.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.6.3/node_modules/@solana/keys/dist/types/signatures.d.ts
57
+ /**
58
+ * A 64-byte Ed25519 signature.
59
+ *
60
+ * Whenever you need to verify that a particular signature is, in fact, the one that would have been
61
+ * produced by signing some known bytes using the private key associated with some known public key,
62
+ * use the {@link verifySignature} function in this package.
63
+ */
64
+ type SignatureBytes = Brand<Uint8Array, 'SignatureBytes'>;
65
+ //#endregion
66
+ //#region src/transact.d.ts
67
+ type TransactionMessageWithFeePayerAndLifetime<TAddress extends string = string> = TransactionMessage & TransactionMessageWithFeePayer<TAddress> & TransactionMessageWithLifetime;
68
+ type SignAndSendTransactionMessage = TransactionMessageWithFeePayerAndLifetime;
5
69
  interface KitSignAndSendTransactionsAPI {
6
- signAndSendTransactions<T extends Transaction | CompilableTransactionMessage>(params: {
7
- minContextSlot?: number;
8
- commitment?: string;
9
- skipPreflight?: boolean;
10
- maxRetries?: number;
11
- waitForCommitmentToSendNextTransaction?: boolean;
12
- transactions: T[];
13
- }): Promise<SignatureBytes[]>;
70
+ signAndSendTransactions<T extends Transaction | SignAndSendTransactionMessage>(params: {
71
+ minContextSlot?: number;
72
+ commitment?: string;
73
+ skipPreflight?: boolean;
74
+ maxRetries?: number;
75
+ waitForCommitmentToSendNextTransaction?: boolean;
76
+ transactions: T[];
77
+ }): Promise<SignatureBytes[]>;
14
78
  }
15
79
  interface KitSignTransactionsAPI {
16
- signTransactions<T extends Transaction>(params: {
17
- transactions: T[];
18
- }): Promise<T[]>;
80
+ signTransactions<T extends Transaction>(params: {
81
+ transactions: T[];
82
+ }): Promise<T[]>;
19
83
  }
20
84
  interface KitSignMessagesAPI {
21
- signMessages(params: {
22
- addresses: Base64EncodedAddress[];
23
- payloads: Uint8Array[];
24
- }): Promise<Uint8Array[]>;
25
- }
26
- interface KitMobileWallet extends AuthorizeAPI, CloneAuthorizationAPI, DeauthorizeAPI, GetCapabilitiesAPI, ReauthorizeAPI, KitSignAndSendTransactionsAPI, KitSignTransactionsAPI, KitSignMessagesAPI {
27
- }
28
- interface KitRemoteMobileWallet extends KitMobileWallet, TerminateSessionAPI {
85
+ signMessages(params: {
86
+ addresses: Base64EncodedAddress[];
87
+ payloads: Uint8Array[];
88
+ }): Promise<Uint8Array[]>;
29
89
  }
90
+ interface KitMobileWallet extends AuthorizeAPI, CloneAuthorizationAPI, DeauthorizeAPI, GetCapabilitiesAPI, ReauthorizeAPI, KitSignAndSendTransactionsAPI, KitSignTransactionsAPI, KitSignMessagesAPI {}
91
+ interface KitRemoteMobileWallet extends KitMobileWallet, TerminateSessionAPI {}
30
92
  type KitScenario = Readonly<{
31
- wallet: Promise<KitMobileWallet>;
32
- close: () => void;
93
+ wallet: Promise<KitMobileWallet>;
94
+ close: () => void;
33
95
  }>;
34
96
  type KitRemoteScenario = KitScenario & Readonly<{
35
- associationUrl: URL;
97
+ associationUrl: URL;
36
98
  }>;
37
99
  declare function transact<TReturn>(callback: (wallet: KitMobileWallet) => TReturn, config?: WalletAssociationConfig): Promise<TReturn>;
38
100
  declare function startRemoteScenario(config: RemoteWalletAssociationConfig): Promise<KitRemoteScenario>;
39
- export { KitMobileWallet, KitRemoteMobileWallet, KitScenario, KitRemoteScenario, transact, startRemoteScenario };
101
+ //#endregion
102
+ export { KitMobileWallet, KitRemoteMobileWallet, KitRemoteScenario, KitScenario, SignAndSendTransactionMessage, TransactionMessageWithFeePayerAndLifetime, startRemoteScenario, transact };
40
103
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts","../../src/base64Utils.ts","../../src/transact.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","names":["AffinePointValidity","CompressionFormat","StringEncoding","AffinePoint","T","TValidity","NominalType","Brand","TBrandName","CompressedData","TFormat","EncodedString","TEncoding","TKey","TMarker","K","ReadonlyUint8Array","Brand","EncodedString","Signature","SignatureBytes","Uint8Array","assertIsSignature","putativeSignature","assertIsSignatureBytes","putativeSignatureBytes","isSignature","isSignatureBytes","signBytes","CryptoKey","Promise","key","data","signature","signatureBytes","verifySignature"],"sources":["../../../../node_modules/.pnpm/@solana+nominal-types@6.5.0_typescript@5.6.3/node_modules/@solana/nominal-types/dist/types/index.d.ts","../../../../node_modules/.pnpm/@solana+keys@6.5.0_fastestsmallesttextencoderdecoder@1.0.22_typescript@5.6.3/node_modules/@solana/keys/dist/types/signatures.d.ts","../../src/transact.ts"],"x_google_ignoreList":[0,1],"mappings":";;;;;;;;;;;;;;;;;;AEkCA;;;;;AAAsF;;;;;;;;;KFsC1EO,KAAAA,iCAAsCD,WAAAA,UAAqBE,UAAAA,IAAcJ,CAAAA;;;;;;;;;;;;;;;;;;;AEjBrF;;KF0EYE,WAAAA,sEACYO,IAAAA,iBAAqBC,OAAAA;;;;;;;;;;KCrHjCM,cAAAA,GAAiBH,KAAAA,CAAMI,UAAAA;;;KCiBvB,yCAAA,qCAA8E,kBAAA,GACtF,8BAAA,CAA+B,QAAA,IAC/B,8BAAA;AAAA,KAEQ,6BAAA,GAAgC,yCAAA;AAAA,UAElC,6BAAA;EACN,uBAAA,WAAkC,WAAA,GAAc,6BAAA,EAA+B,MAAA;IAC3E,cAAA;IACA,UAAA;IACA,aAAA;IACA,UAAA;IACA,sCAAA;IACA,YAAA,EAAc,CAAA;EAAA,IACd,OAAA,CAAQ,cAAA;AAAA;AAAA,UAGN,sBAAA;EACN,gBAAA,WAA2B,WAAA,EAAa,MAAA;IAAU,YAAA,EAAc,CAAA;EAAA,IAAQ,OAAA,CAAQ,CAAA;AAAA;AAAA,UAG1E,kBAAA;EACN,YAAA,CAAa,MAAA;IAAU,SAAA,EAAW,oBAAA;IAAwB,QAAA,EAAU,UAAA;EAAA,IAAiB,OAAA,CAAQ,UAAA;AAAA;AAAA,UAGhF,eAAA,SAET,YAAA,EACA,qBAAA,EACA,cAAA,EACA,kBAAA,EACA,cAAA,EACA,6BAAA,EACA,sBAAA,EACA,kBAAA;AAAA,UAES,qBAAA,SAA8B,eAAA,EAAiB,mBAAA;AAAA,KAEpD,WAAA,GAAc,QAAA;EACtB,MAAA,EAAQ,OAAA,CAAQ,eAAA;EAChB,KAAA;AAAA;AAAA,KAGQ,iBAAA,GAAoB,WAAA,GAC5B,QAAA;EACI,cAAA,EAAgB,GAAA;AAAA;AAAA,iBAmBF,QAAA,SAAA,CAClB,QAAA,GAAW,MAAA,EAAQ,eAAA,KAAoB,OAAA,EACvC,MAAA,GAAS,uBAAA,GACV,OAAA,CAAQ,OAAA;AAAA,iBAOW,mBAAA,CAAoB,MAAA,EAAQ,6BAAA,GAAgC,OAAA,CAAQ,iBAAA"}