@solana/signers 2.0.0-experimental.3331786

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.
Files changed (38) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +368 -0
  3. package/dist/index.browser.cjs +138 -0
  4. package/dist/index.browser.cjs.map +1 -0
  5. package/dist/index.browser.js +118 -0
  6. package/dist/index.browser.js.map +1 -0
  7. package/dist/index.development.js +1200 -0
  8. package/dist/index.development.js.map +1 -0
  9. package/dist/index.native.js +118 -0
  10. package/dist/index.native.js.map +1 -0
  11. package/dist/index.node.cjs +138 -0
  12. package/dist/index.node.cjs.map +1 -0
  13. package/dist/index.node.js +118 -0
  14. package/dist/index.node.js.map +1 -0
  15. package/dist/index.production.min.js +33 -0
  16. package/dist/types/index.d.ts +11 -0
  17. package/dist/types/index.d.ts.map +1 -0
  18. package/dist/types/keypair-signer.d.ts +22 -0
  19. package/dist/types/keypair-signer.d.ts.map +1 -0
  20. package/dist/types/message-modifying-signer.d.ts +18 -0
  21. package/dist/types/message-modifying-signer.d.ts.map +1 -0
  22. package/dist/types/message-partial-signer.d.ts +19 -0
  23. package/dist/types/message-partial-signer.d.ts.map +1 -0
  24. package/dist/types/message-signer.d.ts +16 -0
  25. package/dist/types/message-signer.d.ts.map +1 -0
  26. package/dist/types/signable-message.d.ts +12 -0
  27. package/dist/types/signable-message.d.ts.map +1 -0
  28. package/dist/types/transaction-modifying-signer.d.ts +18 -0
  29. package/dist/types/transaction-modifying-signer.d.ts.map +1 -0
  30. package/dist/types/transaction-partial-signer.d.ts +19 -0
  31. package/dist/types/transaction-partial-signer.d.ts.map +1 -0
  32. package/dist/types/transaction-sending-signer.d.ts +19 -0
  33. package/dist/types/transaction-sending-signer.d.ts.map +1 -0
  34. package/dist/types/transaction-signer.d.ts +17 -0
  35. package/dist/types/transaction-signer.d.ts.map +1 -0
  36. package/dist/types/types.d.ts +4 -0
  37. package/dist/types/types.d.ts.map +1 -0
  38. package/package.json +103 -0
@@ -0,0 +1,138 @@
1
+ 'use strict';
2
+
3
+ var addresses = require('@solana/addresses');
4
+ var keys = require('@solana/keys');
5
+ var transactions = require('@solana/transactions');
6
+
7
+ // src/keypair-signer.ts
8
+
9
+ // src/message-partial-signer.ts
10
+ function isMessagePartialSigner(value) {
11
+ return "signMessages" in value && typeof value.signMessages === "function";
12
+ }
13
+ function assertIsMessagePartialSigner(value) {
14
+ if (!isMessagePartialSigner(value)) {
15
+ throw new Error("The provided value does not implement the MessagePartialSigner interface");
16
+ }
17
+ }
18
+
19
+ // src/transaction-partial-signer.ts
20
+ function isTransactionPartialSigner(value) {
21
+ return "signTransactions" in value && typeof value.signTransactions === "function";
22
+ }
23
+ function assertIsTransactionPartialSigner(value) {
24
+ if (!isTransactionPartialSigner(value)) {
25
+ throw new Error("The provided value does not implement the TransactionPartialSigner interface");
26
+ }
27
+ }
28
+
29
+ // src/keypair-signer.ts
30
+ function isKeyPairSigner(value) {
31
+ return "keyPair" in value && typeof value.keyPair === "object" && isMessagePartialSigner(value) && isTransactionPartialSigner(value);
32
+ }
33
+ function assertIsKeyPairSigner(value) {
34
+ if (!isKeyPairSigner(value)) {
35
+ throw new Error("The provided value does not implement the KeyPairSigner interface");
36
+ }
37
+ }
38
+ async function createSignerFromKeyPair(keyPair) {
39
+ const address = await addresses.getAddressFromPublicKey(keyPair.publicKey);
40
+ const out = {
41
+ address,
42
+ keyPair,
43
+ signMessages: (messages) => Promise.all(
44
+ messages.map(
45
+ async (message) => Object.freeze({ [address]: await keys.signBytes(keyPair.privateKey, message.content) })
46
+ )
47
+ ),
48
+ signTransactions: (transactions$1) => Promise.all(
49
+ transactions$1.map(async (transaction) => {
50
+ const signedTransaction = await transactions.partiallySignTransaction([keyPair], transaction);
51
+ return Object.freeze({ [address]: signedTransaction.signatures[address] });
52
+ })
53
+ )
54
+ };
55
+ return Object.freeze(out);
56
+ }
57
+ async function generateKeyPairSigner() {
58
+ return createSignerFromKeyPair(await keys.generateKeyPair());
59
+ }
60
+ function isMessageModifyingSigner(value) {
61
+ return addresses.isAddress(value.address) && "modifyAndSignMessages" in value && typeof value.modifyAndSignMessages === "function";
62
+ }
63
+ function assertIsMessageModifyingSigner(value) {
64
+ if (!isMessageModifyingSigner(value)) {
65
+ throw new Error("The provided value does not implement the MessageModifyingSigner interface");
66
+ }
67
+ }
68
+
69
+ // src/message-signer.ts
70
+ function isMessageSigner(value) {
71
+ return isMessagePartialSigner(value) || isMessageModifyingSigner(value);
72
+ }
73
+ function assertIsMessageSigner(value) {
74
+ if (!isMessageSigner(value)) {
75
+ throw new Error("The provided value does not implement any of the MessageSigner interfaces");
76
+ }
77
+ }
78
+ var o = globalThis.TextEncoder;
79
+
80
+ // src/signable-message.ts
81
+ function createSignableMessage(content, signatures = {}) {
82
+ return Object.freeze({
83
+ content: typeof content === "string" ? new o().encode(content) : content,
84
+ signatures: Object.freeze({ ...signatures })
85
+ });
86
+ }
87
+
88
+ // src/transaction-modifying-signer.ts
89
+ function isTransactionModifyingSigner(value) {
90
+ return "modifyAndSignTransactions" in value && typeof value.modifyAndSignTransactions === "function";
91
+ }
92
+ function assertIsTransactionModifyingSigner(value) {
93
+ if (!isTransactionModifyingSigner(value)) {
94
+ throw new Error("The provided value does not implement the TransactionModifyingSigner interface");
95
+ }
96
+ }
97
+
98
+ // src/transaction-sending-signer.ts
99
+ function isTransactionSendingSigner(value) {
100
+ return "signAndSendTransactions" in value && typeof value.signAndSendTransactions === "function";
101
+ }
102
+ function assertIsTransactionSendingSigner(value) {
103
+ if (!isTransactionSendingSigner(value)) {
104
+ throw new Error("The provided value does not implement the TransactionSendingSigner interface");
105
+ }
106
+ }
107
+
108
+ // src/transaction-signer.ts
109
+ function isTransactionSigner(value) {
110
+ return isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value);
111
+ }
112
+ function assertIsTransactionSigner(value) {
113
+ if (!isTransactionSigner(value)) {
114
+ throw new Error("The provided value does not implement any of the TransactionSigner interfaces");
115
+ }
116
+ }
117
+
118
+ exports.assertIsKeyPairSigner = assertIsKeyPairSigner;
119
+ exports.assertIsMessageModifyingSigner = assertIsMessageModifyingSigner;
120
+ exports.assertIsMessagePartialSigner = assertIsMessagePartialSigner;
121
+ exports.assertIsMessageSigner = assertIsMessageSigner;
122
+ exports.assertIsTransactionModifyingSigner = assertIsTransactionModifyingSigner;
123
+ exports.assertIsTransactionPartialSigner = assertIsTransactionPartialSigner;
124
+ exports.assertIsTransactionSendingSigner = assertIsTransactionSendingSigner;
125
+ exports.assertIsTransactionSigner = assertIsTransactionSigner;
126
+ exports.createSignableMessage = createSignableMessage;
127
+ exports.createSignerFromKeyPair = createSignerFromKeyPair;
128
+ exports.generateKeyPairSigner = generateKeyPairSigner;
129
+ exports.isKeyPairSigner = isKeyPairSigner;
130
+ exports.isMessageModifyingSigner = isMessageModifyingSigner;
131
+ exports.isMessagePartialSigner = isMessagePartialSigner;
132
+ exports.isMessageSigner = isMessageSigner;
133
+ exports.isTransactionModifyingSigner = isTransactionModifyingSigner;
134
+ exports.isTransactionPartialSigner = isTransactionPartialSigner;
135
+ exports.isTransactionSendingSigner = isTransactionSendingSigner;
136
+ exports.isTransactionSigner = isTransactionSigner;
137
+ //# sourceMappingURL=out.js.map
138
+ //# sourceMappingURL=index.node.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/keypair-signer.ts","../src/message-partial-signer.ts","../src/transaction-partial-signer.ts","../src/message-modifying-signer.ts","../src/message-signer.ts","../../text-encoding-impl/src/index.node.ts","../src/signable-message.ts","../src/transaction-modifying-signer.ts","../src/transaction-sending-signer.ts","../src/transaction-signer.ts"],"names":["TextDecoder","TextEncoder"],"mappings":"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","sourcesContent":["import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { generateKeyPair, signBytes } from '@solana/keys';\nimport { partiallySignTransaction } from '@solana/transactions';\n\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\n\n/** Defines a signer capable of signing messages and transactions using a CryptoKeyPair. */\nexport type KeyPairSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> &\n TransactionPartialSigner<TAddress> & { keyPair: CryptoKeyPair };\n\n/** Checks whether the provided value implements the {@link KeyPairSigner} interface. */\nexport function isKeyPairSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is KeyPairSigner<TAddress> {\n return (\n 'keyPair' in value &&\n typeof value.keyPair === 'object' &&\n isMessagePartialSigner(value) &&\n isTransactionPartialSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link KeyPairSigner} interface. */\nexport function assertIsKeyPairSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is KeyPairSigner<TAddress> {\n if (!isKeyPairSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the KeyPairSigner interface');\n }\n}\n\n/** Creates a KeyPairSigner from the provided Crypto KeyPair. */\nexport async function createSignerFromKeyPair(keyPair: CryptoKeyPair): Promise<KeyPairSigner> {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const out: KeyPairSigner = {\n address,\n keyPair,\n signMessages: messages =>\n Promise.all(\n messages.map(async message =>\n Object.freeze({ [address]: await signBytes(keyPair.privateKey, message.content) })\n )\n ),\n signTransactions: transactions =>\n Promise.all(\n transactions.map(async transaction => {\n const signedTransaction = await partiallySignTransaction([keyPair], transaction);\n return Object.freeze({ [address]: signedTransaction.signatures[address] });\n })\n ),\n };\n\n return Object.freeze(out);\n}\n\n/** Securely generates a signer capable of signing messages and transactions using a Crypto KeyPair. */\nexport async function generateKeyPairSigner(): Promise<KeyPairSigner> {\n return createSignerFromKeyPair(await generateKeyPair());\n}\n","import { Address } from '@solana/addresses';\n\nimport { SignableMessage } from './signable-message';\nimport { SignatureDictionary } from './types';\n\n/** Defines a signer capable of signing messages. */\nexport type MessagePartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signMessages(messages: readonly SignableMessage[]): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessagePartialSigner} interface. */\nexport function isMessagePartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is MessagePartialSigner<TAddress> {\n return 'signMessages' in value && typeof value.signMessages === 'function';\n}\n\n/** Asserts that the provided value implements the {@link MessagePartialSigner} interface. */\nexport function assertIsMessagePartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is MessagePartialSigner<TAddress> {\n if (!isMessagePartialSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the MessagePartialSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\nimport { CompilableTransaction } from '@solana/transactions';\n\nimport { SignatureDictionary } from './types';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionPartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signTransactions(transactions: readonly CompilableTransaction[]): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function isTransactionPartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionPartialSigner<TAddress> {\n return 'signTransactions' in value && typeof value.signTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function assertIsTransactionPartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionPartialSigner<TAddress> {\n if (!isTransactionPartialSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the TransactionPartialSigner interface');\n }\n}\n","import { Address, isAddress } from '@solana/addresses';\n\nimport { SignableMessage } from './signable-message';\n\n/** Defines a signer capable of signing messages. */\nexport type MessageModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignMessages(messages: readonly SignableMessage[]): Promise<readonly SignableMessage[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function isMessageModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is MessageModifyingSigner<TAddress> {\n return (\n isAddress(value.address) &&\n 'modifyAndSignMessages' in value &&\n typeof value.modifyAndSignMessages === 'function'\n );\n}\n\n/** Asserts that the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function assertIsMessageModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is MessageModifyingSigner<TAddress> {\n if (!isMessageModifyingSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the MessageModifyingSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\n\nimport { isMessageModifyingSigner, MessageModifyingSigner } from './message-modifying-signer';\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\n\n/** Defines a signer capable of signing messages. */\nexport type MessageSigner<TAddress extends string = string> =\n | MessagePartialSigner<TAddress>\n | MessageModifyingSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link MessageSigner} interface. */\nexport function isMessageSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is MessageSigner<TAddress> {\n return isMessagePartialSigner(value) || isMessageModifyingSigner(value);\n}\n\n/** Asserts that the provided value implements the {@link MessageSigner} interface. */\nexport function assertIsMessageSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is MessageSigner<TAddress> {\n if (!isMessageSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement any of the MessageSigner interfaces');\n }\n}\n","export const TextDecoder = globalThis.TextDecoder;\nexport const TextEncoder = globalThis.TextEncoder;\n","import { TextEncoder } from 'text-encoding-impl';\n\nimport { SignatureDictionary } from './types';\n\n/** Defines a message that needs signing and its current set of signatures if any. */\nexport type SignableMessage = Readonly<{\n content: Uint8Array;\n signatures: SignatureDictionary;\n}>;\n\n/**\n * Creates a signable message from a provided content.\n * If a string is provided, it will be UTF-8 encoded.\n */\nexport function createSignableMessage(\n content: string | Uint8Array,\n signatures: SignatureDictionary = {}\n): SignableMessage {\n return Object.freeze({\n content: typeof content === 'string' ? new TextEncoder().encode(content) : content,\n signatures: Object.freeze({ ...signatures }),\n });\n}\n","import { Address } from '@solana/addresses';\nimport { CompilableTransaction } from '@solana/transactions';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignTransactions<TTransaction extends CompilableTransaction>(\n transactions: readonly TTransaction[]\n ): Promise<readonly TTransaction[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function isTransactionModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionModifyingSigner<TAddress> {\n return 'modifyAndSignTransactions' in value && typeof value.modifyAndSignTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function assertIsTransactionModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionModifyingSigner<TAddress> {\n if (!isTransactionModifyingSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the TransactionModifyingSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SignatureBytes } from '@solana/keys';\nimport { CompilableTransaction } from '@solana/transactions';\n\n/** Defines a signer capable of signing and sending transactions simultaneously. */\nexport type TransactionSendingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signAndSendTransactions(transactions: readonly CompilableTransaction[]): Promise<readonly SignatureBytes[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function isTransactionSendingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionSendingSigner<TAddress> {\n return 'signAndSendTransactions' in value && typeof value.signAndSendTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function assertIsTransactionSendingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionSendingSigner<TAddress> {\n if (!isTransactionSendingSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the TransactionSendingSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\n\nimport { isTransactionModifyingSigner, TransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner, TransactionSendingSigner } from './transaction-sending-signer';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionSigner<TAddress extends string = string> =\n | TransactionPartialSigner<TAddress>\n | TransactionModifyingSigner<TAddress>\n | TransactionSendingSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link TransactionSigner} interface. */\nexport function isTransactionSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionSigner<TAddress> {\n return (\n isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link TransactionSigner} interface. */\nexport function assertIsTransactionSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionSigner<TAddress> {\n if (!isTransactionSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement any of the TransactionSigner interfaces');\n }\n}\n"]}
@@ -0,0 +1,118 @@
1
+ import { getAddressFromPublicKey, isAddress } from '@solana/addresses';
2
+ import { generateKeyPair, signBytes } from '@solana/keys';
3
+ import { partiallySignTransaction } from '@solana/transactions';
4
+
5
+ // src/keypair-signer.ts
6
+
7
+ // src/message-partial-signer.ts
8
+ function isMessagePartialSigner(value) {
9
+ return "signMessages" in value && typeof value.signMessages === "function";
10
+ }
11
+ function assertIsMessagePartialSigner(value) {
12
+ if (!isMessagePartialSigner(value)) {
13
+ throw new Error("The provided value does not implement the MessagePartialSigner interface");
14
+ }
15
+ }
16
+
17
+ // src/transaction-partial-signer.ts
18
+ function isTransactionPartialSigner(value) {
19
+ return "signTransactions" in value && typeof value.signTransactions === "function";
20
+ }
21
+ function assertIsTransactionPartialSigner(value) {
22
+ if (!isTransactionPartialSigner(value)) {
23
+ throw new Error("The provided value does not implement the TransactionPartialSigner interface");
24
+ }
25
+ }
26
+
27
+ // src/keypair-signer.ts
28
+ function isKeyPairSigner(value) {
29
+ return "keyPair" in value && typeof value.keyPair === "object" && isMessagePartialSigner(value) && isTransactionPartialSigner(value);
30
+ }
31
+ function assertIsKeyPairSigner(value) {
32
+ if (!isKeyPairSigner(value)) {
33
+ throw new Error("The provided value does not implement the KeyPairSigner interface");
34
+ }
35
+ }
36
+ async function createSignerFromKeyPair(keyPair) {
37
+ const address = await getAddressFromPublicKey(keyPair.publicKey);
38
+ const out = {
39
+ address,
40
+ keyPair,
41
+ signMessages: (messages) => Promise.all(
42
+ messages.map(
43
+ async (message) => Object.freeze({ [address]: await signBytes(keyPair.privateKey, message.content) })
44
+ )
45
+ ),
46
+ signTransactions: (transactions) => Promise.all(
47
+ transactions.map(async (transaction) => {
48
+ const signedTransaction = await partiallySignTransaction([keyPair], transaction);
49
+ return Object.freeze({ [address]: signedTransaction.signatures[address] });
50
+ })
51
+ )
52
+ };
53
+ return Object.freeze(out);
54
+ }
55
+ async function generateKeyPairSigner() {
56
+ return createSignerFromKeyPair(await generateKeyPair());
57
+ }
58
+ function isMessageModifyingSigner(value) {
59
+ return isAddress(value.address) && "modifyAndSignMessages" in value && typeof value.modifyAndSignMessages === "function";
60
+ }
61
+ function assertIsMessageModifyingSigner(value) {
62
+ if (!isMessageModifyingSigner(value)) {
63
+ throw new Error("The provided value does not implement the MessageModifyingSigner interface");
64
+ }
65
+ }
66
+
67
+ // src/message-signer.ts
68
+ function isMessageSigner(value) {
69
+ return isMessagePartialSigner(value) || isMessageModifyingSigner(value);
70
+ }
71
+ function assertIsMessageSigner(value) {
72
+ if (!isMessageSigner(value)) {
73
+ throw new Error("The provided value does not implement any of the MessageSigner interfaces");
74
+ }
75
+ }
76
+ var o = globalThis.TextEncoder;
77
+
78
+ // src/signable-message.ts
79
+ function createSignableMessage(content, signatures = {}) {
80
+ return Object.freeze({
81
+ content: typeof content === "string" ? new o().encode(content) : content,
82
+ signatures: Object.freeze({ ...signatures })
83
+ });
84
+ }
85
+
86
+ // src/transaction-modifying-signer.ts
87
+ function isTransactionModifyingSigner(value) {
88
+ return "modifyAndSignTransactions" in value && typeof value.modifyAndSignTransactions === "function";
89
+ }
90
+ function assertIsTransactionModifyingSigner(value) {
91
+ if (!isTransactionModifyingSigner(value)) {
92
+ throw new Error("The provided value does not implement the TransactionModifyingSigner interface");
93
+ }
94
+ }
95
+
96
+ // src/transaction-sending-signer.ts
97
+ function isTransactionSendingSigner(value) {
98
+ return "signAndSendTransactions" in value && typeof value.signAndSendTransactions === "function";
99
+ }
100
+ function assertIsTransactionSendingSigner(value) {
101
+ if (!isTransactionSendingSigner(value)) {
102
+ throw new Error("The provided value does not implement the TransactionSendingSigner interface");
103
+ }
104
+ }
105
+
106
+ // src/transaction-signer.ts
107
+ function isTransactionSigner(value) {
108
+ return isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value);
109
+ }
110
+ function assertIsTransactionSigner(value) {
111
+ if (!isTransactionSigner(value)) {
112
+ throw new Error("The provided value does not implement any of the TransactionSigner interfaces");
113
+ }
114
+ }
115
+
116
+ export { assertIsKeyPairSigner, assertIsMessageModifyingSigner, assertIsMessagePartialSigner, assertIsMessageSigner, assertIsTransactionModifyingSigner, assertIsTransactionPartialSigner, assertIsTransactionSendingSigner, assertIsTransactionSigner, createSignableMessage, createSignerFromKeyPair, generateKeyPairSigner, isKeyPairSigner, isMessageModifyingSigner, isMessagePartialSigner, isMessageSigner, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, isTransactionSigner };
117
+ //# sourceMappingURL=out.js.map
118
+ //# sourceMappingURL=index.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/keypair-signer.ts","../src/message-partial-signer.ts","../src/transaction-partial-signer.ts","../src/message-modifying-signer.ts","../src/message-signer.ts","../../text-encoding-impl/src/index.node.ts","../src/signable-message.ts","../src/transaction-modifying-signer.ts","../src/transaction-sending-signer.ts","../src/transaction-signer.ts"],"names":["TextDecoder","TextEncoder"],"mappings":"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","sourcesContent":["import { Address, getAddressFromPublicKey } from '@solana/addresses';\nimport { generateKeyPair, signBytes } from '@solana/keys';\nimport { partiallySignTransaction } from '@solana/transactions';\n\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\n\n/** Defines a signer capable of signing messages and transactions using a CryptoKeyPair. */\nexport type KeyPairSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> &\n TransactionPartialSigner<TAddress> & { keyPair: CryptoKeyPair };\n\n/** Checks whether the provided value implements the {@link KeyPairSigner} interface. */\nexport function isKeyPairSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is KeyPairSigner<TAddress> {\n return (\n 'keyPair' in value &&\n typeof value.keyPair === 'object' &&\n isMessagePartialSigner(value) &&\n isTransactionPartialSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link KeyPairSigner} interface. */\nexport function assertIsKeyPairSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is KeyPairSigner<TAddress> {\n if (!isKeyPairSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the KeyPairSigner interface');\n }\n}\n\n/** Creates a KeyPairSigner from the provided Crypto KeyPair. */\nexport async function createSignerFromKeyPair(keyPair: CryptoKeyPair): Promise<KeyPairSigner> {\n const address = await getAddressFromPublicKey(keyPair.publicKey);\n const out: KeyPairSigner = {\n address,\n keyPair,\n signMessages: messages =>\n Promise.all(\n messages.map(async message =>\n Object.freeze({ [address]: await signBytes(keyPair.privateKey, message.content) })\n )\n ),\n signTransactions: transactions =>\n Promise.all(\n transactions.map(async transaction => {\n const signedTransaction = await partiallySignTransaction([keyPair], transaction);\n return Object.freeze({ [address]: signedTransaction.signatures[address] });\n })\n ),\n };\n\n return Object.freeze(out);\n}\n\n/** Securely generates a signer capable of signing messages and transactions using a Crypto KeyPair. */\nexport async function generateKeyPairSigner(): Promise<KeyPairSigner> {\n return createSignerFromKeyPair(await generateKeyPair());\n}\n","import { Address } from '@solana/addresses';\n\nimport { SignableMessage } from './signable-message';\nimport { SignatureDictionary } from './types';\n\n/** Defines a signer capable of signing messages. */\nexport type MessagePartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signMessages(messages: readonly SignableMessage[]): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessagePartialSigner} interface. */\nexport function isMessagePartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is MessagePartialSigner<TAddress> {\n return 'signMessages' in value && typeof value.signMessages === 'function';\n}\n\n/** Asserts that the provided value implements the {@link MessagePartialSigner} interface. */\nexport function assertIsMessagePartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is MessagePartialSigner<TAddress> {\n if (!isMessagePartialSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the MessagePartialSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\nimport { CompilableTransaction } from '@solana/transactions';\n\nimport { SignatureDictionary } from './types';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionPartialSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signTransactions(transactions: readonly CompilableTransaction[]): Promise<readonly SignatureDictionary[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function isTransactionPartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionPartialSigner<TAddress> {\n return 'signTransactions' in value && typeof value.signTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionPartialSigner} interface. */\nexport function assertIsTransactionPartialSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionPartialSigner<TAddress> {\n if (!isTransactionPartialSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the TransactionPartialSigner interface');\n }\n}\n","import { Address, isAddress } from '@solana/addresses';\n\nimport { SignableMessage } from './signable-message';\n\n/** Defines a signer capable of signing messages. */\nexport type MessageModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignMessages(messages: readonly SignableMessage[]): Promise<readonly SignableMessage[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function isMessageModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is MessageModifyingSigner<TAddress> {\n return (\n isAddress(value.address) &&\n 'modifyAndSignMessages' in value &&\n typeof value.modifyAndSignMessages === 'function'\n );\n}\n\n/** Asserts that the provided value implements the {@link MessageModifyingSigner} interface. */\nexport function assertIsMessageModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is MessageModifyingSigner<TAddress> {\n if (!isMessageModifyingSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the MessageModifyingSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\n\nimport { isMessageModifyingSigner, MessageModifyingSigner } from './message-modifying-signer';\nimport { isMessagePartialSigner, MessagePartialSigner } from './message-partial-signer';\n\n/** Defines a signer capable of signing messages. */\nexport type MessageSigner<TAddress extends string = string> =\n | MessagePartialSigner<TAddress>\n | MessageModifyingSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link MessageSigner} interface. */\nexport function isMessageSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is MessageSigner<TAddress> {\n return isMessagePartialSigner(value) || isMessageModifyingSigner(value);\n}\n\n/** Asserts that the provided value implements the {@link MessageSigner} interface. */\nexport function assertIsMessageSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is MessageSigner<TAddress> {\n if (!isMessageSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement any of the MessageSigner interfaces');\n }\n}\n","export const TextDecoder = globalThis.TextDecoder;\nexport const TextEncoder = globalThis.TextEncoder;\n","import { TextEncoder } from 'text-encoding-impl';\n\nimport { SignatureDictionary } from './types';\n\n/** Defines a message that needs signing and its current set of signatures if any. */\nexport type SignableMessage = Readonly<{\n content: Uint8Array;\n signatures: SignatureDictionary;\n}>;\n\n/**\n * Creates a signable message from a provided content.\n * If a string is provided, it will be UTF-8 encoded.\n */\nexport function createSignableMessage(\n content: string | Uint8Array,\n signatures: SignatureDictionary = {}\n): SignableMessage {\n return Object.freeze({\n content: typeof content === 'string' ? new TextEncoder().encode(content) : content,\n signatures: Object.freeze({ ...signatures }),\n });\n}\n","import { Address } from '@solana/addresses';\nimport { CompilableTransaction } from '@solana/transactions';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionModifyingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n modifyAndSignTransactions<TTransaction extends CompilableTransaction>(\n transactions: readonly TTransaction[]\n ): Promise<readonly TTransaction[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function isTransactionModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionModifyingSigner<TAddress> {\n return 'modifyAndSignTransactions' in value && typeof value.modifyAndSignTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionModifyingSigner} interface. */\nexport function assertIsTransactionModifyingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionModifyingSigner<TAddress> {\n if (!isTransactionModifyingSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the TransactionModifyingSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\nimport { SignatureBytes } from '@solana/keys';\nimport { CompilableTransaction } from '@solana/transactions';\n\n/** Defines a signer capable of signing and sending transactions simultaneously. */\nexport type TransactionSendingSigner<TAddress extends string = string> = Readonly<{\n address: Address<TAddress>;\n signAndSendTransactions(transactions: readonly CompilableTransaction[]): Promise<readonly SignatureBytes[]>;\n}>;\n\n/** Checks whether the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function isTransactionSendingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionSendingSigner<TAddress> {\n return 'signAndSendTransactions' in value && typeof value.signAndSendTransactions === 'function';\n}\n\n/** Asserts that the provided value implements the {@link TransactionSendingSigner} interface. */\nexport function assertIsTransactionSendingSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionSendingSigner<TAddress> {\n if (!isTransactionSendingSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement the TransactionSendingSigner interface');\n }\n}\n","import { Address } from '@solana/addresses';\n\nimport { isTransactionModifyingSigner, TransactionModifyingSigner } from './transaction-modifying-signer';\nimport { isTransactionPartialSigner, TransactionPartialSigner } from './transaction-partial-signer';\nimport { isTransactionSendingSigner, TransactionSendingSigner } from './transaction-sending-signer';\n\n/** Defines a signer capable of signing transactions. */\nexport type TransactionSigner<TAddress extends string = string> =\n | TransactionPartialSigner<TAddress>\n | TransactionModifyingSigner<TAddress>\n | TransactionSendingSigner<TAddress>;\n\n/** Checks whether the provided value implements the {@link TransactionSigner} interface. */\nexport function isTransactionSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): value is TransactionSigner<TAddress> {\n return (\n isTransactionPartialSigner(value) || isTransactionModifyingSigner(value) || isTransactionSendingSigner(value)\n );\n}\n\n/** Asserts that the provided value implements the {@link TransactionSigner} interface. */\nexport function assertIsTransactionSigner<TAddress extends string>(value: {\n address: Address<TAddress>;\n [key: string]: unknown;\n}): asserts value is TransactionSigner<TAddress> {\n if (!isTransactionSigner(value)) {\n // TODO: Coded error.\n throw new Error('The provided value does not implement any of the TransactionSigner interfaces');\n }\n}\n"]}
@@ -0,0 +1,33 @@
1
+ this.globalThis = this.globalThis || {};
2
+ this.globalThis.solanaWeb3 = (function (exports) {
3
+ 'use strict';
4
+
5
+ function w(e,n,r=0){if(n.length-r<=0)throw new Error(`Codec [${e}] cannot decode empty byte arrays.`)}function x(e,n,r,t=0){let i=r.length-t;if(i<n)throw new Error(`Codec [${e}] expected ${n} bytes, got ${i}.`)}var b=e=>{let n=e.filter(o=>o.length);if(n.length===0)return e.length?e[0]:new Uint8Array;if(n.length===1)return n[0];let r=n.reduce((o,s)=>o+s.length,0),t=new Uint8Array(r),i=0;return n.forEach(o=>{t.set(o,i),i+=o.length;}),t},Ae=(e,n)=>{if(e.length>=n)return e;let r=new Uint8Array(n).fill(0);return r.set(e),r},R=(e,n)=>Ae(e.length<=n?e:e.slice(0,n),n);function ne(e,n,r){return {description:r??`fixed(${n}, ${e.description})`,fixedSize:n,maxSize:n}}function C(e,n,r){return {...ne(e,n,r),encode:t=>R(e.encode(t),n)}}function O(e,n,r){return {...ne(e,n,r),decode:(t,i=0)=>{x("fixCodec",n,t,i),(i>0||t.length>n)&&(t=t.slice(i,i+n)),e.fixedSize!==null&&(t=R(t,e.fixedSize));let[o]=e.decode(t,0);return [o,i+n]}}}function T(e,n){return {description:e.description,encode:r=>e.encode(n(r)),fixedSize:e.fixedSize,maxSize:e.maxSize}}function re(e,n,r,t){if(t<n||t>r)throw new Error(`Codec [${e}] expected number to be in the range [${n}, ${r}], got ${t}.`)}function te(e){let n,r=e.name;return e.size>1&&(n=!("endian"in e.config)||e.config.endian===0,r+=n?"(le)":"(be)"),{description:e.config.description??r,fixedSize:e.size,littleEndian:n,maxSize:e.size}}function ie(e){let n=te(e);return {description:n.description,encode(r){e.range&&re(e.name,e.range[0],e.range[1],r);let t=new ArrayBuffer(e.size);return e.set(new DataView(t),r,n.littleEndian),new Uint8Array(t)},fixedSize:n.fixedSize,maxSize:n.maxSize}}function we(e){let n=te(e);return {decode(r,t=0){w(n.description,r,t),x(n.description,e.size,r,t);let i=new DataView(Te(r,t,e.size));return [e.get(i,n.littleEndian),t+e.size]},description:n.description,fixedSize:n.fixedSize,maxSize:n.maxSize}}function Te(e,n,r){let t=e.byteOffset+(n??0),i=r??e.byteLength;return e.buffer.slice(t,t+i)}var m=(e={})=>({description:e.description??"shortU16",encode:n=>{re("shortU16",0,65535,n);let r=[0];for(let t=0;;t+=1){let i=n>>t*7;if(i===0)break;let o=127&i;r[t]=o,t>0&&(r[t-1]|=128);}return new Uint8Array(r)},fixedSize:null,maxSize:3});var k=(e={})=>ie({config:e,name:"u32",range:[0,+"0xffffffff"],set:(n,r,t)=>n.setUint32(0,r,t),size:4}),L=(e={})=>we({config:e,get:(n,r)=>n.getUint32(0,r),name:"u32",size:4});var h=(e={})=>ie({config:e,name:"u8",range:[0,+"0xff"],set:(n,r)=>n.setUint8(0,r),size:1});function ze(e,n,r=n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new Error(`Expected a string of base ${e.length}, got [${r}].`)}var Ee=e=>{let n=e.length,r=BigInt(n);return {description:`base${n}`,encode(t){if(ze(e,t),t==="")return new Uint8Array;let i=[...t],o=i.findIndex(p=>p!==e[0]);o=o===-1?i.length:o;let s=Array(o).fill(0);if(o===i.length)return Uint8Array.from(s);let a=i.slice(o),l=0n,d=1n;for(let p=a.length-1;p>=0;p-=1)l+=d*BigInt(e.indexOf(a[p])),d*=r;let u=[];for(;l>0n;)u.unshift(Number(l%256n)),l/=256n;return Uint8Array.from(s.concat(u))},fixedSize:null,maxSize:null}},ve=e=>{let n=e.length,r=BigInt(n);return {decode(t,i=0){let o=i===0?t:t.slice(i);if(o.length===0)return ["",0];let s=o.findIndex(u=>u!==0);s=s===-1?o.length:s;let a=e[0].repeat(s);if(s===o.length)return [a,t.length];let l=o.slice(s).reduce((u,p)=>u*256n+BigInt(p),0n),d=[];for(;l>0n;)d.unshift(e[Number(l%r)]),l/=r;return [a+d.join(""),t.length]},description:`base${n}`,fixedSize:null,maxSize:null}};var oe="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",M=()=>Ee(oe),_=()=>ve(oe);var Ie=e=>e.replace(/\u0000/g,"");var De=globalThis.TextDecoder,Ce=globalThis.TextEncoder,Be=()=>{let e;return {description:"utf8",encode:n=>new Uint8Array((e||(e=new Ce)).encode(n)),fixedSize:null,maxSize:null}},ke=()=>{let e;return {decode(n,r=0){let t=(e||(e=new De)).decode(n.slice(r));return [Ie(t),n.length]},description:"utf8",fixedSize:null,maxSize:null}};var $=(e={})=>{let n=e.size??k(),r=e.encoding??Be(),t=e.description??`string(${r.description}; ${se(n)})`;return n==="variable"?{...r,description:t}:typeof n=="number"?C(r,n,t):{description:t,encode:i=>{let o=r.encode(i),s=n.encode(o.length);return b([s,o])},fixedSize:null,maxSize:null}},F=(e={})=>{let n=e.size??L(),r=e.encoding??ke(),t=e.description??`string(${r.description}; ${se(n)})`;return n==="variable"?{...r,description:t}:typeof n=="number"?O(r,n,t):{decode:(i,o=0)=>{w("string",i,o);let[s,a]=n.decode(i,o),l=Number(s);o=a;let d=i.slice(o,o+l);x("string",l,d);let[u,p]=r.decode(d);return o+=p,[u,o]},description:t,fixedSize:null,maxSize:null}};function se(e){return typeof e=="object"?e.description:`${e}`}function K(){if(!globalThis.isSecureContext)throw new Error("Cryptographic operations are only allowed in secure browser contexts. Read more here: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts")}var S;async function Me(e){return S===void 0&&(S=new Promise(n=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{n(S=!1);}).then(()=>{n(S=!0);});})),typeof S=="boolean"?S:await S}async function ae(){if(K(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.generateKey!="function")throw new Error("No key generation implementation could be found");if(!await Me(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs.
6
+
7
+ Install and import \`@solana/webcrypto-ed25519-polyfill\` before generating keys in environments that do not support Ed25519.
8
+
9
+ For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function de(){if(K(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.exportKey!="function")throw new Error("No key export implementation could be found")}async function ce(){if(K(),typeof globalThis.crypto>"u"||typeof globalThis.crypto.subtle?.sign!="function")throw new Error("No signing implementation could be found")}var j,V;function H(){return j||(j=M()),j}function $e(){return V||(V=_()),V}function ue(e){return !(e.length<32||e.length>44||H().encode(e).byteLength!==32)}function fe(e){try{if(e.length<32||e.length>44)throw new Error("Expected input string to decode to a byte array of length 32.");let t=H().encode(e).byteLength;if(t!==32)throw new Error(`Expected input string to decode to a byte array of length 32. Actual length: ${t}`)}catch(n){throw new Error(`\`${e}\` is not a base-58 encoded address`,{cause:n})}}function Ue(e){return fe(e),e}function W(e){return T($({description:e?.description??"Address",encoding:H(),size:32}),n=>Ue(n))}function le(e){return F({description:e?.description??"Address",encoding:$e(),size:32})}function U(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}async function P(e){if(await de(),e.type!=="public"||e.algorithm.name!=="Ed25519")throw new Error("The `CryptoKey` must be an `Ed25519` public key");let n=await crypto.subtle.exportKey("raw",e),[r]=le().decode(new Uint8Array(n));return r}async function ge(){return await ae(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function N(e,n){await ce();let r=await crypto.subtle.sign("Ed25519",e,n);return new Uint8Array(r)}function G(e){return e.reduce((n,r)=>n===null||r===null?null:n+r,0)}function Ne(e){return typeof e=="object"?e.description:`${e}`}function pe(e,n){if(typeof e!="number")return null;if(e===0)return 0;let r=G(n);return r===null?null:r*e}function Re(e,n){return typeof e=="object"?e.encode(n):new Uint8Array}function Oe(e,n,r){if(n!==r)throw new Error(`Expected [${e}] to have ${n} items, got ${r}.`)}function Le(e,n,r){if(n==="remainder"&&e.fixedSize===null)throw new Error('Codecs of "remainder" size must have fixed-size items.');return {description:r??`array(${e.description}; ${Ne(n)})`,fixedSize:pe(n,[e.fixedSize]),maxSize:pe(n,[e.maxSize])}}function y(e,n={}){let r=n.size??k();return {...Le(e,r,n.description),encode:t=>(typeof r=="number"&&Oe("array",r,t.length),b([Re(r,t.length),...t.map(i=>e.encode(i))]))}}function me(e={}){let n=e.size??"variable",r=typeof n=="object"?n.description:`${n}`,t=e.description??`bytes(${r})`,i={description:t,encode:o=>o,fixedSize:null,maxSize:null};return n==="variable"?i:typeof n=="number"?C(i,n,t):{...i,encode:o=>{let s=i.encode(o),a=n.encode(s.length);return b([a,s])}}}function _e(e,n){let r=e.map(([t,i])=>`${String(t)}: ${i.description}`).join(", ");return {description:n??`struct(${r})`,fixedSize:G(e.map(([,t])=>t.fixedSize)),maxSize:G(e.map(([,t])=>t.maxSize))}}function A(e,n={}){return {..._e(e,n.description),encode:r=>{let t=e.map(([i,o])=>o.encode(r[i]));return b(t)}}}var z=(e=>(e[e.WRITABLE_SIGNER=3]="WRITABLE_SIGNER",e[e.READONLY_SIGNER=2]="READONLY_SIGNER",e[e.WRITABLE=1]="WRITABLE",e[e.READONLY=0]="READONLY",e))(z||{}),Fe=1;function E(e){return e>=2}function v(e){return (e&Fe)!==0}function he(e,n){return e|n}function Se(e,n,r){e[n]=r(e[n]??{role:z.READONLY});}var c=Symbol("AddressMapTypeProperty");function Ke(e,n){let r={[e]:{[c]:0,role:z.WRITABLE_SIGNER}},t=new Set;for(let i of n){Se(r,i.programAddress,s=>{if(t.add(i.programAddress),c in s){if(v(s.role))switch(s[c]){case 0:throw new Error(`This transaction includes an address (\`${i.programAddress}\`) which is both invoked and set as the fee payer. Program addresses may not pay fees.`);default:throw new Error(`This transaction includes an address (\`${i.programAddress}\`) which is both invoked and marked writable. Program addresses may not be writable.`)}if(s[c]===2)return s}return {[c]:2,role:z.READONLY}});let o;if(i.accounts)for(let s of i.accounts)Se(r,s.address,a=>{let{address:l,...d}=s;if(c in a)switch(a[c]){case 0:return a;case 1:{let u=he(a.role,d.role);if("lookupTableAddress"in d){if(a.lookupTableAddress!==d.lookupTableAddress&&(o||(o=U()))(d.lookupTableAddress,a.lookupTableAddress)<0)return {[c]:1,...d,role:u}}else if(E(d.role))return {[c]:2,role:u};return a.role!==u?{...a,role:u}:a}case 2:{let u=he(a.role,d.role);if(t.has(s.address)){if(v(d.role))throw new Error(`This transaction includes an address (\`${s.address}\`) which is both invoked and marked writable. Program addresses may not be writable.`);return a.role!==u?{...a,role:u}:a}else return "lookupTableAddress"in d&&!E(a.role)?{...d,[c]:1,role:u}:a.role!==u?{...a,role:u}:a}}return "lookupTableAddress"in d?{...d,[c]:1}:{...d,[c]:2}});}return r}function je(e){let n;return Object.entries(e).sort(([t,i],[o,s])=>{if(i[c]!==s[c]){if(i[c]===0)return -1;if(s[c]===0)return 1;if(i[c]===2)return -1;if(s[c]===2)return 1}let a=E(i.role);if(a!==E(s.role))return a?-1:1;let l=v(i.role);return l!==v(s.role)?l?-1:1:(n||(n=U()),i[c]===1&&s[c]===1&&i.lookupTableAddress!==s.lookupTableAddress?n(i.lookupTableAddress,s.lookupTableAddress):n(t,o))}).map(([t,i])=>({address:t,...i}))}function Ve(e){var n;let r={};for(let t of e){if(!("lookupTableAddress"in t))continue;let i=r[n=t.lookupTableAddress]||(r[n]={readableIndices:[],writableIndices:[]});t.role===z.WRITABLE?i.writableIndices.push(t.addressIndex):i.readableIndices.push(t.addressIndex);}return Object.keys(r).sort(U()).map(t=>({lookupTableAddress:t,...r[t]}))}function He(e){let n=0,r=0,t=0;for(let i of e){if("lookupTableAddress"in i)break;let o=v(i.role);E(i.role)?(t++,o||r++):o||n++;}return {numReadonlyNonSignerAccounts:n,numReadonlySignerAccounts:r,numSignerAccounts:t}}function We(e){let n={};for(let[r,t]of e.entries())n[t.address]=r;return n}function Ge(e,n){let r=We(n);return e.map(({accounts:t,data:i,programAddress:o})=>({programAddressIndex:r[o],...t?{accountIndices:t.map(({address:s})=>r[s])}:null,...i?{data:i}:null}))}function Ye(e){return "nonce"in e?e.nonce:e.blockhash}function Xe(e){let n=e.findIndex(t=>"lookupTableAddress"in t);return (n===-1?e:e.slice(0,n)).map(({address:t})=>t)}function qe(e){let n=Ke(e.feePayer,e.instructions),r=je(n);return {...e.version!=="legacy"?{addressTableLookups:Ve(r)}:null,header:He(r),instructions:Ge(e.instructions,r),lifetimeToken:Ye(e.lifetimeConstraint),staticAccounts:Xe(r),version:e.version}}var Ze="lookupTableAddress",Je="writableIndices",Qe="readableIndices",en="addressTableLookup",Y;function nn(){return Y||(Y=A([["lookupTableAddress",W({description:Ze})],["writableIndices",y(h(),{description:Je,size:m()})],["readableIndices",y(h(),{description:Qe,size:m()})]],{description:en})),Y}var X;function rn(){return X||(X=h()),X}function q(e){let n=rn();return {...n,description:e??n.description}}var tn=void 0,on=void 0,sn=void 0,an=void 0;function dn(){return A([["numSignerAccounts",q(tn)],["numReadonlySignerAccounts",q(on)],["numReadonlyNonSignerAccounts",q(sn)]],{description:an})}var cn="programAddressIndex",un=void 0,fn="accountIndices",ln="data",Z;function gn(){return Z||(Z=T(A([["programAddressIndex",h({description:cn})],["accountIndices",y(h({description:un}),{description:fn,size:m()})],["data",me({description:ln,size:m()})]]),e=>e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:e.accountIndices??[],data:e.data??new Uint8Array(0)})),Z}var pn=128,mn={description:"",fixedSize:null,maxSize:1};function hn(e){if(e==="legacy")return new Uint8Array;if(e<0||e>127)throw new Error(`Transaction version must be in the range [0, 127]. \`${e}\` given.`);return new Uint8Array([e|pn])}function Sn(){return {...mn,encode:hn}}var yn="staticAccounts",xn="lifetimeToken",bn="instructions",An="addressTableLookups";function wn(){return A(ye())}function Tn(){return T(A([...ye(),["addressTableLookups",zn()]]),e=>e.version==="legacy"?e:{...e,addressTableLookups:e.addressTableLookups??[]})}function ye(){return [["version",Sn()],["header",dn()],["staticAccounts",y(W(),{description:yn,size:m()})],["lifetimeToken",$({description:xn,encoding:M(),size:32})],["instructions",y(gn(),{description:bn,size:m()})]]}function zn(){return y(nn(),{description:An,size:m()})}var En="message";function vn(){return {description:En,encode:e=>e.version==="legacy"?wn().encode(e):Tn().encode(e),fixedSize:null,maxSize:null}}async function xe(e,n){let r=qe(n),t="signatures"in n?{...n.signatures}:{},i=vn().encode(r),o=await Promise.all(e.map(a=>Promise.all([P(a.publicKey),N(a.privateKey,i)])));for(let[a,l]of o)t[a]=l;let s={...n,signatures:t};return Object.freeze(s),s}function I(e){return "signMessages"in e&&typeof e.signMessages=="function"}function yr(e){if(!I(e))throw new Error("The provided value does not implement the MessagePartialSigner interface")}function D(e){return "signTransactions"in e&&typeof e.signTransactions=="function"}function Ar(e){if(!D(e))throw new Error("The provided value does not implement the TransactionPartialSigner interface")}function In(e){return "keyPair"in e&&typeof e.keyPair=="object"&&I(e)&&D(e)}function Mr(e){if(!In(e))throw new Error("The provided value does not implement the KeyPairSigner interface")}async function Dn(e){let n=await P(e.publicKey);return Object.freeze({address:n,keyPair:e,signMessages:t=>Promise.all(t.map(async i=>Object.freeze({[n]:await N(e.privateKey,i.content)}))),signTransactions:t=>Promise.all(t.map(async i=>{let o=await xe([e],i);return Object.freeze({[n]:o.signatures[n]})}))})}async function $r(){return Dn(await ge())}function J(e){return ue(e.address)&&"modifyAndSignMessages"in e&&typeof e.modifyAndSignMessages=="function"}function Or(e){if(!J(e))throw new Error("The provided value does not implement the MessageModifyingSigner interface")}function Cn(e){return I(e)||J(e)}function Hr(e){if(!Cn(e))throw new Error("The provided value does not implement any of the MessageSigner interfaces")}var be=globalThis.TextEncoder;function Jr(e,n={}){return Object.freeze({content:typeof e=="string"?new be().encode(e):e,signatures:Object.freeze({...n})})}function Q(e){return "modifyAndSignTransactions"in e&&typeof e.modifyAndSignTransactions=="function"}function nt(e){if(!Q(e))throw new Error("The provided value does not implement the TransactionModifyingSigner interface")}function ee(e){return "signAndSendTransactions"in e&&typeof e.signAndSendTransactions=="function"}function it(e){if(!ee(e))throw new Error("The provided value does not implement the TransactionSendingSigner interface")}function Bn(e){return D(e)||Q(e)||ee(e)}function gt(e){if(!Bn(e))throw new Error("The provided value does not implement any of the TransactionSigner interfaces")}
10
+
11
+ exports.assertIsKeyPairSigner = Mr;
12
+ exports.assertIsMessageModifyingSigner = Or;
13
+ exports.assertIsMessagePartialSigner = yr;
14
+ exports.assertIsMessageSigner = Hr;
15
+ exports.assertIsTransactionModifyingSigner = nt;
16
+ exports.assertIsTransactionPartialSigner = Ar;
17
+ exports.assertIsTransactionSendingSigner = it;
18
+ exports.assertIsTransactionSigner = gt;
19
+ exports.createSignableMessage = Jr;
20
+ exports.createSignerFromKeyPair = Dn;
21
+ exports.generateKeyPairSigner = $r;
22
+ exports.isKeyPairSigner = In;
23
+ exports.isMessageModifyingSigner = J;
24
+ exports.isMessagePartialSigner = I;
25
+ exports.isMessageSigner = Cn;
26
+ exports.isTransactionModifyingSigner = Q;
27
+ exports.isTransactionPartialSigner = D;
28
+ exports.isTransactionSendingSigner = ee;
29
+ exports.isTransactionSigner = Bn;
30
+
31
+ return exports;
32
+
33
+ })({});
@@ -0,0 +1,11 @@
1
+ export * from './keypair-signer';
2
+ export * from './message-modifying-signer';
3
+ export * from './message-partial-signer';
4
+ export * from './message-signer';
5
+ export * from './signable-message';
6
+ export * from './transaction-modifying-signer';
7
+ export * from './transaction-partial-signer';
8
+ export * from './transaction-sending-signer';
9
+ export * from './transaction-signer';
10
+ export * from './types';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { MessagePartialSigner } from './message-partial-signer';
3
+ import { TransactionPartialSigner } from './transaction-partial-signer';
4
+ /** Defines a signer capable of signing messages and transactions using a CryptoKeyPair. */
5
+ export type KeyPairSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> & TransactionPartialSigner<TAddress> & {
6
+ keyPair: CryptoKeyPair;
7
+ };
8
+ /** Checks whether the provided value implements the {@link KeyPairSigner} interface. */
9
+ export declare function isKeyPairSigner<TAddress extends string>(value: {
10
+ address: Address<TAddress>;
11
+ [key: string]: unknown;
12
+ }): value is KeyPairSigner<TAddress>;
13
+ /** Asserts that the provided value implements the {@link KeyPairSigner} interface. */
14
+ export declare function assertIsKeyPairSigner<TAddress extends string>(value: {
15
+ address: Address<TAddress>;
16
+ [key: string]: unknown;
17
+ }): asserts value is KeyPairSigner<TAddress>;
18
+ /** Creates a KeyPairSigner from the provided Crypto KeyPair. */
19
+ export declare function createSignerFromKeyPair(keyPair: CryptoKeyPair): Promise<KeyPairSigner>;
20
+ /** Securely generates a signer capable of signing messages and transactions using a Crypto KeyPair. */
21
+ export declare function generateKeyPairSigner(): Promise<KeyPairSigner>;
22
+ //# sourceMappingURL=keypair-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keypair-signer.d.ts","sourceRoot":"","sources":["../../src/keypair-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2B,MAAM,mBAAmB,CAAC;AAIrE,OAAO,EAA0B,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAA8B,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAEpG,2FAA2F;AAC3F,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GACxF,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IAAE,OAAO,EAAE,aAAa,CAAA;CAAE,CAAC;AAEpE,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAC5D,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,CAOnC;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAClE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,CAK3C;AAED,gEAAgE;AAChE,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAqB5F;AAED,uGAAuG;AACvG,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,aAAa,CAAC,CAEpE"}
@@ -0,0 +1,18 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { SignableMessage } from './signable-message';
3
+ /** Defines a signer capable of signing messages. */
4
+ export type MessageModifyingSigner<TAddress extends string = string> = Readonly<{
5
+ address: Address<TAddress>;
6
+ modifyAndSignMessages(messages: readonly SignableMessage[]): Promise<readonly SignableMessage[]>;
7
+ }>;
8
+ /** Checks whether the provided value implements the {@link MessageModifyingSigner} interface. */
9
+ export declare function isMessageModifyingSigner<TAddress extends string>(value: {
10
+ address: Address<TAddress>;
11
+ [key: string]: unknown;
12
+ }): value is MessageModifyingSigner<TAddress>;
13
+ /** Asserts that the provided value implements the {@link MessageModifyingSigner} interface. */
14
+ export declare function assertIsMessageModifyingSigner<TAddress extends string>(value: {
15
+ address: Address<TAddress>;
16
+ [key: string]: unknown;
17
+ }): asserts value is MessageModifyingSigner<TAddress>;
18
+ //# sourceMappingURL=message-modifying-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-modifying-signer.d.ts","sourceRoot":"","sources":["../../src/message-modifying-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAa,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,oDAAoD;AACpD,MAAM,MAAM,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAC5E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,qBAAqB,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAAC;CACpG,CAAC,CAAC;AAEH,iGAAiG;AACjG,wBAAgB,wBAAwB,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IACrE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,KAAK,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAM5C;AAED,+FAA+F;AAC/F,wBAAgB,8BAA8B,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAC3E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,KAAK,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAKpD"}
@@ -0,0 +1,19 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { SignableMessage } from './signable-message';
3
+ import { SignatureDictionary } from './types';
4
+ /** Defines a signer capable of signing messages. */
5
+ export type MessagePartialSigner<TAddress extends string = string> = Readonly<{
6
+ address: Address<TAddress>;
7
+ signMessages(messages: readonly SignableMessage[]): Promise<readonly SignatureDictionary[]>;
8
+ }>;
9
+ /** Checks whether the provided value implements the {@link MessagePartialSigner} interface. */
10
+ export declare function isMessagePartialSigner<TAddress extends string>(value: {
11
+ address: Address<TAddress>;
12
+ [key: string]: unknown;
13
+ }): value is MessagePartialSigner<TAddress>;
14
+ /** Asserts that the provided value implements the {@link MessagePartialSigner} interface. */
15
+ export declare function assertIsMessagePartialSigner<TAddress extends string>(value: {
16
+ address: Address<TAddress>;
17
+ [key: string]: unknown;
18
+ }): asserts value is MessagePartialSigner<TAddress>;
19
+ //# sourceMappingURL=message-partial-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-partial-signer.d.ts","sourceRoot":"","sources":["../../src/message-partial-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,oDAAoD;AACpD,MAAM,MAAM,oBAAoB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAC1E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,YAAY,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,GAAG,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;CAC/F,CAAC,CAAC;AAEH,+FAA+F;AAC/F,wBAAgB,sBAAsB,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IACnE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,KAAK,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAE1C;AAED,6FAA6F;AAC7F,wBAAgB,4BAA4B,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IACzE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAKlD"}
@@ -0,0 +1,16 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { MessageModifyingSigner } from './message-modifying-signer';
3
+ import { MessagePartialSigner } from './message-partial-signer';
4
+ /** Defines a signer capable of signing messages. */
5
+ export type MessageSigner<TAddress extends string = string> = MessagePartialSigner<TAddress> | MessageModifyingSigner<TAddress>;
6
+ /** Checks whether the provided value implements the {@link MessageSigner} interface. */
7
+ export declare function isMessageSigner<TAddress extends string>(value: {
8
+ address: Address<TAddress>;
9
+ [key: string]: unknown;
10
+ }): value is MessageSigner<TAddress>;
11
+ /** Asserts that the provided value implements the {@link MessageSigner} interface. */
12
+ export declare function assertIsMessageSigner<TAddress extends string>(value: {
13
+ address: Address<TAddress>;
14
+ [key: string]: unknown;
15
+ }): asserts value is MessageSigner<TAddress>;
16
+ //# sourceMappingURL=message-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-signer.d.ts","sourceRoot":"","sources":["../../src/message-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAA4B,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC9F,OAAO,EAA0B,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAExF,oDAAoD;AACpD,MAAM,MAAM,aAAa,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IACpD,oBAAoB,CAAC,QAAQ,CAAC,GAC9B,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAEvC,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAC5D,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,CAEnC;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAClE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,QAAQ,CAAC,CAK3C"}
@@ -0,0 +1,12 @@
1
+ import { SignatureDictionary } from './types';
2
+ /** Defines a message that needs signing and its current set of signatures if any. */
3
+ export type SignableMessage = Readonly<{
4
+ content: Uint8Array;
5
+ signatures: SignatureDictionary;
6
+ }>;
7
+ /**
8
+ * Creates a signable message from a provided content.
9
+ * If a string is provided, it will be UTF-8 encoded.
10
+ */
11
+ export declare function createSignableMessage(content: string | Uint8Array, signatures?: SignatureDictionary): SignableMessage;
12
+ //# sourceMappingURL=signable-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signable-message.d.ts","sourceRoot":"","sources":["../../src/signable-message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,qFAAqF;AACrF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACnC,OAAO,EAAE,UAAU,CAAC;IACpB,UAAU,EAAE,mBAAmB,CAAC;CACnC,CAAC,CAAC;AAEH;;;GAGG;AACH,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,MAAM,GAAG,UAAU,EAC5B,UAAU,GAAE,mBAAwB,GACrC,eAAe,CAKjB"}
@@ -0,0 +1,18 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { CompilableTransaction } from '@solana/transactions';
3
+ /** Defines a signer capable of signing transactions. */
4
+ export type TransactionModifyingSigner<TAddress extends string = string> = Readonly<{
5
+ address: Address<TAddress>;
6
+ modifyAndSignTransactions<TTransaction extends CompilableTransaction>(transactions: readonly TTransaction[]): Promise<readonly TTransaction[]>;
7
+ }>;
8
+ /** Checks whether the provided value implements the {@link TransactionModifyingSigner} interface. */
9
+ export declare function isTransactionModifyingSigner<TAddress extends string>(value: {
10
+ address: Address<TAddress>;
11
+ [key: string]: unknown;
12
+ }): value is TransactionModifyingSigner<TAddress>;
13
+ /** Asserts that the provided value implements the {@link TransactionModifyingSigner} interface. */
14
+ export declare function assertIsTransactionModifyingSigner<TAddress extends string>(value: {
15
+ address: Address<TAddress>;
16
+ [key: string]: unknown;
17
+ }): asserts value is TransactionModifyingSigner<TAddress>;
18
+ //# sourceMappingURL=transaction-modifying-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-modifying-signer.d.ts","sourceRoot":"","sources":["../../src/transaction-modifying-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,wDAAwD;AACxD,MAAM,MAAM,0BAA0B,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAChF,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,yBAAyB,CAAC,YAAY,SAAS,qBAAqB,EAChE,YAAY,EAAE,SAAS,YAAY,EAAE,GACtC,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAC;CACvC,CAAC,CAAC;AAEH,qGAAqG;AACrG,wBAAgB,4BAA4B,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IACzE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,KAAK,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAEhD;AAED,mGAAmG;AACnG,wBAAgB,kCAAkC,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAC/E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,KAAK,IAAI,0BAA0B,CAAC,QAAQ,CAAC,CAKxD"}
@@ -0,0 +1,19 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { CompilableTransaction } from '@solana/transactions';
3
+ import { SignatureDictionary } from './types';
4
+ /** Defines a signer capable of signing transactions. */
5
+ export type TransactionPartialSigner<TAddress extends string = string> = Readonly<{
6
+ address: Address<TAddress>;
7
+ signTransactions(transactions: readonly CompilableTransaction[]): Promise<readonly SignatureDictionary[]>;
8
+ }>;
9
+ /** Checks whether the provided value implements the {@link TransactionPartialSigner} interface. */
10
+ export declare function isTransactionPartialSigner<TAddress extends string>(value: {
11
+ address: Address<TAddress>;
12
+ [key: string]: unknown;
13
+ }): value is TransactionPartialSigner<TAddress>;
14
+ /** Asserts that the provided value implements the {@link TransactionPartialSigner} interface. */
15
+ export declare function assertIsTransactionPartialSigner<TAddress extends string>(value: {
16
+ address: Address<TAddress>;
17
+ [key: string]: unknown;
18
+ }): asserts value is TransactionPartialSigner<TAddress>;
19
+ //# sourceMappingURL=transaction-partial-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-partial-signer.d.ts","sourceRoot":"","sources":["../../src/transaction-partial-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,wDAAwD;AACxD,MAAM,MAAM,wBAAwB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAC9E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,gBAAgB,CAAC,YAAY,EAAE,SAAS,qBAAqB,EAAE,GAAG,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;CAC7G,CAAC,CAAC;AAEH,mGAAmG;AACnG,wBAAgB,0BAA0B,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IACvE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,KAAK,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAE9C;AAED,iGAAiG;AACjG,wBAAgB,gCAAgC,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAC7E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,KAAK,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAKtD"}
@@ -0,0 +1,19 @@
1
+ import { Address } from '@solana/addresses';
2
+ import { SignatureBytes } from '@solana/keys';
3
+ import { CompilableTransaction } from '@solana/transactions';
4
+ /** Defines a signer capable of signing and sending transactions simultaneously. */
5
+ export type TransactionSendingSigner<TAddress extends string = string> = Readonly<{
6
+ address: Address<TAddress>;
7
+ signAndSendTransactions(transactions: readonly CompilableTransaction[]): Promise<readonly SignatureBytes[]>;
8
+ }>;
9
+ /** Checks whether the provided value implements the {@link TransactionSendingSigner} interface. */
10
+ export declare function isTransactionSendingSigner<TAddress extends string>(value: {
11
+ address: Address<TAddress>;
12
+ [key: string]: unknown;
13
+ }): value is TransactionSendingSigner<TAddress>;
14
+ /** Asserts that the provided value implements the {@link TransactionSendingSigner} interface. */
15
+ export declare function assertIsTransactionSendingSigner<TAddress extends string>(value: {
16
+ address: Address<TAddress>;
17
+ [key: string]: unknown;
18
+ }): asserts value is TransactionSendingSigner<TAddress>;
19
+ //# sourceMappingURL=transaction-sending-signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-sending-signer.d.ts","sourceRoot":"","sources":["../../src/transaction-sending-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,mFAAmF;AACnF,MAAM,MAAM,wBAAwB,CAAC,QAAQ,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;IAC9E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,uBAAuB,CAAC,YAAY,EAAE,SAAS,qBAAqB,EAAE,GAAG,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC,CAAC;CAC/G,CAAC,CAAC;AAEH,mGAAmG;AACnG,wBAAgB,0BAA0B,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IACvE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,KAAK,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAE9C;AAED,iGAAiG;AACjG,wBAAgB,gCAAgC,CAAC,QAAQ,SAAS,MAAM,EAAE,KAAK,EAAE;IAC7E,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG,OAAO,CAAC,KAAK,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAKtD"}