@solana/signers
Advanced tools
Comparing version 2.0.0-experimental.d085c72 to 2.0.0-experimental.d3af599
@@ -191,12 +191,11 @@ import { isSignerRole } from '@solana/instructions'; | ||
); | ||
if (sendingSigner) { | ||
abortSignal?.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
return signature; | ||
if (!sendingSigner) { | ||
throw new Error( | ||
"No `TransactionSendingSigner` was identified. Please provide a valid `ITransactionWithSingleSendingSigner` transaction." | ||
); | ||
} | ||
if (config.fallbackSender) { | ||
assertTransactionIsFullySigned(signedTransaction); | ||
return config.fallbackSender(signedTransaction); | ||
} | ||
throw new Error("No TransactionSendingSigner was identified and no fallback sender was provided."); | ||
abortSignal?.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
abortSignal?.throwIfAborted(); | ||
return signature; | ||
} | ||
@@ -267,4 +266,31 @@ function categorizeTransactionSigners(signers, config = {}) { | ||
export { addSignersToInstruction, addSignersToTransaction, assertIsKeyPairSigner, assertIsMessageModifyingSigner, assertIsMessagePartialSigner, assertIsMessageSigner, assertIsTransactionModifyingSigner, assertIsTransactionPartialSigner, assertIsTransactionSendingSigner, assertIsTransactionSigner, createNoopSigner, createSignableMessage, createSignerFromKeyPair, generateKeyPairSigner, getSignersFromInstruction, getSignersFromTransaction, isKeyPairSigner, isMessageModifyingSigner, isMessagePartialSigner, isMessageSigner, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, isTransactionSigner, partiallySignTransactionWithSigners, signAndSendTransactionWithSigners, signTransactionWithSigners }; | ||
// src/transaction-with-single-sending-signer.ts | ||
function isTransactionWithSingleSendingSigner(transaction) { | ||
try { | ||
assertIsTransactionWithSingleSendingSigner(transaction); | ||
return true; | ||
} catch { | ||
return false; | ||
} | ||
} | ||
function assertIsTransactionWithSingleSendingSigner(transaction) { | ||
const signers = getSignersFromTransaction(transaction); | ||
const sendingSigners = signers.filter(isTransactionSendingSigner); | ||
if (sendingSigners.length === 0) { | ||
const error = new Error("No `TransactionSendingSigner` was identified."); | ||
error.name = "MissingTransactionSendingSignerError"; | ||
throw error; | ||
} | ||
const sendingOnlySigners = sendingSigners.filter( | ||
(signer) => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer) | ||
); | ||
if (sendingOnlySigners.length > 1) { | ||
const error = new Error("More than one `TransactionSendingSigner` was identified."); | ||
error.name = "MultipleTransactionSendingSignersError"; | ||
throw error; | ||
} | ||
} | ||
export { addSignersToInstruction, addSignersToTransaction, assertIsKeyPairSigner, assertIsMessageModifyingSigner, assertIsMessagePartialSigner, assertIsMessageSigner, assertIsTransactionModifyingSigner, assertIsTransactionPartialSigner, assertIsTransactionSendingSigner, assertIsTransactionSigner, assertIsTransactionWithSingleSendingSigner, createNoopSigner, createSignableMessage, createSignerFromKeyPair, generateKeyPairSigner, getSignersFromInstruction, getSignersFromTransaction, isKeyPairSigner, isMessageModifyingSigner, isMessagePartialSigner, isMessageSigner, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, isTransactionSigner, isTransactionWithSingleSendingSigner, partiallySignTransactionWithSigners, signAndSendTransactionWithSigners, signTransactionWithSigners }; | ||
//# sourceMappingURL=out.js.map | ||
//# sourceMappingURL=index.browser.js.map |
@@ -1288,12 +1288,11 @@ this.globalThis = this.globalThis || {}; | ||
); | ||
if (sendingSigner) { | ||
abortSignal == null ? void 0 : abortSignal.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
return signature; | ||
if (!sendingSigner) { | ||
throw new Error( | ||
"No `TransactionSendingSigner` was identified. Please provide a valid `ITransactionWithSingleSendingSigner` transaction." | ||
); | ||
} | ||
if (config.fallbackSender) { | ||
assertTransactionIsFullySigned(signedTransaction); | ||
return config.fallbackSender(signedTransaction); | ||
} | ||
throw new Error("No TransactionSendingSigner was identified and no fallback sender was provided."); | ||
abortSignal == null ? void 0 : abortSignal.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
abortSignal == null ? void 0 : abortSignal.throwIfAborted(); | ||
return signature; | ||
} | ||
@@ -1366,2 +1365,29 @@ function categorizeTransactionSigners(signers, config = {}) { | ||
// src/transaction-with-single-sending-signer.ts | ||
function isTransactionWithSingleSendingSigner(transaction) { | ||
try { | ||
assertIsTransactionWithSingleSendingSigner(transaction); | ||
return true; | ||
} catch { | ||
return false; | ||
} | ||
} | ||
function assertIsTransactionWithSingleSendingSigner(transaction) { | ||
const signers = getSignersFromTransaction(transaction); | ||
const sendingSigners = signers.filter(isTransactionSendingSigner); | ||
if (sendingSigners.length === 0) { | ||
const error = new Error("No `TransactionSendingSigner` was identified."); | ||
error.name = "MissingTransactionSendingSignerError"; | ||
throw error; | ||
} | ||
const sendingOnlySigners = sendingSigners.filter( | ||
(signer) => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer) | ||
); | ||
if (sendingOnlySigners.length > 1) { | ||
const error = new Error("More than one `TransactionSendingSigner` was identified."); | ||
error.name = "MultipleTransactionSendingSignersError"; | ||
throw error; | ||
} | ||
} | ||
exports.addSignersToInstruction = addSignersToInstruction; | ||
@@ -1377,2 +1403,3 @@ exports.addSignersToTransaction = addSignersToTransaction; | ||
exports.assertIsTransactionSigner = assertIsTransactionSigner; | ||
exports.assertIsTransactionWithSingleSendingSigner = assertIsTransactionWithSingleSendingSigner; | ||
exports.createNoopSigner = createNoopSigner; | ||
@@ -1392,2 +1419,3 @@ exports.createSignableMessage = createSignableMessage; | ||
exports.isTransactionSigner = isTransactionSigner; | ||
exports.isTransactionWithSingleSendingSigner = isTransactionWithSingleSendingSigner; | ||
exports.partiallySignTransactionWithSigners = partiallySignTransactionWithSigners; | ||
@@ -1394,0 +1422,0 @@ exports.signAndSendTransactionWithSigners = signAndSendTransactionWithSigners; |
@@ -191,12 +191,11 @@ import { isSignerRole } from '@solana/instructions'; | ||
); | ||
if (sendingSigner) { | ||
abortSignal?.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
return signature; | ||
if (!sendingSigner) { | ||
throw new Error( | ||
"No `TransactionSendingSigner` was identified. Please provide a valid `ITransactionWithSingleSendingSigner` transaction." | ||
); | ||
} | ||
if (config.fallbackSender) { | ||
assertTransactionIsFullySigned(signedTransaction); | ||
return config.fallbackSender(signedTransaction); | ||
} | ||
throw new Error("No TransactionSendingSigner was identified and no fallback sender was provided."); | ||
abortSignal?.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
abortSignal?.throwIfAborted(); | ||
return signature; | ||
} | ||
@@ -267,2 +266,29 @@ function categorizeTransactionSigners(signers, config = {}) { | ||
export { addSignersToInstruction, addSignersToTransaction, assertIsKeyPairSigner, assertIsMessageModifyingSigner, assertIsMessagePartialSigner, assertIsMessageSigner, assertIsTransactionModifyingSigner, assertIsTransactionPartialSigner, assertIsTransactionSendingSigner, assertIsTransactionSigner, createNoopSigner, createSignableMessage, createSignerFromKeyPair, generateKeyPairSigner, getSignersFromInstruction, getSignersFromTransaction, isKeyPairSigner, isMessageModifyingSigner, isMessagePartialSigner, isMessageSigner, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, isTransactionSigner, partiallySignTransactionWithSigners, signAndSendTransactionWithSigners, signTransactionWithSigners }; | ||
// src/transaction-with-single-sending-signer.ts | ||
function isTransactionWithSingleSendingSigner(transaction) { | ||
try { | ||
assertIsTransactionWithSingleSendingSigner(transaction); | ||
return true; | ||
} catch { | ||
return false; | ||
} | ||
} | ||
function assertIsTransactionWithSingleSendingSigner(transaction) { | ||
const signers = getSignersFromTransaction(transaction); | ||
const sendingSigners = signers.filter(isTransactionSendingSigner); | ||
if (sendingSigners.length === 0) { | ||
const error = new Error("No `TransactionSendingSigner` was identified."); | ||
error.name = "MissingTransactionSendingSignerError"; | ||
throw error; | ||
} | ||
const sendingOnlySigners = sendingSigners.filter( | ||
(signer) => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer) | ||
); | ||
if (sendingOnlySigners.length > 1) { | ||
const error = new Error("More than one `TransactionSendingSigner` was identified."); | ||
error.name = "MultipleTransactionSendingSignersError"; | ||
throw error; | ||
} | ||
} | ||
export { addSignersToInstruction, addSignersToTransaction, assertIsKeyPairSigner, assertIsMessageModifyingSigner, assertIsMessagePartialSigner, assertIsMessageSigner, assertIsTransactionModifyingSigner, assertIsTransactionPartialSigner, assertIsTransactionSendingSigner, assertIsTransactionSigner, assertIsTransactionWithSingleSendingSigner, createNoopSigner, createSignableMessage, createSignerFromKeyPair, generateKeyPairSigner, getSignersFromInstruction, getSignersFromTransaction, isKeyPairSigner, isMessageModifyingSigner, isMessagePartialSigner, isMessageSigner, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, isTransactionSigner, isTransactionWithSingleSendingSigner, partiallySignTransactionWithSigners, signAndSendTransactionWithSigners, signTransactionWithSigners }; |
@@ -191,12 +191,11 @@ import { isSignerRole } from '@solana/instructions'; | ||
); | ||
if (sendingSigner) { | ||
abortSignal?.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
return signature; | ||
if (!sendingSigner) { | ||
throw new Error( | ||
"No `TransactionSendingSigner` was identified. Please provide a valid `ITransactionWithSingleSendingSigner` transaction." | ||
); | ||
} | ||
if (config.fallbackSender) { | ||
assertTransactionIsFullySigned(signedTransaction); | ||
return config.fallbackSender(signedTransaction); | ||
} | ||
throw new Error("No TransactionSendingSigner was identified and no fallback sender was provided."); | ||
abortSignal?.throwIfAborted(); | ||
const [signature] = await sendingSigner.signAndSendTransactions([signedTransaction], { abortSignal }); | ||
abortSignal?.throwIfAborted(); | ||
return signature; | ||
} | ||
@@ -267,4 +266,31 @@ function categorizeTransactionSigners(signers, config = {}) { | ||
export { addSignersToInstruction, addSignersToTransaction, assertIsKeyPairSigner, assertIsMessageModifyingSigner, assertIsMessagePartialSigner, assertIsMessageSigner, assertIsTransactionModifyingSigner, assertIsTransactionPartialSigner, assertIsTransactionSendingSigner, assertIsTransactionSigner, createNoopSigner, createSignableMessage, createSignerFromKeyPair, generateKeyPairSigner, getSignersFromInstruction, getSignersFromTransaction, isKeyPairSigner, isMessageModifyingSigner, isMessagePartialSigner, isMessageSigner, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, isTransactionSigner, partiallySignTransactionWithSigners, signAndSendTransactionWithSigners, signTransactionWithSigners }; | ||
// src/transaction-with-single-sending-signer.ts | ||
function isTransactionWithSingleSendingSigner(transaction) { | ||
try { | ||
assertIsTransactionWithSingleSendingSigner(transaction); | ||
return true; | ||
} catch { | ||
return false; | ||
} | ||
} | ||
function assertIsTransactionWithSingleSendingSigner(transaction) { | ||
const signers = getSignersFromTransaction(transaction); | ||
const sendingSigners = signers.filter(isTransactionSendingSigner); | ||
if (sendingSigners.length === 0) { | ||
const error = new Error("No `TransactionSendingSigner` was identified."); | ||
error.name = "MissingTransactionSendingSignerError"; | ||
throw error; | ||
} | ||
const sendingOnlySigners = sendingSigners.filter( | ||
(signer) => !isTransactionPartialSigner(signer) && !isTransactionModifyingSigner(signer) | ||
); | ||
if (sendingOnlySigners.length > 1) { | ||
const error = new Error("More than one `TransactionSendingSigner` was identified."); | ||
error.name = "MultipleTransactionSendingSignersError"; | ||
throw error; | ||
} | ||
} | ||
export { addSignersToInstruction, addSignersToTransaction, assertIsKeyPairSigner, assertIsMessageModifyingSigner, assertIsMessagePartialSigner, assertIsMessageSigner, assertIsTransactionModifyingSigner, assertIsTransactionPartialSigner, assertIsTransactionSendingSigner, assertIsTransactionSigner, assertIsTransactionWithSingleSendingSigner, createNoopSigner, createSignableMessage, createSignerFromKeyPair, generateKeyPairSigner, getSignersFromInstruction, getSignersFromTransaction, isKeyPairSigner, isMessageModifyingSigner, isMessagePartialSigner, isMessageSigner, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, isTransactionSigner, isTransactionWithSingleSendingSigner, partiallySignTransactionWithSigners, signAndSendTransactionWithSigners, signTransactionWithSigners }; | ||
//# sourceMappingURL=out.js.map | ||
//# sourceMappingURL=index.node.js.map |
@@ -5,35 +5,37 @@ this.globalThis = this.globalThis || {}; | ||
function S(e){let n={};return e.forEach(r=>{if(!n[r.address])n[r.address]=r;else if(n[r.address]!==r)throw new Error(`Multiple distinct signers were identified for address "${r.address}". Please ensure that you are using the same signer instance for each address.`)}),Object.values(n)}function Me(e){var n;return S(((n=e.accounts)!=null?n:[]).flatMap(r=>"signer"in r?r.signer:[]))}function _(e){return S(e.instructions.flatMap(Me))}function se(e){return e>=2}function ke(e,n){if(!n.accounts||n.accounts.length===0)return n;let r=new Map(S(e).map(t=>[t.address,t]));return Object.freeze({...n,accounts:n.accounts.map(t=>{let i=r.get(t.address);return !se(t.role)||"signer"in t||!i?t:Object.freeze({...t,signer:i})})})}function rr(e,n){return n.instructions.length===0?n:Object.freeze({...n,instructions:n.instructions.map(r=>ke(e,r))})}function I(e,n,r=0){if(n.length-r<=0)throw new Error(`Codec [${e}] cannot decode empty byte arrays.`)}function b(e,n,r,t=0){let i=r.length-t;if(i<n)throw new Error(`Codec [${e}] expected ${n} bytes, got ${i}.`)}var w=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},Pe=(e,n)=>{if(e.length>=n)return e;let r=new Uint8Array(n).fill(0);return r.set(e),r},F=(e,n)=>Pe(e.length<=n?e:e.slice(0,n),n);function ae(e,n,r){return {description:r!=null?r:`fixed(${n}, ${e.description})`,fixedSize:n,maxSize:n}}function k(e,n,r){return {...ae(e,n,r),encode:t=>F(e.encode(t),n)}}function j(e,n,r){return {...ae(e,n,r),decode:(t,i=0)=>{b("fixCodec",n,t,i),(i>0||t.length>n)&&(t=t.slice(i,i+n)),e.fixedSize!==null&&(t=F(t,e.fixedSize));let[o]=e.decode(t,0);return [o,i+n]}}}function v(e,n){return {description:e.description,encode:r=>e.encode(n(r)),fixedSize:e.fixedSize,maxSize:e.maxSize}}function ce(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 de(e){var t;let n,r=e.name;return e.size>1&&(n=!("endian"in e.config)||e.config.endian===0,r+=n?"(le)":"(be)"),{description:(t=e.config.description)!=null?t:r,fixedSize:e.size,littleEndian:n,maxSize:e.size}}function ue(e){let n=de(e);return {description:n.description,encode(r){e.range&&ce(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 Ne(e){let n=de(e);return {decode(r,t=0){I(n.description,r,t),b(n.description,e.size,r,t);let i=new DataView(Re(r,t,e.size));return [e.get(i,n.littleEndian),t+e.size]},description:n.description,fixedSize:n.fixedSize,maxSize:n.maxSize}}function Re(e,n,r){let t=e.byteOffset+(n!=null?n:0),i=r!=null?r:e.byteLength;return e.buffer.slice(t,t+i)}var y=(e={})=>{var n;return {description:(n=e.description)!=null?n:"shortU16",encode:r=>{ce("shortU16",0,65535,r);let t=[0];for(let i=0;;i+=1){let o=r>>i*7;if(o===0)break;let s=127&o;t[i]=s,i>0&&(t[i-1]|=128);}return new Uint8Array(t)},fixedSize:null,maxSize:3}};var N=(e={})=>ue({config:e,name:"u32",range:[0,+"0xffffffff"],set:(n,r,t)=>n.setUint32(0,r,t),size:4}),K=(e={})=>Ne({config:e,get:(n,r)=>n.getUint32(0,r),name:"u32",size:4});var h=(e={})=>ue({config:e,name:"u8",range:[0,+"0xff"],set:(n,r)=>n.setUint8(0,r),size:1});function $e(e,n,r=n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new Error(`Expected a string of base ${e.length}, got [${r}].`)}var Ue=e=>{let n=e.length,r=BigInt(n);return {description:`base${n}`,encode(t){if($e(e,t),t==="")return new Uint8Array;let i=[...t],o=i.findIndex(m=>m!==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),c=0n,d=1n;for(let m=a.length-1;m>=0;m-=1)c+=d*BigInt(e.indexOf(a[m])),d*=r;let g=[];for(;c>0n;)g.unshift(Number(c%256n)),c/=256n;return Uint8Array.from(s.concat(g))},fixedSize:null,maxSize:null}},Oe=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(g=>g!==0);s=s===-1?o.length:s;let a=e[0].repeat(s);if(s===o.length)return [a,t.length];let c=o.slice(s).reduce((g,m)=>g*256n+BigInt(m),0n),d=[];for(;c>0n;)d.unshift(e[Number(c%r)]),c/=r;return [a+d.join(""),t.length]},description:`base${n}`,fixedSize:null,maxSize:null}};var ge="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",R=()=>Ue(ge),V=()=>Oe(ge);var Le=e=>e.replace(/\u0000/g,"");var We=globalThis.TextDecoder,_e=globalThis.TextEncoder,Fe=()=>{let e;return {description:"utf8",encode:n=>new Uint8Array((e||(e=new _e)).encode(n)),fixedSize:null,maxSize:null}},je=()=>{let e;return {decode(n,r=0){let t=(e||(e=new We)).decode(n.slice(r));return [Le(t),n.length]},description:"utf8",fixedSize:null,maxSize:null}};var $=(e={})=>{var i,o,s;let n=(i=e.size)!=null?i:N(),r=(o=e.encoding)!=null?o:Fe(),t=(s=e.description)!=null?s:`string(${r.description}; ${fe(n)})`;return n==="variable"?{...r,description:t}:typeof n=="number"?k(r,n,t):{description:t,encode:a=>{let c=r.encode(a),d=n.encode(c.length);return w([d,c])},fixedSize:null,maxSize:null}},G=(e={})=>{var i,o,s;let n=(i=e.size)!=null?i:K(),r=(o=e.encoding)!=null?o:je(),t=(s=e.description)!=null?s:`string(${r.description}; ${fe(n)})`;return n==="variable"?{...r,description:t}:typeof n=="number"?j(r,n,t):{decode:(a,c=0)=>{I("string",a,c);let[d,g]=n.decode(a,c),m=Number(d);c=g;let oe=a.slice(c,c+m);b("string",m,oe);let[Be,De]=r.decode(oe);return c+=De,[Be,c]},description:t,fixedSize:null,maxSize:null}};function fe(e){return typeof e=="object"?e.description:`${e}`}function H(){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 T;async function Ke(e){return T===void 0&&(T=new Promise(n=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{n(T=!1);}).then(()=>{n(T=!0);});})),typeof T=="boolean"?T:await T}async function le(){var e;if(H(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.generateKey)!="function")throw new Error("No key generation implementation could be found");if(!await Ke(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs. | ||
function T(e){let n={};return e.forEach(r=>{if(!n[r.address])n[r.address]=r;else if(n[r.address]!==r)throw new Error(`Multiple distinct signers were identified for address "${r.address}". Please ensure that you are using the same signer instance for each address.`)}),Object.values(n)}function Me(e){var n;return T(((n=e.accounts)!=null?n:[]).flatMap(r=>"signer"in r?r.signer:[]))}function v(e){return T(e.instructions.flatMap(Me))}function oe(e){return e>=2}function ke(e,n){if(!n.accounts||n.accounts.length===0)return n;let r=new Map(T(e).map(t=>[t.address,t]));return Object.freeze({...n,accounts:n.accounts.map(t=>{let i=r.get(t.address);return !oe(t.role)||"signer"in t||!i?t:Object.freeze({...t,signer:i})})})}function tr(e,n){return n.instructions.length===0?n:Object.freeze({...n,instructions:n.instructions.map(r=>ke(e,r))})}function C(e,n,r=0){if(n.length-r<=0)throw new Error(`Codec [${e}] cannot decode empty byte arrays.`)}function w(e,n,r,t=0){let i=r.length-t;if(i<n)throw new Error(`Codec [${e}] expected ${n} bytes, got ${i}.`)}var z=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},Pe=(e,n)=>{if(e.length>=n)return e;let r=new Uint8Array(n).fill(0);return r.set(e),r},F=(e,n)=>Pe(e.length<=n?e:e.slice(0,n),n);function se(e,n,r){return {description:r!=null?r:`fixed(${n}, ${e.description})`,fixedSize:n,maxSize:n}}function P(e,n,r){return {...se(e,n,r),encode:t=>F(e.encode(t),n)}}function j(e,n,r){return {...se(e,n,r),decode:(t,i=0)=>{w("fixCodec",n,t,i),(i>0||t.length>n)&&(t=t.slice(i,i+n)),e.fixedSize!==null&&(t=F(t,e.fixedSize));let[o]=e.decode(t,0);return [o,i+n]}}}function B(e,n){return {description:e.description,encode:r=>e.encode(n(r)),fixedSize:e.fixedSize,maxSize:e.maxSize}}function ae(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 ce(e){var t;let n,r=e.name;return e.size>1&&(n=!("endian"in e.config)||e.config.endian===0,r+=n?"(le)":"(be)"),{description:(t=e.config.description)!=null?t:r,fixedSize:e.size,littleEndian:n,maxSize:e.size}}function de(e){let n=ce(e);return {description:n.description,encode(r){e.range&&ae(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 Ne(e){let n=ce(e);return {decode(r,t=0){C(n.description,r,t),w(n.description,e.size,r,t);let i=new DataView(Re(r,t,e.size));return [e.get(i,n.littleEndian),t+e.size]},description:n.description,fixedSize:n.fixedSize,maxSize:n.maxSize}}function Re(e,n,r){let t=e.byteOffset+(n!=null?n:0),i=r!=null?r:e.byteLength;return e.buffer.slice(t,t+i)}var h=(e={})=>{var n;return {description:(n=e.description)!=null?n:"shortU16",encode:r=>{ae("shortU16",0,65535,r);let t=[0];for(let i=0;;i+=1){let o=r>>i*7;if(o===0)break;let s=127&o;t[i]=s,i>0&&(t[i-1]|=128);}return new Uint8Array(t)},fixedSize:null,maxSize:3}};var R=(e={})=>de({config:e,name:"u32",range:[0,+"0xffffffff"],set:(n,r,t)=>n.setUint32(0,r,t),size:4}),K=(e={})=>Ne({config:e,get:(n,r)=>n.getUint32(0,r),name:"u32",size:4});var y=(e={})=>de({config:e,name:"u8",range:[0,+"0xff"],set:(n,r)=>n.setUint8(0,r),size:1});function $e(e,n,r=n){if(!n.match(new RegExp(`^[${e}]*$`)))throw new Error(`Expected a string of base ${e.length}, got [${r}].`)}var Ue=e=>{let n=e.length,r=BigInt(n);return {description:`base${n}`,encode(t){if($e(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),c=0n,d=1n;for(let p=a.length-1;p>=0;p-=1)c+=d*BigInt(e.indexOf(a[p])),d*=r;let g=[];for(;c>0n;)g.unshift(Number(c%256n)),c/=256n;return Uint8Array.from(s.concat(g))},fixedSize:null,maxSize:null}},Oe=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(g=>g!==0);s=s===-1?o.length:s;let a=e[0].repeat(s);if(s===o.length)return [a,t.length];let c=o.slice(s).reduce((g,p)=>g*256n+BigInt(p),0n),d=[];for(;c>0n;)d.unshift(e[Number(c%r)]),c/=r;return [a+d.join(""),t.length]},description:`base${n}`,fixedSize:null,maxSize:null}};var ue="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz",$=()=>Ue(ue),V=()=>Oe(ue);var We=e=>e.replace(/\u0000/g,"");var Le=globalThis.TextDecoder,_e=globalThis.TextEncoder,Fe=()=>{let e;return {description:"utf8",encode:n=>new Uint8Array((e||(e=new _e)).encode(n)),fixedSize:null,maxSize:null}},je=()=>{let e;return {decode(n,r=0){let t=(e||(e=new Le)).decode(n.slice(r));return [We(t),n.length]},description:"utf8",fixedSize:null,maxSize:null}};var U=(e={})=>{var i,o,s;let n=(i=e.size)!=null?i:R(),r=(o=e.encoding)!=null?o:Fe(),t=(s=e.description)!=null?s:`string(${r.description}; ${ge(n)})`;return n==="variable"?{...r,description:t}:typeof n=="number"?P(r,n,t):{description:t,encode:a=>{let c=r.encode(a),d=n.encode(c.length);return z([d,c])},fixedSize:null,maxSize:null}},G=(e={})=>{var i,o,s;let n=(i=e.size)!=null?i:K(),r=(o=e.encoding)!=null?o:je(),t=(s=e.description)!=null?s:`string(${r.description}; ${ge(n)})`;return n==="variable"?{...r,description:t}:typeof n=="number"?j(r,n,t):{decode:(a,c=0)=>{C("string",a,c);let[d,g]=n.decode(a,c),p=Number(d);c=g;let ie=a.slice(c,c+p);w("string",p,ie);let[Be,De]=r.decode(ie);return c+=De,[Be,c]},description:t,fixedSize:null,maxSize:null}};function ge(e){return typeof e=="object"?e.description:`${e}`}function H(){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 x;async function Ke(e){return x===void 0&&(x=new Promise(n=>{e.generateKey("Ed25519",!1,["sign","verify"]).catch(()=>{n(x=!1);}).then(()=>{n(x=!0);});})),typeof x=="boolean"?x:await x}async function fe(){var e;if(H(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.generateKey)!="function")throw new Error("No key generation implementation could be found");if(!await Ke(globalThis.crypto.subtle))throw new Error(`This runtime does not support the generation of Ed25519 key pairs. | ||
Install and import \`@solana/webcrypto-ed25519-polyfill\` before generating keys in environments that do not support Ed25519. | ||
For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function me(){var e;if(H(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.exportKey)!="function")throw new Error("No key export implementation could be found")}async function pe(){var e;if(H(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.sign)!="function")throw new Error("No signing implementation could be found")}var Y,X;function q(){return Y||(Y=R()),Y}function Ve(){return X||(X=V()),X}function Se(e){return !(e.length<32||e.length>44||q().encode(e).byteLength!==32)}function ye(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=q().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 Ge(e){return ye(e),e}function Z(e){var n;return v($({description:(n=e==null?void 0:e.description)!=null?n:"Address",encoding:q(),size:32}),r=>Ge(r))}function he(e){var n;return G({description:(n=e==null?void 0:e.description)!=null?n:"Address",encoding:Ve(),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 O(e){if(await me(),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]=he().decode(new Uint8Array(n));return r}async function Te(){return await le(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function L(e,n){await pe();let r=await crypto.subtle.sign("Ed25519",e,n);return new Uint8Array(r)}function J(e){return e.reduce((n,r)=>n===null||r===null?null:n+r,0)}function Ye(e){return typeof e=="object"?e.description:`${e}`}function xe(e,n){if(typeof e!="number")return null;if(e===0)return 0;let r=J(n);return r===null?null:r*e}function Xe(e,n){return typeof e=="object"?e.encode(n):new Uint8Array}function qe(e,n,r){if(n!==r)throw new Error(`Expected [${e}] to have ${n} items, got ${r}.`)}function Ze(e,n,r){if(n==="remainder"&&e.fixedSize===null)throw new Error('Codecs of "remainder" size must have fixed-size items.');return {description:r!=null?r:`array(${e.description}; ${Ye(n)})`,fixedSize:xe(n,[e.fixedSize]),maxSize:xe(n,[e.maxSize])}}function x(e,n={}){var t;let r=(t=n.size)!=null?t:N();return {...Ze(e,r,n.description),encode:i=>(typeof r=="number"&&qe("array",r,i.length),w([Xe(r,i.length),...i.map(o=>e.encode(o))]))}}function Ae(e={}){var o,s;let n=(o=e.size)!=null?o:"variable",r=typeof n=="object"?n.description:`${n}`,t=(s=e.description)!=null?s:`bytes(${r})`,i={description:t,encode:a=>a,fixedSize:null,maxSize:null};return n==="variable"?i:typeof n=="number"?k(i,n,t):{...i,encode:a=>{let c=i.encode(a),d=n.encode(c.length);return w([d,c])}}}function Je(e,n){let r=e.map(([t,i])=>`${String(t)}: ${i.description}`).join(", ");return {description:n!=null?n:`struct(${r})`,fixedSize:J(e.map(([,t])=>t.fixedSize)),maxSize:J(e.map(([,t])=>t.maxSize))}}function z(e,n={}){return {...Je(e,n.description),encode:r=>{let t=e.map(([i,o])=>o.encode(r[i]));return w(t)}}}var C=(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))(C||{}),Qe=1;function E(e){return e>=2}function B(e){return (e&Qe)!==0}function be(e,n){return e|n}function we(e,n,r){var t;e[n]=r((t=e[n])!=null?t:{role:C.READONLY});}var f=Symbol("AddressMapTypeProperty");function en(e,n){let r={[e]:{[f]:0,role:C.WRITABLE_SIGNER}},t=new Set;for(let i of n){we(r,i.programAddress,s=>{if(t.add(i.programAddress),f in s){if(B(s.role))switch(s[f]){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[f]===2)return s}return {[f]:2,role:C.READONLY}});let o;if(i.accounts)for(let s of i.accounts)we(r,s.address,a=>{let{address:c,...d}=s;if(f in a)switch(a[f]){case 0:return a;case 1:{let g=be(a.role,d.role);if("lookupTableAddress"in d){if(a.lookupTableAddress!==d.lookupTableAddress&&(o||(o=U()))(d.lookupTableAddress,a.lookupTableAddress)<0)return {[f]:1,...d,role:g}}else if(E(d.role))return {[f]:2,role:g};return a.role!==g?{...a,role:g}:a}case 2:{let g=be(a.role,d.role);if(t.has(s.address)){if(B(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!==g?{...a,role:g}:a}else return "lookupTableAddress"in d&&!E(a.role)?{...d,[f]:1,role:g}:a.role!==g?{...a,role:g}:a}}return "lookupTableAddress"in d?{...d,[f]:1}:{...d,[f]:2}});}return r}function nn(e){let n;return Object.entries(e).sort(([t,i],[o,s])=>{if(i[f]!==s[f]){if(i[f]===0)return -1;if(s[f]===0)return 1;if(i[f]===2)return -1;if(s[f]===2)return 1}let a=E(i.role);if(a!==E(s.role))return a?-1:1;let c=B(i.role);return c!==B(s.role)?c?-1:1:(n||(n=U()),i[f]===1&&s[f]===1&&i.lookupTableAddress!==s.lookupTableAddress?n(i.lookupTableAddress,s.lookupTableAddress):n(t,o))}).map(([t,i])=>({address:t,...i}))}function rn(e){var r;let n={};for(let t of e){if(!("lookupTableAddress"in t))continue;let i=n[r=t.lookupTableAddress]||(n[r]={readableIndices:[],writableIndices:[]});t.role===C.WRITABLE?i.writableIndices.push(t.addressIndex):i.readableIndices.push(t.addressIndex);}return Object.keys(n).sort(U()).map(t=>({lookupTableAddress:t,...n[t]}))}function tn(e){let n=0,r=0,t=0;for(let i of e){if("lookupTableAddress"in i)break;let o=B(i.role);E(i.role)?(t++,o||r++):o||n++;}return {numReadonlyNonSignerAccounts:n,numReadonlySignerAccounts:r,numSignerAccounts:t}}function on(e){let n={};for(let[r,t]of e.entries())n[t.address]=r;return n}function sn(e,n){let r=on(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 an(e){return "nonce"in e?e.nonce:e.blockhash}function cn(e){let n=e.findIndex(t=>"lookupTableAddress"in t);return (n===-1?e:e.slice(0,n)).map(({address:t})=>t)}function dn(e){let n=en(e.feePayer,e.instructions),r=nn(n);return {...e.version!=="legacy"?{addressTableLookups:rn(r)}:null,header:tn(r),instructions:sn(e.instructions,r),lifetimeToken:an(e.lifetimeConstraint),staticAccounts:cn(r),version:e.version}}var un="lookupTableAddress",gn="writableIndices",fn="readableIndices",ln="addressTableLookup",Q;function mn(){return Q||(Q=z([["lookupTableAddress",Z({description:un})],["writableIndices",x(h(),{description:gn,size:y()})],["readableIndices",x(h(),{description:fn,size:y()})]],{description:ln})),Q}var ee;function pn(){return ee||(ee=h()),ee}function ne(e){let n=pn();return {...n,description:e!=null?e:n.description}}var Sn=void 0,yn=void 0,hn=void 0,Tn=void 0;function xn(){return z([["numSignerAccounts",ne(Sn)],["numReadonlySignerAccounts",ne(yn)],["numReadonlyNonSignerAccounts",ne(hn)]],{description:Tn})}var An="programAddressIndex",bn=void 0,wn="accountIndices",zn="data",re;function En(){return re||(re=v(z([["programAddressIndex",h({description:An})],["accountIndices",x(h({description:bn}),{description:wn,size:y()})],["data",Ae({description:zn,size:y()})]]),e=>{var n,r;return e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:(n=e.accountIndices)!=null?n:[],data:(r=e.data)!=null?r:new Uint8Array(0)}})),re}var In=128,vn={description:"",fixedSize:null,maxSize:1};function Cn(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|In])}function Bn(){return {...vn,encode:Cn}}var Dn="staticAccounts",Mn="lifetimeToken",kn="instructions",Pn="addressTableLookups";function Nn(){return z(ze())}function Rn(){return v(z([...ze(),["addressTableLookups",$n()]]),e=>{var n;return e.version==="legacy"?e:{...e,addressTableLookups:(n=e.addressTableLookups)!=null?n:[]}})}function ze(){return [["version",Bn()],["header",xn()],["staticAccounts",x(Z(),{description:Dn,size:y()})],["lifetimeToken",$({description:Mn,encoding:R(),size:32})],["instructions",x(En(),{description:kn,size:y()})]]}function $n(){return x(mn(),{description:Pn,size:y()})}var Un="message";function On(){return {description:Un,encode:e=>e.version==="legacy"?Nn().encode(e):Rn().encode(e),fixedSize:null,maxSize:null}}async function Ee(e,n){let r=dn(n),t="signatures"in n?{...n.signatures}:{},i=On().encode(r),o=await Promise.all(e.map(a=>Promise.all([O(a.publicKey),L(a.privateKey,i)])));for(let[a,c]of o)t[a]=c;let s={...n,signatures:t};return Object.freeze(s),s}function te(e){let n=e.instructions.flatMap(t=>{var i,o;return (o=(i=t.accounts)==null?void 0:i.filter(s=>E(s.role)))!=null?o:[]}).map(t=>t.address);new Set([e.feePayer,...n]).forEach(t=>{if(!e.signatures[t])throw new Error(`Transaction is missing signature for address \`${t}\``)});}function D(e){return "signMessages"in e&&typeof e.signMessages=="function"}function Vr(e){if(!D(e))throw new Error("The provided value does not implement the MessagePartialSigner interface")}function p(e){return "signTransactions"in e&&typeof e.signTransactions=="function"}function Yr(e){if(!p(e))throw new Error("The provided value does not implement the TransactionPartialSigner interface")}function Ln(e){return "keyPair"in e&&typeof e.keyPair=="object"&&D(e)&&p(e)}function ot(e){if(!Ln(e))throw new Error("The provided value does not implement the KeyPairSigner interface")}async function Wn(e){let n=await O(e.publicKey);return Object.freeze({address:n,keyPair:e,signMessages:t=>Promise.all(t.map(async i=>Object.freeze({[n]:await L(e.privateKey,i.content)}))),signTransactions:t=>Promise.all(t.map(async i=>{let o=await Ee([e],i);return Object.freeze({[n]:o.signatures[n]})}))})}async function st(){return Wn(await Te())}function ie(e){return Se(e.address)&&"modifyAndSignMessages"in e&&typeof e.modifyAndSignMessages=="function"}function gt(e){if(!ie(e))throw new Error("The provided value does not implement the MessageModifyingSigner interface")}function _n(e){return D(e)||ie(e)}function ht(e){if(!_n(e))throw new Error("The provided value does not implement any of the MessageSigner interfaces")}function At(e){return Object.freeze({address:e,signMessages:async r=>r.map(()=>Object.freeze({})),signTransactions:async r=>r.map(()=>Object.freeze({}))})}function A(e){return "modifyAndSignTransactions"in e&&typeof e.modifyAndSignTransactions=="function"}function zt(e){if(!A(e))throw new Error("The provided value does not implement the TransactionModifyingSigner interface")}function M(e){return "signAndSendTransactions"in e&&typeof e.signAndSendTransactions=="function"}function vt(e){if(!M(e))throw new Error("The provided value does not implement the TransactionSendingSigner interface")}function W(e){return p(e)||A(e)||M(e)}function $t(e){if(!W(e))throw new Error("The provided value does not implement any of the TransactionSigner interfaces")}async function Fn(e,n={}){let{partialSigners:r,modifyingSigners:t}=Ie(S(_(e).filter(W)),{identifySendingSigner:!1});return ve(e,t,r,n.abortSignal)}async function ei(e,n={}){let r=await Fn(e,n);return te(r),r}async function ni(e,n={}){let r=n.abortSignal,{partialSigners:t,modifyingSigners:i,sendingSigner:o}=Ie(S(_(e).filter(W)));r==null||r.throwIfAborted();let s=await ve(e,i,t,r);if(o){r==null||r.throwIfAborted();let[a]=await o.signAndSendTransactions([s],{abortSignal:r});return a}if(n.fallbackSender)return te(s),n.fallbackSender(s);throw new Error("No TransactionSendingSigner was identified and no fallback sender was provided.")}function Ie(e,n={}){var a;let t=((a=n.identifySendingSigner)!=null?a:!0)?jn(e):null,i=e.filter(c=>c!==t&&(A(c)||p(c))),o=Kn(i),s=i.filter(p).filter(c=>!o.includes(c));return Object.freeze({modifyingSigners:o,partialSigners:s,sendingSigner:t})}function jn(e){let n=e.filter(M);if(n.length===0)return null;let r=n.filter(t=>!A(t)&&!p(t));return r.length>0?r[0]:n[0]}function Kn(e){let n=e.filter(A);if(n.length===0)return [];let r=n.filter(t=>!p(t));return r.length>0?r:[n[0]]}async function ve(e,n=[],r=[],t){var a;let i=await n.reduce(async(c,d)=>{t==null||t.throwIfAborted();let[g]=await d.modifyAndSignTransactions([await c],{abortSignal:t});return Object.freeze(g)},Promise.resolve(e));t==null||t.throwIfAborted();let o=await Promise.all(r.map(async c=>{let[d]=await c.signTransactions([i],{abortSignal:t});return d})),s={...i,signatures:Object.freeze(o.reduce((c,d)=>({...c,...d}),(a=i.signatures)!=null?a:{}))};return Object.freeze(s)}var Ce=globalThis.TextEncoder;function ci(e,n={}){return Object.freeze({content:typeof e=="string"?new Ce().encode(e):e,signatures:Object.freeze({...n})})} | ||
For a list of runtimes that currently support Ed25519 operations, visit https://github.com/WICG/webcrypto-secure-curves/issues/20`)}async function le(){var e;if(H(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.exportKey)!="function")throw new Error("No key export implementation could be found")}async function me(){var e;if(H(),typeof globalThis.crypto>"u"||typeof((e=globalThis.crypto.subtle)==null?void 0:e.sign)!="function")throw new Error("No signing implementation could be found")}var Y,X;function q(){return Y||(Y=$()),Y}function Ve(){return X||(X=V()),X}function pe(e){return !(e.length<32||e.length>44||q().encode(e).byteLength!==32)}function Se(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=q().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 Ge(e){return Se(e),e}function Z(e){var n;return B(U({description:(n=e==null?void 0:e.description)!=null?n:"Address",encoding:q(),size:32}),r=>Ge(r))}function Te(e){var n;return G({description:(n=e==null?void 0:e.description)!=null?n:"Address",encoding:Ve(),size:32})}function O(){return new Intl.Collator("en",{caseFirst:"lower",ignorePunctuation:!1,localeMatcher:"best fit",numeric:!1,sensitivity:"variant",usage:"sort"}).compare}async function W(e){if(await le(),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]=Te().decode(new Uint8Array(n));return r}async function he(){return await fe(),await crypto.subtle.generateKey("Ed25519",!1,["sign","verify"])}async function L(e,n){await me();let r=await crypto.subtle.sign("Ed25519",e,n);return new Uint8Array(r)}function J(e){return e.reduce((n,r)=>n===null||r===null?null:n+r,0)}function Ye(e){return typeof e=="object"?e.description:`${e}`}function ye(e,n){if(typeof e!="number")return null;if(e===0)return 0;let r=J(n);return r===null?null:r*e}function Xe(e,n){return typeof e=="object"?e.encode(n):new Uint8Array}function qe(e,n,r){if(n!==r)throw new Error(`Expected [${e}] to have ${n} items, got ${r}.`)}function Ze(e,n,r){if(n==="remainder"&&e.fixedSize===null)throw new Error('Codecs of "remainder" size must have fixed-size items.');return {description:r!=null?r:`array(${e.description}; ${Ye(n)})`,fixedSize:ye(n,[e.fixedSize]),maxSize:ye(n,[e.maxSize])}}function A(e,n={}){var t;let r=(t=n.size)!=null?t:R();return {...Ze(e,r,n.description),encode:i=>(typeof r=="number"&&qe("array",r,i.length),z([Xe(r,i.length),...i.map(o=>e.encode(o))]))}}function xe(e={}){var o,s;let n=(o=e.size)!=null?o:"variable",r=typeof n=="object"?n.description:`${n}`,t=(s=e.description)!=null?s:`bytes(${r})`,i={description:t,encode:a=>a,fixedSize:null,maxSize:null};return n==="variable"?i:typeof n=="number"?P(i,n,t):{...i,encode:a=>{let c=i.encode(a),d=n.encode(c.length);return z([d,c])}}}function Je(e,n){let r=e.map(([t,i])=>`${String(t)}: ${i.description}`).join(", ");return {description:n!=null?n:`struct(${r})`,fixedSize:J(e.map(([,t])=>t.fixedSize)),maxSize:J(e.map(([,t])=>t.maxSize))}}function E(e,n={}){return {...Je(e,n.description),encode:r=>{let t=e.map(([i,o])=>o.encode(r[i]));return z(t)}}}var D=(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))(D||{}),Qe=1;function I(e){return e>=2}function M(e){return (e&Qe)!==0}function Ae(e,n){return e|n}function be(e,n,r){var t;e[n]=r((t=e[n])!=null?t:{role:D.READONLY});}var f=Symbol("AddressMapTypeProperty");function en(e,n){let r={[e]:{[f]:0,role:D.WRITABLE_SIGNER}},t=new Set;for(let i of n){be(r,i.programAddress,s=>{if(t.add(i.programAddress),f in s){if(M(s.role))switch(s[f]){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[f]===2)return s}return {[f]:2,role:D.READONLY}});let o;if(i.accounts)for(let s of i.accounts)be(r,s.address,a=>{let{address:c,...d}=s;if(f in a)switch(a[f]){case 0:return a;case 1:{let g=Ae(a.role,d.role);if("lookupTableAddress"in d){if(a.lookupTableAddress!==d.lookupTableAddress&&(o||(o=O()))(d.lookupTableAddress,a.lookupTableAddress)<0)return {[f]:1,...d,role:g}}else if(I(d.role))return {[f]:2,role:g};return a.role!==g?{...a,role:g}:a}case 2:{let g=Ae(a.role,d.role);if(t.has(s.address)){if(M(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!==g?{...a,role:g}:a}else return "lookupTableAddress"in d&&!I(a.role)?{...d,[f]:1,role:g}:a.role!==g?{...a,role:g}:a}}return "lookupTableAddress"in d?{...d,[f]:1}:{...d,[f]:2}});}return r}function nn(e){let n;return Object.entries(e).sort(([t,i],[o,s])=>{if(i[f]!==s[f]){if(i[f]===0)return -1;if(s[f]===0)return 1;if(i[f]===2)return -1;if(s[f]===2)return 1}let a=I(i.role);if(a!==I(s.role))return a?-1:1;let c=M(i.role);return c!==M(s.role)?c?-1:1:(n||(n=O()),i[f]===1&&s[f]===1&&i.lookupTableAddress!==s.lookupTableAddress?n(i.lookupTableAddress,s.lookupTableAddress):n(t,o))}).map(([t,i])=>({address:t,...i}))}function rn(e){var r;let n={};for(let t of e){if(!("lookupTableAddress"in t))continue;let i=n[r=t.lookupTableAddress]||(n[r]={readableIndices:[],writableIndices:[]});t.role===D.WRITABLE?i.writableIndices.push(t.addressIndex):i.readableIndices.push(t.addressIndex);}return Object.keys(n).sort(O()).map(t=>({lookupTableAddress:t,...n[t]}))}function tn(e){let n=0,r=0,t=0;for(let i of e){if("lookupTableAddress"in i)break;let o=M(i.role);I(i.role)?(t++,o||r++):o||n++;}return {numReadonlyNonSignerAccounts:n,numReadonlySignerAccounts:r,numSignerAccounts:t}}function on(e){let n={};for(let[r,t]of e.entries())n[t.address]=r;return n}function sn(e,n){let r=on(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 an(e){return "nonce"in e?e.nonce:e.blockhash}function cn(e){let n=e.findIndex(t=>"lookupTableAddress"in t);return (n===-1?e:e.slice(0,n)).map(({address:t})=>t)}function dn(e){let n=en(e.feePayer,e.instructions),r=nn(n);return {...e.version!=="legacy"?{addressTableLookups:rn(r)}:null,header:tn(r),instructions:sn(e.instructions,r),lifetimeToken:an(e.lifetimeConstraint),staticAccounts:cn(r),version:e.version}}var un="lookupTableAddress",gn="writableIndices",fn="readableIndices",ln="addressTableLookup",Q;function mn(){return Q||(Q=E([["lookupTableAddress",Z({description:un})],["writableIndices",A(y(),{description:gn,size:h()})],["readableIndices",A(y(),{description:fn,size:h()})]],{description:ln})),Q}var ee;function pn(){return ee||(ee=y()),ee}function ne(e){let n=pn();return {...n,description:e!=null?e:n.description}}var Sn=void 0,Tn=void 0,hn=void 0,yn=void 0;function xn(){return E([["numSignerAccounts",ne(Sn)],["numReadonlySignerAccounts",ne(Tn)],["numReadonlyNonSignerAccounts",ne(hn)]],{description:yn})}var An="programAddressIndex",bn=void 0,wn="accountIndices",zn="data",re;function En(){return re||(re=B(E([["programAddressIndex",y({description:An})],["accountIndices",A(y({description:bn}),{description:wn,size:h()})],["data",xe({description:zn,size:h()})]]),e=>{var n,r;return e.accountIndices!==void 0&&e.data!==void 0?e:{...e,accountIndices:(n=e.accountIndices)!=null?n:[],data:(r=e.data)!=null?r:new Uint8Array(0)}})),re}var In=128,vn={description:"",fixedSize:null,maxSize:1};function Cn(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|In])}function Bn(){return {...vn,encode:Cn}}var Dn="staticAccounts",Mn="lifetimeToken",kn="instructions",Pn="addressTableLookups";function Nn(){return E(we())}function Rn(){return B(E([...we(),["addressTableLookups",$n()]]),e=>{var n;return e.version==="legacy"?e:{...e,addressTableLookups:(n=e.addressTableLookups)!=null?n:[]}})}function we(){return [["version",Bn()],["header",xn()],["staticAccounts",A(Z(),{description:Dn,size:h()})],["lifetimeToken",U({description:Mn,encoding:$(),size:32})],["instructions",A(En(),{description:kn,size:h()})]]}function $n(){return A(mn(),{description:Pn,size:h()})}var Un="message";function On(){return {description:Un,encode:e=>e.version==="legacy"?Nn().encode(e):Rn().encode(e),fixedSize:null,maxSize:null}}async function ze(e,n){let r=dn(n),t="signatures"in n?{...n.signatures}:{},i=On().encode(r),o=await Promise.all(e.map(a=>Promise.all([W(a.publicKey),L(a.privateKey,i)])));for(let[a,c]of o)t[a]=c;let s={...n,signatures:t};return Object.freeze(s),s}function Ee(e){let n=e.instructions.flatMap(t=>{var i,o;return (o=(i=t.accounts)==null?void 0:i.filter(s=>I(s.role)))!=null?o:[]}).map(t=>t.address);new Set([e.feePayer,...n]).forEach(t=>{if(!e.signatures[t])throw new Error(`Transaction is missing signature for address \`${t}\``)});}function k(e){return "signMessages"in e&&typeof e.signMessages=="function"}function Gr(e){if(!k(e))throw new Error("The provided value does not implement the MessagePartialSigner interface")}function m(e){return "signTransactions"in e&&typeof e.signTransactions=="function"}function Xr(e){if(!m(e))throw new Error("The provided value does not implement the TransactionPartialSigner interface")}function Wn(e){return "keyPair"in e&&typeof e.keyPair=="object"&&k(e)&&m(e)}function st(e){if(!Wn(e))throw new Error("The provided value does not implement the KeyPairSigner interface")}async function Ln(e){let n=await W(e.publicKey);return Object.freeze({address:n,keyPair:e,signMessages:t=>Promise.all(t.map(async i=>Object.freeze({[n]:await L(e.privateKey,i.content)}))),signTransactions:t=>Promise.all(t.map(async i=>{let o=await ze([e],i);return Object.freeze({[n]:o.signatures[n]})}))})}async function at(){return Ln(await he())}function te(e){return pe(e.address)&&"modifyAndSignMessages"in e&&typeof e.modifyAndSignMessages=="function"}function ft(e){if(!te(e))throw new Error("The provided value does not implement the MessageModifyingSigner interface")}function _n(e){return k(e)||te(e)}function yt(e){if(!_n(e))throw new Error("The provided value does not implement any of the MessageSigner interfaces")}function bt(e){return Object.freeze({address:e,signMessages:async r=>r.map(()=>Object.freeze({})),signTransactions:async r=>r.map(()=>Object.freeze({}))})}function S(e){return "modifyAndSignTransactions"in e&&typeof e.modifyAndSignTransactions=="function"}function Et(e){if(!S(e))throw new Error("The provided value does not implement the TransactionModifyingSigner interface")}function b(e){return "signAndSendTransactions"in e&&typeof e.signAndSendTransactions=="function"}function Ct(e){if(!b(e))throw new Error("The provided value does not implement the TransactionSendingSigner interface")}function _(e){return m(e)||S(e)||b(e)}function Ut(e){if(!_(e))throw new Error("The provided value does not implement any of the TransactionSigner interfaces")}async function Fn(e,n={}){let{partialSigners:r,modifyingSigners:t}=Ie(T(v(e).filter(_)),{identifySendingSigner:!1});return ve(e,t,r,n.abortSignal)}async function ni(e,n={}){let r=await Fn(e,n);return Ee(r),r}async function ri(e,n={}){let r=n.abortSignal,{partialSigners:t,modifyingSigners:i,sendingSigner:o}=Ie(T(v(e).filter(_)));r==null||r.throwIfAborted();let s=await ve(e,i,t,r);if(!o)throw new Error("No `TransactionSendingSigner` was identified. Please provide a valid `ITransactionWithSingleSendingSigner` transaction.");r==null||r.throwIfAborted();let[a]=await o.signAndSendTransactions([s],{abortSignal:r});return r==null||r.throwIfAborted(),a}function Ie(e,n={}){var a;let t=((a=n.identifySendingSigner)!=null?a:!0)?jn(e):null,i=e.filter(c=>c!==t&&(S(c)||m(c))),o=Kn(i),s=i.filter(m).filter(c=>!o.includes(c));return Object.freeze({modifyingSigners:o,partialSigners:s,sendingSigner:t})}function jn(e){let n=e.filter(b);if(n.length===0)return null;let r=n.filter(t=>!S(t)&&!m(t));return r.length>0?r[0]:n[0]}function Kn(e){let n=e.filter(S);if(n.length===0)return [];let r=n.filter(t=>!m(t));return r.length>0?r:[n[0]]}async function ve(e,n=[],r=[],t){var a;let i=await n.reduce(async(c,d)=>{t==null||t.throwIfAborted();let[g]=await d.modifyAndSignTransactions([await c],{abortSignal:t});return Object.freeze(g)},Promise.resolve(e));t==null||t.throwIfAborted();let o=await Promise.all(r.map(async c=>{let[d]=await c.signTransactions([i],{abortSignal:t});return d})),s={...i,signatures:Object.freeze(o.reduce((c,d)=>({...c,...d}),(a=i.signatures)!=null?a:{}))};return Object.freeze(s)}var Ce=globalThis.TextEncoder;function di(e,n={}){return Object.freeze({content:typeof e=="string"?new Ce().encode(e):e,signatures:Object.freeze({...n})})}function Ti(e){try{return Vn(e),!0}catch{return !1}}function Vn(e){let r=v(e).filter(b);if(r.length===0){let i=new Error("No `TransactionSendingSigner` was identified.");throw i.name="MissingTransactionSendingSignerError",i}if(r.filter(i=>!m(i)&&!S(i)).length>1){let i=new Error("More than one `TransactionSendingSigner` was identified.");throw i.name="MultipleTransactionSendingSignersError",i}} | ||
exports.addSignersToInstruction = ke; | ||
exports.addSignersToTransaction = rr; | ||
exports.assertIsKeyPairSigner = ot; | ||
exports.assertIsMessageModifyingSigner = gt; | ||
exports.assertIsMessagePartialSigner = Vr; | ||
exports.assertIsMessageSigner = ht; | ||
exports.assertIsTransactionModifyingSigner = zt; | ||
exports.assertIsTransactionPartialSigner = Yr; | ||
exports.assertIsTransactionSendingSigner = vt; | ||
exports.assertIsTransactionSigner = $t; | ||
exports.createNoopSigner = At; | ||
exports.createSignableMessage = ci; | ||
exports.createSignerFromKeyPair = Wn; | ||
exports.generateKeyPairSigner = st; | ||
exports.addSignersToTransaction = tr; | ||
exports.assertIsKeyPairSigner = st; | ||
exports.assertIsMessageModifyingSigner = ft; | ||
exports.assertIsMessagePartialSigner = Gr; | ||
exports.assertIsMessageSigner = yt; | ||
exports.assertIsTransactionModifyingSigner = Et; | ||
exports.assertIsTransactionPartialSigner = Xr; | ||
exports.assertIsTransactionSendingSigner = Ct; | ||
exports.assertIsTransactionSigner = Ut; | ||
exports.assertIsTransactionWithSingleSendingSigner = Vn; | ||
exports.createNoopSigner = bt; | ||
exports.createSignableMessage = di; | ||
exports.createSignerFromKeyPair = Ln; | ||
exports.generateKeyPairSigner = at; | ||
exports.getSignersFromInstruction = Me; | ||
exports.getSignersFromTransaction = _; | ||
exports.isKeyPairSigner = Ln; | ||
exports.isMessageModifyingSigner = ie; | ||
exports.isMessagePartialSigner = D; | ||
exports.getSignersFromTransaction = v; | ||
exports.isKeyPairSigner = Wn; | ||
exports.isMessageModifyingSigner = te; | ||
exports.isMessagePartialSigner = k; | ||
exports.isMessageSigner = _n; | ||
exports.isTransactionModifyingSigner = A; | ||
exports.isTransactionPartialSigner = p; | ||
exports.isTransactionSendingSigner = M; | ||
exports.isTransactionSigner = W; | ||
exports.isTransactionModifyingSigner = S; | ||
exports.isTransactionPartialSigner = m; | ||
exports.isTransactionSendingSigner = b; | ||
exports.isTransactionSigner = _; | ||
exports.isTransactionWithSingleSendingSigner = Ti; | ||
exports.partiallySignTransactionWithSigners = Fn; | ||
exports.signAndSendTransactionWithSigners = ni; | ||
exports.signTransactionWithSigners = ei; | ||
exports.signAndSendTransactionWithSigners = ri; | ||
exports.signTransactionWithSigners = ni; | ||
@@ -40,0 +42,0 @@ return exports; |
@@ -14,3 +14,4 @@ export * from './account-signer-meta'; | ||
export * from './transaction-signer'; | ||
export * from './transaction-with-single-sending-signer'; | ||
export * from './types'; | ||
//# sourceMappingURL=index.d.ts.map |
import { SignatureBytes } from '@solana/keys'; | ||
import { CompilableTransaction, IFullySignedTransaction, ITransactionWithSignatures } from '@solana/transactions'; | ||
import { ITransactionWithSigners } from './account-signer-meta'; | ||
import { ITransactionWithSingleSendingSigner } from './transaction-with-single-sending-signer'; | ||
type CompilableTransactionWithSigners = CompilableTransaction & ITransactionWithSigners & Partial<ITransactionWithSignatures>; | ||
@@ -28,7 +29,6 @@ /** | ||
*/ | ||
export declare function signAndSendTransactionWithSigners<TTransaction extends CompilableTransactionWithSigners = CompilableTransactionWithSigners>(transaction: TTransaction, config?: { | ||
export declare function signAndSendTransactionWithSigners<TTransaction extends CompilableTransactionWithSigners & ITransactionWithSingleSendingSigner = CompilableTransactionWithSigners & ITransactionWithSingleSendingSigner>(transaction: TTransaction, config?: { | ||
abortSignal?: AbortSignal; | ||
fallbackSender?: (transaction: TTransaction & IFullySignedTransaction) => Promise<SignatureBytes>; | ||
}): Promise<SignatureBytes>; | ||
export {}; | ||
//# sourceMappingURL=sign-transaction.d.ts.map |
{ | ||
"name": "@solana/signers", | ||
"version": "2.0.0-experimental.d085c72", | ||
"version": "2.0.0-experimental.d3af599", | ||
"description": "An abstraction layer over signing messages and transactions in Solana", | ||
@@ -52,6 +52,6 @@ "exports": { | ||
"dependencies": { | ||
"@solana/addresses": "2.0.0-experimental.d085c72", | ||
"@solana/instructions": "2.0.0-experimental.d085c72", | ||
"@solana/keys": "2.0.0-experimental.d085c72", | ||
"@solana/transactions": "2.0.0-experimental.d085c72" | ||
"@solana/addresses": "2.0.0-experimental.d3af599", | ||
"@solana/instructions": "2.0.0-experimental.d3af599", | ||
"@solana/keys": "2.0.0-experimental.d3af599", | ||
"@solana/transactions": "2.0.0-experimental.d3af599" | ||
}, | ||
@@ -58,0 +58,0 @@ "devDependencies": { |
@@ -500,3 +500,3 @@ [![npm][npm-image]][npm-url] | ||
```ts | ||
const mySignedTransaction = partiallySignTransactionWithSigners(myTransaction); | ||
const mySignedTransaction = await partiallySignTransactionWithSigners(myTransaction); | ||
``` | ||
@@ -507,3 +507,3 @@ | ||
```ts | ||
const mySignedTransaction = partiallySignTransactionWithSigners(myTransaction, { | ||
const mySignedTransaction = await partiallySignTransactionWithSigners(myTransaction, { | ||
abortSignal: myAbortController.signal, | ||
@@ -520,6 +520,6 @@ }); | ||
```ts | ||
const mySignedTransaction = signTransactionWithSigners(myTransaction); | ||
const mySignedTransaction = await signTransactionWithSigners(myTransaction); | ||
// With additional config. | ||
const mySignedTransaction = signTransactionWithSigners(myTransaction, { | ||
const mySignedTransaction = await signTransactionWithSigners(myTransaction, { | ||
abortSignal: myAbortController.signal, | ||
@@ -537,6 +537,6 @@ }); | ||
```ts | ||
const myTransactionSignature = signAndSendTransactionWithSigners(myTransaction); | ||
const myTransactionSignature = await signAndSendTransactionWithSigners(myTransaction); | ||
// With additional config. | ||
const myTransactionSignature = signAndSendTransactionWithSigners(myTransaction, { | ||
const myTransactionSignature = await signAndSendTransactionWithSigners(myTransaction, { | ||
abortSignal: myAbortController.signal, | ||
@@ -546,20 +546,30 @@ }); | ||
Similarly to the `partiallySignTransactionWithSigners` function, it first uses all `TransactionModifyingSigners` sequentially before using all `TransactionPartialSigners` in parallel. It then sends the transaction using the first `TransactionSendingSigner` it finds. Any other sending signer that does not implement another transaction signer interface will be ignored. | ||
Similarly to the `partiallySignTransactionWithSigners` function, it first uses all `TransactionModifyingSigners` sequentially before using all `TransactionPartialSigners` in parallel. It then sends the transaction using the `TransactionSendingSigner` it identified. | ||
If no `TransactionSendingSigner` is extracted from the transaction or explicitly provided, the `fallbackSender` third argument will be used to send the transaction. If no fallback sender is provided and no sending signer is identified, an error will be thrown. | ||
Here as well, composite transaction signers are treated such that at least one sending signer is used if any. When a `TransactionSigner` implements more than one interface, use it as a: | ||
- `TransactionSendingSigner`, if no other `TransactionSendingSigner` exists. | ||
- `TransactionModifyingSigner`, if no other `TransactionModifyingSigner` exists. | ||
- `TransactionPartialSigner`, otherwise. | ||
The provided transaction must be of type `ITransactionWithSingleSendingSigner` meaning that it must contain exactly one `TransactionSendingSigner` inside its account metas. If more than one composite signers implement the `TransactionSendingSigner` interface, one of them will be selected as the sending signer. | ||
Therefore, you may use the `assertIsTransactionWithSingleSendingSigner()` function to ensure the transaction is of the expected type. | ||
```ts | ||
const fallbackSender = async (transaction: CompilableTransaction) => { | ||
const encodedTransaction = getBase64EncodedWireTransaction(transaction); | ||
const signature = await rpc.sendTransaction(encodedTransaction).send(); | ||
return getBase58Encoder().encode(signature); | ||
}; | ||
const myTransactionSignature = signAndSendTransactionWithSigners(myTransaction, { fallbackSender }); | ||
assertIsTransactionWithSingleSendingSigner(myTransaction); | ||
const myTransactionSignature = await signAndSendTransactionWithSigners(myTransaction); | ||
``` | ||
Here as well, composite transaction signers are treated such that at least one sending signer is used if any. When a `TransactionSigner` implements more than one interface, use it as a: | ||
Alternatively, you may use the `isTransactionWithSingleSendingSigner()` function to provide a fallback in case the transaction does not contain any sending signer. | ||
- `TransactionSendingSigner`, if no other `TransactionSendingSigner` exist. | ||
- `TransactionModifyingSigner`, if no other `TransactionModifyingSigner` exist. | ||
- `TransactionPartialSigner`, otherwise. | ||
```ts | ||
let transactionSignature: SignatureBytes; | ||
if (isTransactionWithSingleSendingSigner(transaction)) { | ||
transactionSignature = await signAndSendTransactionWithSigners(transaction); | ||
} else { | ||
const signedTransaction = await signTransactionWithSigners(transaction); | ||
const encodedTransaction = getBase64EncodedWireTransaction(signedTransaction); | ||
transactionSignature = await rpc.sendTransaction(encodedTransaction).send(); | ||
} | ||
``` |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
602801
51
3538
571
+ Added@solana/addresses@2.0.0-experimental.d3af599(transitive)
+ Added@solana/assertions@2.0.0-experimental.d3af599(transitive)
+ Added@solana/codecs-core@2.0.0-experimental.d3af599(transitive)
+ Added@solana/codecs-data-structures@2.0.0-experimental.d3af599(transitive)
+ Added@solana/codecs-numbers@2.0.0-experimental.d3af599(transitive)
+ Added@solana/codecs-strings@2.0.0-experimental.d3af599(transitive)
+ Added@solana/functional@2.0.0-experimental.d3af599(transitive)
+ Added@solana/instructions@2.0.0-experimental.d3af599(transitive)
+ Added@solana/keys@2.0.0-experimental.d3af599(transitive)
+ Added@solana/transactions@2.0.0-experimental.d3af599(transitive)
- Removed@solana/addresses@2.0.0-experimental.d085c72(transitive)
- Removed@solana/assertions@2.0.0-experimental.d085c72(transitive)
- Removed@solana/codecs-core@2.0.0-experimental.d085c72(transitive)
- Removed@solana/codecs-data-structures@2.0.0-experimental.d085c72(transitive)
- Removed@solana/codecs-numbers@2.0.0-experimental.d085c72(transitive)
- Removed@solana/codecs-strings@2.0.0-experimental.d085c72(transitive)
- Removed@solana/functional@2.0.0-experimental.d085c72(transitive)
- Removed@solana/instructions@2.0.0-experimental.d085c72(transitive)
- Removed@solana/keys@2.0.0-experimental.d085c72(transitive)
- Removed@solana/transactions@2.0.0-experimental.d085c72(transitive)