@notabene/javascript-sdk 2.10.0-next.4 → 2.11.0-next.2

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 (136) hide show
  1. package/dist/cjs/notabene.cjs +1 -1
  2. package/dist/cjs/notabene.d.ts +74 -1
  3. package/dist/cjs/package.json +1 -1
  4. package/dist/esm/notabene.d.ts +74 -1
  5. package/dist/esm/notabene.js +18 -18
  6. package/dist/esm/package.json +1 -1
  7. package/dist/notabene.d.ts +74 -1
  8. package/dist/notabene.js +18 -18
  9. package/docs/README.md +9 -4
  10. package/docs/_media/TransactionOptions.md +17 -7
  11. package/docs/_media/getRefreshResult.md +1 -1
  12. package/docs/ivms/types/enumerations/PayloadVersionCode.md +2 -2
  13. package/docs/ivms/types/interfaces/PayloadMetadata.md +2 -2
  14. package/docs/ivms/types/type-aliases/Address.md +1 -1
  15. package/docs/ivms/types/type-aliases/AddressTypeCode.md +1 -1
  16. package/docs/ivms/types/type-aliases/Beneficiary.md +1 -1
  17. package/docs/ivms/types/type-aliases/BeneficiaryVASP.md +1 -1
  18. package/docs/ivms/types/type-aliases/DateAndPlaceOfBirth.md +1 -1
  19. package/docs/ivms/types/type-aliases/ISOCountryCode.md +1 -1
  20. package/docs/ivms/types/type-aliases/ISODate.md +1 -1
  21. package/docs/ivms/types/type-aliases/IVMS101.md +1 -1
  22. package/docs/ivms/types/type-aliases/IntermediaryVASP.md +1 -1
  23. package/docs/ivms/types/type-aliases/LegalPerson.md +1 -1
  24. package/docs/ivms/types/type-aliases/LegalPersonName.md +1 -1
  25. package/docs/ivms/types/type-aliases/LegalPersonNameID.md +1 -1
  26. package/docs/ivms/types/type-aliases/LegalPersonNameTypeCode.md +1 -1
  27. package/docs/ivms/types/type-aliases/LocalLegalPersonNameID.md +1 -1
  28. package/docs/ivms/types/type-aliases/LocalNaturalPersonNameID.md +1 -1
  29. package/docs/ivms/types/type-aliases/NationalIdentification.md +1 -1
  30. package/docs/ivms/types/type-aliases/NationalIdentifierTypeCode.md +1 -1
  31. package/docs/ivms/types/type-aliases/NaturalPerson.md +1 -1
  32. package/docs/ivms/types/type-aliases/NaturalPersonName.md +1 -1
  33. package/docs/ivms/types/type-aliases/NaturalPersonNameID.md +1 -1
  34. package/docs/ivms/types/type-aliases/NaturalPersonNameTypeCode.md +1 -1
  35. package/docs/ivms/types/type-aliases/OriginatingVASP.md +1 -1
  36. package/docs/ivms/types/type-aliases/Originator.md +1 -1
  37. package/docs/ivms/types/type-aliases/Person.md +1 -1
  38. package/docs/ivms/types/type-aliases/TransferPath.md +1 -1
  39. package/docs/ivms/types/type-aliases/TransliterationMethodCode.md +1 -1
  40. package/docs/notabene/classes/ConnectionManager.md +5 -5
  41. package/docs/notabene/classes/EmbeddedComponent.md +17 -17
  42. package/docs/notabene/classes/default.md +7 -7
  43. package/docs/notabene/functions/decodeFragmentToObject.md +1 -1
  44. package/docs/notabene/functions/getRefreshResult.md +1 -1
  45. package/docs/notabene/interfaces/ConnectionData.md +4 -4
  46. package/docs/notabene/interfaces/ConnectionMetadata.md +3 -3
  47. package/docs/notabene/interfaces/ConnectionResponse.md +6 -6
  48. package/docs/notabene/interfaces/NotabeneConfig.md +5 -5
  49. package/docs/notabene/type-aliases/ConnectionResult.md +1 -1
  50. package/docs/notabene/type-aliases/ConnectionStatus.md +1 -1
  51. package/docs/notabene/type-aliases/MessageCallback.md +1 -1
  52. package/docs/notabene/type-aliases/TransactionType.md +1 -1
  53. package/docs/types/README.md +2 -0
  54. package/docs/types/enumerations/AgentType.md +2 -2
  55. package/docs/types/enumerations/CMType.md +27 -7
  56. package/docs/types/enumerations/ErrorIdentifierCode.md +4 -4
  57. package/docs/types/enumerations/HMType.md +2 -2
  58. package/docs/types/enumerations/PersonType.md +3 -3
  59. package/docs/types/enumerations/ProofStatus.md +4 -4
  60. package/docs/types/enumerations/ProofTypes.md +30 -18
  61. package/docs/types/enumerations/Status.md +5 -5
  62. package/docs/types/enumerations/VASPSearchControl.md +2 -2
  63. package/docs/types/enumerations/ValidationSections.md +4 -4
  64. package/docs/types/interfaces/Account.md +5 -5
  65. package/docs/types/interfaces/Agent.md +6 -6
  66. package/docs/types/interfaces/CallbackOptions.md +2 -2
  67. package/docs/types/interfaces/ComponentRequest.md +2 -2
  68. package/docs/types/interfaces/ComponentResponse.md +4 -4
  69. package/docs/types/interfaces/ConnectionRecord.md +7 -7
  70. package/docs/types/interfaces/ConnectionRequest.md +3 -3
  71. package/docs/types/interfaces/Counterparty.md +10 -10
  72. package/docs/types/interfaces/DeclarationProof.md +6 -6
  73. package/docs/types/interfaces/Deposit.md +12 -12
  74. package/docs/types/interfaces/DepositRequest.md +7 -7
  75. package/docs/types/interfaces/DepositRequestOptions.md +1 -1
  76. package/docs/types/interfaces/DepositTransaction.md +10 -10
  77. package/docs/types/interfaces/LegalPerson.md +13 -13
  78. package/docs/types/interfaces/MicroTransferProof.md +9 -9
  79. package/docs/types/interfaces/NaturalPerson.md +13 -13
  80. package/docs/types/interfaces/OwnershipProof.md +4 -4
  81. package/docs/types/interfaces/RefreshSource.md +2 -2
  82. package/docs/types/interfaces/Refreshable.md +1 -1
  83. package/docs/types/interfaces/ScreenshotProof.md +5 -5
  84. package/docs/types/interfaces/SignatureProof.md +14 -12
  85. package/docs/types/interfaces/ThresholdOptions.md +3 -3
  86. package/docs/types/interfaces/Transaction.md +9 -9
  87. package/docs/types/interfaces/TransactionOptions.md +17 -7
  88. package/docs/types/interfaces/TransactionResponse.md +9 -9
  89. package/docs/types/interfaces/VASP.md +19 -9
  90. package/docs/types/interfaces/Wallet.md +8 -8
  91. package/docs/types/interfaces/Withdrawal.md +11 -11
  92. package/docs/types/type-aliases/BlockchainAddress.md +1 -1
  93. package/docs/types/type-aliases/CAIP10.md +1 -1
  94. package/docs/types/type-aliases/CAIP19.md +1 -1
  95. package/docs/types/type-aliases/CAIP2.md +1 -1
  96. package/docs/types/type-aliases/CAIP220.md +1 -1
  97. package/docs/types/type-aliases/Cancel.md +1 -1
  98. package/docs/types/type-aliases/Completed.md +1 -1
  99. package/docs/types/type-aliases/ComponentMessage.md +5 -2
  100. package/docs/types/type-aliases/ConnectionOptions.md +1 -1
  101. package/docs/types/type-aliases/CounterpartyAssistConfig.md +1 -1
  102. package/docs/types/type-aliases/CryptoCredential.md +1 -1
  103. package/docs/types/type-aliases/DID.md +1 -1
  104. package/docs/types/type-aliases/DTI.md +1 -1
  105. package/docs/types/type-aliases/Destination.md +1 -1
  106. package/docs/types/type-aliases/Error.md +1 -1
  107. package/docs/types/type-aliases/FieldOptions.md +2 -2
  108. package/docs/types/type-aliases/FieldTypes.md +1 -1
  109. package/docs/types/type-aliases/HostMessage.md +1 -1
  110. package/docs/types/type-aliases/ISOCurrency.md +1 -1
  111. package/docs/types/type-aliases/Info.md +37 -0
  112. package/docs/types/type-aliases/InvalidValue.md +1 -1
  113. package/docs/types/type-aliases/LEI.md +1 -1
  114. package/docs/types/type-aliases/LegalPersonFieldName.md +1 -1
  115. package/docs/types/type-aliases/LegalPersonFields.md +1 -1
  116. package/docs/types/type-aliases/NationalIdentifierTypeFieldOptions.md +1 -1
  117. package/docs/types/type-aliases/NaturalPersonFieldName.md +1 -1
  118. package/docs/types/type-aliases/NaturalPersonFields.md +1 -1
  119. package/docs/types/type-aliases/NotabeneAsset.md +1 -1
  120. package/docs/types/type-aliases/Ready.md +1 -1
  121. package/docs/types/type-aliases/ResizeRequest.md +1 -1
  122. package/docs/types/type-aliases/Source.md +1 -1
  123. package/docs/types/type-aliases/Theme.md +1 -1
  124. package/docs/types/type-aliases/TransactionAsset.md +1 -1
  125. package/docs/types/type-aliases/TravelAddress.md +1 -1
  126. package/docs/types/type-aliases/URI.md +1 -1
  127. package/docs/types/type-aliases/UUID.md +1 -1
  128. package/docs/types/type-aliases/UpdateValue.md +1 -1
  129. package/docs/types/type-aliases/V1Asset.md +1 -1
  130. package/docs/types/type-aliases/V1Transaction.md +1 -1
  131. package/docs/types/type-aliases/VASPOptions.md +1 -1
  132. package/docs/types/type-aliases/ValidationError.md +1 -1
  133. package/docs/types/type-aliases/Warning.md +37 -0
  134. package/package.json +1 -1
  135. package/src/notabene.ts +6 -0
  136. package/src/types.ts +79 -4
@@ -1 +1 @@
1
- "use strict";var U=Object.defineProperty;var R=(t,e,n)=>e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var a=(t,e,n)=>R(t,typeof e!="symbol"?e+"":e,n);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var f=(t=>(t.PRIVATE="WALLET",t.VASP="VASP",t))(f||{}),w=(t=>(t.NATURAL="natural",t.LEGAL="legal",t.SELF="self",t))(w||{}),g=(t=>(t.EMPTY="empty",t.VERIFY="verify",t.PENDING="pending",t.VERIFIED="verified",t.BANNED="banned",t))(g||{}),v=(t=>(t.ALLOWED="allowed",t.PENDING="pending",t))(v||{}),A=(t=>(t.ASSET="asset",t.DESTINATION="destination",t.COUNTERPARTY="counterparty",t.AGENT="agent",t))(A||{}),l=(t=>(t.COMPLETE="complete",t.RESIZE="resize",t.RESULT="result",t.READY="ready",t.INVALID="invalid",t.ERROR="error",t.CANCEL="cancel",t.WARNING="warning",t.INFO="info",t))(l||{}),y=(t=>(t.SERVICE_UNAVAILABLE="SERVICE_UNAVAILABLE",t.WALLET_CONNECTION_FAILED="WALLET_CONNECTION_FAILED",t.WALLET_NOT_SUPPORTED="WALLET_NOT_SUPPORTED",t.TOKEN_INVALID="TOKEN_INVALID",t))(y||{}),p=(t=>(t.UPDATE="update",t.REQUEST_RESPONSE="requestResponse",t))(p||{}),C=(t=>(t.PENDING="pending",t.FAILED="rejected",t.FLAGGED="flagged",t.VERIFIED="verified",t))(C||{}),I=(t=>(t.SelfDeclaration="self-declaration",t.SIWE="siwe",t.SIWX="siwx",t.EIP191="eip-191",t.EIP712="eip-712",t.EIP1271="eip-1271",t.BIP137="bip-137",t.BIP322="bip-322",t.BIP137_XPUB="xpub",t.TIP191="tip-191",t.ED25519="ed25519",t.XRP_ED25519="xrp-ed25519",t.XLM_ED25519="xlm-ed25519",t.CIP8="cip-8",t.MicroTransfer="microtransfer",t.Screenshot="screenshot",t.Connect="connect",t.CONCORDIUM="concordium",t))(I||{});class _{constructor(){a(this,"listeners",new Map);a(this,"port");this.handleMessage=this.handleMessage.bind(this)}setPort(e){this.port=e,this.port.onmessage=this.handleMessage,this.port.start()}on(e,n){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(n),()=>this.off(e,n)}off(e,n){const r=this.listeners.get(e);r&&(r.delete(n),r.size===0&&this.listeners.delete(e))}handleMessage(e){const n=e.data;if(typeof n=="object"&&n!==null&&"type"in n){const r=n.type,s=this.listeners.get(r);s&&s.forEach(i=>i(n))}}send(e){this.port&&this.port.postMessage(e)}}class b{constructor(e,n,r){a(this,"_url");a(this,"_value");a(this,"_options");a(this,"_errors",[]);a(this,"iframe");a(this,"eventManager");a(this,"modal");this._url=e,this._value=n,this._options=r,this.eventManager=new _,this.on(l.INVALID,s=>{s.type===l.INVALID&&(this._errors=s.errors,this._value=s.value)}),this.on(l.RESIZE,s=>{s.type===l.RESIZE&&this.iframe&&(this.iframe.style.height=`${s.height}px`)})}get url(){return this._url}get value(){return this._value}get options(){return this._options}get errors(){return this._errors}open(){document.location.href=this.url}mount(e){const n=document.querySelector(e);if(!n)throw new Error(`parentID ${e} not found`);this.embed(n)}embed(e,n=!1){var r,s;this.removeEmbed(),this.iframe=document.createElement("iframe"),this.iframe.src=this.url+(n?"":"&embedded=true"),this.iframe.allow="web-share; clipboard-write; hid; bluetooth;",this.iframe.style.width="100%",this.iframe.style.height="0px",this.iframe.style.border="none",this.iframe.style.overflow="hidden",this.iframe.scrolling="no",e.appendChild(this.iframe),window.addEventListener("message",i=>{var o,c;i.source===((o=this.iframe)==null?void 0:o.contentWindow)&&((c=this.eventManager)==null||c.setPort(i.ports[0]))}),(s=(r=this.iframe)==null?void 0:r.contentWindow)==null||s.focus()}removeEmbed(){this.iframe&&this.iframe.remove()}send(e){this.eventManager.send(e)}on(e,n){return this.eventManager.on(e,n)}off(e,n){this.eventManager.off(e,n)}update(e,n){this._value=e,n&&(this._options=n),this.send({type:p.UPDATE,value:e,options:this._options})}completion(){return new Promise((e,n)=>{let r,s,i;function o(){r&&r(),s&&s(),i&&i()}r=this.on(l.COMPLETE,c=>{e(c.response),o()}),s=this.on(l.CANCEL,()=>{n(new Error("User cancelled")),o()}),i=this.on("error",c=>{n(new Error(c.message)),o()})})}async openModal(){this.modal&&this.closeModal(),this.modal=document.createElement("dialog"),this.modal.style.border="none",this.modal.style.backgroundColor="white",this.modal.style.maxWidth="100vw",this.modal.style.maxHeight="100vh",this.modal.style.width="600px",this.modal.style.height="600px",document.body.appendChild(this.modal),this.embed(this.modal,!0);const e=this.on(l.CANCEL,()=>{this.closeModal()}),n=this.on(l.COMPLETE,()=>{this.closeModal()});return this.modal.showModal(),this.modal.addEventListener("click",()=>{this.closeModal()}),this.completion().finally(()=>{e(),n()})}closeModal(){var e;this.modal&&((e=this.modal)==null||e.close(),this.modal.remove(),this.modal=void 0)}async popup(){const e=window.open(this.url,"_blank","popup=true,width=600,height=600");window.addEventListener("message",s=>{var i;s.source===e&&(console.log("received message from popup",s.data),(i=this.eventManager)==null||i.setPort(s.ports[0]))});const n=this.on(l.CANCEL,()=>{e==null||e.close()}),r=this.on(l.COMPLETE,()=>{e==null||e.close()});return this.completion().finally(()=>{n(),r()})}}function O(t){return Object.entries(t).map(([e,n])=>{if(n==null)return;const r=encodeURIComponent(e),s=encodeURIComponent(typeof n=="object"?JSON.stringify(n):String(n));return`${r}=${s}`}).filter(e=>e!==void 0).join("&")}function D(t){const e=t.slice(1);return e?e.split("&").filter(Boolean).reduce((r,s)=>{const[i,o]=s.split("=");return i&&(r[decodeURIComponent(i)]=o?decodeURIComponent(o):""),r},{}):{}}async function E(t,e){const n=JSON.stringify(t),r=new TextEncoder,s=e?m(e):crypto.getRandomValues(new Uint8Array(32)),i=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!1,["encrypt"]),o=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:o},i,r.encode(n));return{ciphertext:`${u(o)}-${u(c)}`,key:u(s)}}async function N({ciphertext:t,key:e}){const[n,r]=t.split("-"),s=new Uint8Array(atob(e).split("").map(L=>L.charCodeAt(0))),i=m(n),o=m(r),c=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!1,["decrypt"]),d=new TextDecoder,h=await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(i)},c,o);return JSON.parse(d.decode(h))}function u(t){const e=new Uint8Array(t);let n="";for(let r=0;r<e.length;r++)n+=String.fromCharCode(e[r]);return btoa(n)}function m(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}async function x(t){const e=await fetch(t.url,{method:"GET"});if(!e.ok)throw new Error(`Failed to get connection: ${await e.text()}`);const n=await e.json();if(!n.id||!n.metadata||!n.status||!n.sealed)throw new Error("Data missing from server response");const r={id:n.id,metadata:n.metadata,status:n.status};if(n.status==="closed")return r;const s=n.sealed[n.sealed.length-1],i=await N({ciphertext:s,key:t.key});return n.status==="completed"?{...r,result:i.result}:{...r,tx:i.tx}}class S{constructor(e){a(this,"endpoint");this.endpoint=e}async create(e,n){const r=await E(e),s={metadata:n,sealed:r.ciphertext},i=await fetch(this.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok)throw new Error(`Failed to create connection: ${await i.text()}`);const o=await i.json();return{id:o.id,version:o.version,status:o.status,metadata:n,data:e,key:r.key}}async update(e,n,r,s,i){const o=await E(n,i),c={sealed:o.ciphertext,version:r,status:s},d=await fetch(`${this.endpoint}/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!d.ok)throw new Error(`Failed to update connection: ${await d.text()}`);const h=await d.json();return{id:h.id,metadata:h.metadata,version:h.version,status:h.status,data:n,key:o.key}}async get(e,n){const r=await fetch(`${this.endpoint}/${e}`,{method:"GET"});if(!r.ok)throw new Error(`Failed to get connection: ${await r.text()}`);const s=await r.json(),i=s.sealed[s.sealed.length-1],o=await N({ciphertext:i,key:n});return{id:s.id,status:s.status,version:s.version,metadata:s.metadata,data:o,key:n}}async close(e){const n=await fetch(`${this.endpoint}/${e}`,{method:"DELETE"});if(!n.ok)throw new Error(`Failed to close connection: ${await n.text()}`)}}class M{constructor(e){a(this,"nodeUrl");a(this,"authToken");a(this,"uxUrl");a(this,"theme");a(this,"locale");this.uxUrl=e.uxUrl||"https://connect.notabene.id",this.nodeUrl=e.nodeUrl,this.authToken=e.authToken,this.theme=e.theme,this.locale=e.locale}componentUrl(e,n,r,s){const i=new URL(this.uxUrl);i.pathname=e;const o=O({authToken:this.authToken,value:n,configuration:r});return i.hash=o,this.nodeUrl&&i.searchParams.set("nodeUrl",this.nodeUrl),this.theme&&i.searchParams.set("theme",JSON.stringify(this.theme)),this.locale&&i.searchParams.set("locale",this.locale),s&&(s.callback&&i.searchParams.set("callback_url",s.callback),s.redirectUri&&i.searchParams.set("redirect_uri",s.redirectUri)),i.toString()}createComponent(e,n,r,s){return new b(this.componentUrl(e,n,r,s),n,r)}createWithdrawalAssist(e,n,r){return this.createComponent("withdrawal-assist",e,n,r)}createConnectWallet(e,n,r){return this.createComponent("connect",e,n,r)}createDepositRequest(e,n,r){return this.createComponent("deposit-request",e,n,r)}createDepositAssist(e,n,r){return this.createComponent("deposit-assist",e,n,r)}}exports.AgentType=f;exports.CMType=l;exports.ConnectionManager=S;exports.EmbeddedComponent=b;exports.ErrorIdentifierCode=y;exports.HMType=p;exports.PersonType=w;exports.ProofStatus=C;exports.ProofTypes=I;exports.Status=g;exports.VASPSearchControl=v;exports.ValidationSections=A;exports.decodeFragmentToObject=D;exports.default=M;exports.getRefreshResult=x;
1
+ "use strict";var U=Object.defineProperty;var O=(t,e,n)=>e in t?U(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var a=(t,e,n)=>O(t,typeof e!="symbol"?e+"":e,n);Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var f=(t=>(t.PRIVATE="WALLET",t.VASP="VASP",t))(f||{}),w=(t=>(t.NATURAL="natural",t.LEGAL="legal",t.SELF="self",t))(w||{}),g=(t=>(t.EMPTY="empty",t.VERIFY="verify",t.PENDING="pending",t.VERIFIED="verified",t.BANNED="banned",t))(g||{}),v=(t=>(t.ALLOWED="allowed",t.PENDING="pending",t))(v||{}),A=(t=>(t.ASSET="asset",t.DESTINATION="destination",t.COUNTERPARTY="counterparty",t.AGENT="agent",t))(A||{}),l=(t=>(t.COMPLETE="complete",t.RESIZE="resize",t.RESULT="result",t.READY="ready",t.INVALID="invalid",t.ERROR="error",t.CANCEL="cancel",t.WARNING="warning",t.INFO="info",t))(l||{}),y=(t=>(t.SERVICE_UNAVAILABLE="SERVICE_UNAVAILABLE",t.WALLET_CONNECTION_FAILED="WALLET_CONNECTION_FAILED",t.WALLET_NOT_SUPPORTED="WALLET_NOT_SUPPORTED",t.TOKEN_INVALID="TOKEN_INVALID",t))(y||{}),p=(t=>(t.UPDATE="update",t.REQUEST_RESPONSE="requestResponse",t))(p||{}),C=(t=>(t.PENDING="pending",t.FAILED="rejected",t.FLAGGED="flagged",t.VERIFIED="verified",t))(C||{}),I=(t=>(t.SelfDeclaration="self-declaration",t.SIWE="siwe",t.SIWX="siwx",t.SOL_SIWX="sol-siwx",t.EIP191="eip-191",t.EIP712="eip-712",t.EIP1271="eip-1271",t.BIP137="bip-137",t.BIP322="bip-322",t.BIP137_XPUB="xpub",t.TIP191="tip-191",t.ED25519="ed25519",t.XRP_ED25519="xrp-ed25519",t.XLM_ED25519="xlm-ed25519",t.CIP8="cip-8",t.COSMOS="cosmos-ecdsa",t.MicroTransfer="microtransfer",t.Screenshot="screenshot",t.Connect="connect",t.CONCORDIUM="concordium",t))(I||{});class _{constructor(){a(this,"listeners",new Map);a(this,"port");this.handleMessage=this.handleMessage.bind(this)}setPort(e){this.port=e,this.port.onmessage=this.handleMessage,this.port.start()}on(e,n){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(n),()=>this.off(e,n)}off(e,n){const r=this.listeners.get(e);r&&(r.delete(n),r.size===0&&this.listeners.delete(e))}handleMessage(e){const n=e.data;if(typeof n=="object"&&n!==null&&"type"in n){const r=n.type,s=this.listeners.get(r);s&&s.forEach(i=>i(n))}}send(e){this.port&&this.port.postMessage(e)}}class b{constructor(e,n,r){a(this,"_url");a(this,"_value");a(this,"_options");a(this,"_errors",[]);a(this,"iframe");a(this,"eventManager");a(this,"modal");this._url=e,this._value=n,this._options=r,this.eventManager=new _,this.on(l.INVALID,s=>{s.type===l.INVALID&&(this._errors=s.errors,this._value=s.value)}),this.on(l.RESIZE,s=>{s.type===l.RESIZE&&this.iframe&&(this.iframe.style.height=`${s.height}px`)})}get url(){return this._url}get value(){return this._value}get options(){return this._options}get errors(){return this._errors}open(){document.location.href=this.url}mount(e){const n=document.querySelector(e);if(!n)throw new Error(`parentID ${e} not found`);this.embed(n)}embed(e,n=!1){var r,s;this.removeEmbed(),this.iframe=document.createElement("iframe"),this.iframe.src=this.url+(n?"":"&embedded=true"),this.iframe.allow="web-share; clipboard-write; hid; bluetooth;",this.iframe.style.width="100%",this.iframe.style.height="0px",this.iframe.style.border="none",this.iframe.style.overflow="hidden",this.iframe.scrolling="no",e.appendChild(this.iframe),window.addEventListener("message",i=>{var o,c;i.source===((o=this.iframe)==null?void 0:o.contentWindow)&&((c=this.eventManager)==null||c.setPort(i.ports[0]))}),(s=(r=this.iframe)==null?void 0:r.contentWindow)==null||s.focus()}removeEmbed(){this.iframe&&this.iframe.remove()}send(e){this.eventManager.send(e)}on(e,n){return this.eventManager.on(e,n)}off(e,n){this.eventManager.off(e,n)}update(e,n){this._value=e,n&&(this._options=n),this.send({type:p.UPDATE,value:e,options:this._options})}completion(){return new Promise((e,n)=>{let r,s,i;function o(){r&&r(),s&&s(),i&&i()}r=this.on(l.COMPLETE,c=>{e(c.response),o()}),s=this.on(l.CANCEL,()=>{n(new Error("User cancelled")),o()}),i=this.on("error",c=>{n(new Error(c.message)),o()})})}async openModal(){this.modal&&this.closeModal(),this.modal=document.createElement("dialog"),this.modal.style.border="none",this.modal.style.backgroundColor="white",this.modal.style.maxWidth="100vw",this.modal.style.maxHeight="100vh",this.modal.style.width="600px",this.modal.style.height="600px",document.body.appendChild(this.modal),this.embed(this.modal,!0);const e=this.on(l.CANCEL,()=>{this.closeModal()}),n=this.on(l.COMPLETE,()=>{this.closeModal()});return this.modal.showModal(),this.modal.addEventListener("click",()=>{this.closeModal()}),this.completion().finally(()=>{e(),n()})}closeModal(){var e;this.modal&&((e=this.modal)==null||e.close(),this.modal.remove(),this.modal=void 0)}async popup(){const e=window.open(this.url,"_blank","popup=true,width=600,height=600");window.addEventListener("message",s=>{var i;s.source===e&&(console.log("received message from popup",s.data),(i=this.eventManager)==null||i.setPort(s.ports[0]))});const n=this.on(l.CANCEL,()=>{e==null||e.close()}),r=this.on(l.COMPLETE,()=>{e==null||e.close()});return this.completion().finally(()=>{n(),r()})}}function R(t){return Object.entries(t).map(([e,n])=>{if(n==null)return;const r=encodeURIComponent(e),s=encodeURIComponent(typeof n=="object"?JSON.stringify(n):String(n));return`${r}=${s}`}).filter(e=>e!==void 0).join("&")}function S(t){const e=t.slice(1);return e?e.split("&").filter(Boolean).reduce((r,s)=>{const[i,o]=s.split("=");return i&&(r[decodeURIComponent(i)]=o?decodeURIComponent(o):""),r},{}):{}}async function E(t,e){const n=JSON.stringify(t),r=new TextEncoder,s=e?m(e):crypto.getRandomValues(new Uint8Array(32)),i=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!1,["encrypt"]),o=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:o},i,r.encode(n));return{ciphertext:`${u(o)}-${u(c)}`,key:u(s)}}async function N({ciphertext:t,key:e}){const[n,r]=t.split("-"),s=new Uint8Array(atob(e).split("").map(L=>L.charCodeAt(0))),i=m(n),o=m(r),c=await crypto.subtle.importKey("raw",s,{name:"AES-GCM"},!1,["decrypt"]),d=new TextDecoder,h=await crypto.subtle.decrypt({name:"AES-GCM",iv:new Uint8Array(i)},c,o);return JSON.parse(d.decode(h))}function u(t){const e=new Uint8Array(t);let n="";for(let r=0;r<e.length;r++)n+=String.fromCharCode(e[r]);return btoa(n)}function m(t){const e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}async function x(t){const e=await fetch(t.url,{method:"GET"});if(!e.ok)throw new Error(`Failed to get connection: ${await e.text()}`);const n=await e.json();if(!n.id||!n.metadata||!n.status||!n.sealed)throw new Error("Data missing from server response");const r={id:n.id,metadata:n.metadata,status:n.status};if(n.status==="closed")return r;const s=n.sealed[n.sealed.length-1],i=await N({ciphertext:s,key:t.key});return n.status==="completed"?{...r,result:i.result}:{...r,tx:i.tx}}class D{constructor(e){a(this,"endpoint");this.endpoint=e}async create(e,n){const r=await E(e),s={metadata:n,sealed:r.ciphertext},i=await fetch(this.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)});if(!i.ok)throw new Error(`Failed to create connection: ${await i.text()}`);const o=await i.json();return{id:o.id,version:o.version,status:o.status,metadata:n,data:e,key:r.key}}async update(e,n,r,s,i){const o=await E(n,i),c={sealed:o.ciphertext,version:r,status:s},d=await fetch(`${this.endpoint}/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)});if(!d.ok)throw new Error(`Failed to update connection: ${await d.text()}`);const h=await d.json();return{id:h.id,metadata:h.metadata,version:h.version,status:h.status,data:n,key:o.key}}async get(e,n){const r=await fetch(`${this.endpoint}/${e}`,{method:"GET"});if(!r.ok)throw new Error(`Failed to get connection: ${await r.text()}`);const s=await r.json(),i=s.sealed[s.sealed.length-1],o=await N({ciphertext:i,key:n});return{id:s.id,status:s.status,version:s.version,metadata:s.metadata,data:o,key:n}}async close(e){const n=await fetch(`${this.endpoint}/${e}`,{method:"DELETE"});if(!n.ok)throw new Error(`Failed to close connection: ${await n.text()}`)}}class M{constructor(e){a(this,"nodeUrl");a(this,"authToken");a(this,"uxUrl");a(this,"theme");a(this,"locale");this.uxUrl=e.uxUrl||"https://connect.notabene.id",this.nodeUrl=e.nodeUrl,this.authToken=e.authToken,this.theme=e.theme,this.locale=e.locale}componentUrl(e,n,r,s){const i=new URL(this.uxUrl);i.pathname=e;const o=R({authToken:this.authToken,value:n,configuration:r});return i.hash=o,this.nodeUrl&&i.searchParams.set("nodeUrl",this.nodeUrl),this.theme&&i.searchParams.set("theme",JSON.stringify(this.theme)),this.locale&&i.searchParams.set("locale",this.locale),s&&(s.callback&&i.searchParams.set("callback_url",s.callback),s.redirectUri&&i.searchParams.set("redirect_uri",s.redirectUri)),i.toString()}createComponent(e,n,r,s){return new b(this.componentUrl(e,n,r,s),n,r)}createWithdrawalAssist(e,n,r){return this.createComponent("withdrawal-assist",e,n,r)}createConnectWallet(e,n,r){return this.createComponent("connect",e,n,r)}createDepositRequest(e,n,r){return this.createComponent("deposit-request",e,n,r)}createDepositAssist(e,n,r){return this.createComponent("deposit-assist",e,n,r)}}exports.AgentType=f;exports.CMType=l;exports.ConnectionManager=D;exports.EmbeddedComponent=b;exports.ErrorIdentifierCode=y;exports.HMType=p;exports.PersonType=w;exports.ProofStatus=C;exports.ProofTypes=I;exports.Status=g;exports.VASPSearchControl=v;exports.ValidationSections=A;exports.decodeFragmentToObject=S;exports.default=M;exports.getRefreshResult=x;
@@ -403,6 +403,19 @@ export declare type ConnectionResult<T extends ComponentRequest> = {
403
403
 
404
404
  export declare type ConnectionStatus = 'active' | 'completed' | 'closed';
405
405
 
406
+ /**
407
+ * Metadata for Cosmos ownership proofs
408
+ * @remarks
409
+ * - Includes the public key
410
+ * @public
411
+ */
412
+ export declare interface CosmosMetadata {
413
+ pub_key: {
414
+ type: string;
415
+ value: string;
416
+ };
417
+ }
418
+
406
419
  /**
407
420
  * The counterparty of a transaction.
408
421
  * @public
@@ -1377,6 +1390,8 @@ export declare enum ProofStatus {
1377
1390
  * - SelfDeclaration: User self-declares ownership without cryptographic proof
1378
1391
  * - EIP191: Ethereum personal signature following EIP-191 standard
1379
1392
  * - SIWE: Sign-In with Ethereum message signature (EIP-4361)
1393
+ * - SIWX: Sign-In with X message signature
1394
+ * - SOL_SIWX: Sign-In with Solana message signature (SIWE for Solana)
1380
1395
  * - EIP712: Ethereum typed data signature following EIP-712 standard
1381
1396
  * - BIP137: Bitcoin message signature following BIP-137
1382
1397
  * - BIP322: Bitcoin message signature following BIP-322
@@ -1399,6 +1414,7 @@ export declare enum ProofTypes {
1399
1414
  SelfDeclaration = "self-declaration",
1400
1415
  SIWE = "siwe",
1401
1416
  SIWX = "siwx",
1417
+ SOL_SIWX = "sol-siwx",
1402
1418
  EIP191 = "eip-191",
1403
1419
  EIP712 = "eip-712",
1404
1420
  EIP1271 = "eip-1271",
@@ -1410,6 +1426,7 @@ export declare enum ProofTypes {
1410
1426
  XRP_ED25519 = "xrp-ed25519",
1411
1427
  XLM_ED25519 = "xlm-ed25519",
1412
1428
  CIP8 = "cip-8",
1429
+ COSMOS = "cosmos-ecdsa",
1413
1430
  MicroTransfer = "microtransfer",
1414
1431
  Screenshot = "screenshot",
1415
1432
  Connect = "connect",
@@ -1471,14 +1488,70 @@ export declare interface ScreenshotProof extends OwnershipProof {
1471
1488
  * @public
1472
1489
  */
1473
1490
  export declare interface SignatureProof extends OwnershipProof {
1474
- type: ProofTypes.EIP191 | ProofTypes.EIP712 | ProofTypes.EIP1271 | ProofTypes.BIP137 | ProofTypes.BIP322 | ProofTypes.BIP137_XPUB | ProofTypes.ED25519 | ProofTypes.TIP191 | ProofTypes.SIWX | ProofTypes.SIWE | ProofTypes.CIP8 | ProofTypes.XRP_ED25519 | ProofTypes.CONCORDIUM | ProofTypes.XLM_ED25519;
1491
+ type: ProofTypes.EIP191 | ProofTypes.EIP712 | ProofTypes.EIP1271 | ProofTypes.BIP137 | ProofTypes.BIP322 | ProofTypes.BIP137_XPUB | ProofTypes.ED25519 | ProofTypes.TIP191 | ProofTypes.SIWX | ProofTypes.SOL_SIWX | ProofTypes.SIWE | ProofTypes.CIP8 | ProofTypes.XRP_ED25519 | ProofTypes.CONCORDIUM | ProofTypes.XLM_ED25519 | ProofTypes.COSMOS;
1475
1492
  proof: string;
1476
1493
  attestation: string;
1477
1494
  wallet_provider: string;
1478
1495
  xpub?: string;
1479
1496
  chainSpecificData?: {
1480
1497
  cardanoCoseKey?: string;
1498
+ } | SolanaMetadata | CosmosMetadata;
1499
+ }
1500
+
1501
+ /**
1502
+ * Input for SIWX message signing
1503
+ * Every SIWX message must include the following fields:
1504
+ * - domain
1505
+ * - address
1506
+ * - statement
1507
+ * - uri
1508
+ * - version
1509
+ * - chainId
1510
+ *
1511
+ * Optional fields:
1512
+ * - nonce
1513
+ * - issuedAt
1514
+ * - expirationTime
1515
+ * - notBefore
1516
+ * - requestId
1517
+ * - resources
1518
+ *
1519
+ * @public
1520
+ */
1521
+ export declare interface SIWXInput {
1522
+ domain: string;
1523
+ address: string;
1524
+ statement?: string;
1525
+ uri?: string;
1526
+ version?: string;
1527
+ chainId?: string;
1528
+ nonce?: string;
1529
+ issuedAt?: string;
1530
+ expirationTime?: string;
1531
+ notBefore?: string;
1532
+ requestId?: string;
1533
+ resources?: readonly string[];
1534
+ }
1535
+
1536
+ /**
1537
+ * Metadata for Solana SIWX ownership proofs
1538
+ * @remarks
1539
+ * - Includes the account public key and address
1540
+ * - Includes the signed message
1541
+ * - Includes the signature
1542
+ * - Includes the message
1543
+ *
1544
+ * @see {@link SignatureProof} For signature-based proofs
1545
+ * @public
1546
+ */
1547
+ export declare interface SolanaMetadata {
1548
+ account: {
1549
+ address: string;
1550
+ publicKey: Uint8Array;
1481
1551
  };
1552
+ signedMessage: Uint8Array;
1553
+ signature: Uint8Array;
1554
+ message: SIWXInput;
1482
1555
  }
1483
1556
 
1484
1557
  /**
@@ -10,7 +10,7 @@
10
10
  "author": "Notabene <developers@notabene.id>",
11
11
  "license": "MIT",
12
12
  "packageManager": "yarn@4.5.1",
13
- "version": "2.10.0-next.4",
13
+ "version": "2.11.0-next.2",
14
14
  "source": "src/notabene.ts",
15
15
  "main": "dist/cjs/notabene.cjs",
16
16
  "module": "dist/esm/notabene.js",
@@ -403,6 +403,19 @@ export declare type ConnectionResult<T extends ComponentRequest> = {
403
403
 
404
404
  export declare type ConnectionStatus = 'active' | 'completed' | 'closed';
405
405
 
406
+ /**
407
+ * Metadata for Cosmos ownership proofs
408
+ * @remarks
409
+ * - Includes the public key
410
+ * @public
411
+ */
412
+ export declare interface CosmosMetadata {
413
+ pub_key: {
414
+ type: string;
415
+ value: string;
416
+ };
417
+ }
418
+
406
419
  /**
407
420
  * The counterparty of a transaction.
408
421
  * @public
@@ -1377,6 +1390,8 @@ export declare enum ProofStatus {
1377
1390
  * - SelfDeclaration: User self-declares ownership without cryptographic proof
1378
1391
  * - EIP191: Ethereum personal signature following EIP-191 standard
1379
1392
  * - SIWE: Sign-In with Ethereum message signature (EIP-4361)
1393
+ * - SIWX: Sign-In with X message signature
1394
+ * - SOL_SIWX: Sign-In with Solana message signature (SIWE for Solana)
1380
1395
  * - EIP712: Ethereum typed data signature following EIP-712 standard
1381
1396
  * - BIP137: Bitcoin message signature following BIP-137
1382
1397
  * - BIP322: Bitcoin message signature following BIP-322
@@ -1399,6 +1414,7 @@ export declare enum ProofTypes {
1399
1414
  SelfDeclaration = "self-declaration",
1400
1415
  SIWE = "siwe",
1401
1416
  SIWX = "siwx",
1417
+ SOL_SIWX = "sol-siwx",
1402
1418
  EIP191 = "eip-191",
1403
1419
  EIP712 = "eip-712",
1404
1420
  EIP1271 = "eip-1271",
@@ -1410,6 +1426,7 @@ export declare enum ProofTypes {
1410
1426
  XRP_ED25519 = "xrp-ed25519",
1411
1427
  XLM_ED25519 = "xlm-ed25519",
1412
1428
  CIP8 = "cip-8",
1429
+ COSMOS = "cosmos-ecdsa",
1413
1430
  MicroTransfer = "microtransfer",
1414
1431
  Screenshot = "screenshot",
1415
1432
  Connect = "connect",
@@ -1471,14 +1488,70 @@ export declare interface ScreenshotProof extends OwnershipProof {
1471
1488
  * @public
1472
1489
  */
1473
1490
  export declare interface SignatureProof extends OwnershipProof {
1474
- type: ProofTypes.EIP191 | ProofTypes.EIP712 | ProofTypes.EIP1271 | ProofTypes.BIP137 | ProofTypes.BIP322 | ProofTypes.BIP137_XPUB | ProofTypes.ED25519 | ProofTypes.TIP191 | ProofTypes.SIWX | ProofTypes.SIWE | ProofTypes.CIP8 | ProofTypes.XRP_ED25519 | ProofTypes.CONCORDIUM | ProofTypes.XLM_ED25519;
1491
+ type: ProofTypes.EIP191 | ProofTypes.EIP712 | ProofTypes.EIP1271 | ProofTypes.BIP137 | ProofTypes.BIP322 | ProofTypes.BIP137_XPUB | ProofTypes.ED25519 | ProofTypes.TIP191 | ProofTypes.SIWX | ProofTypes.SOL_SIWX | ProofTypes.SIWE | ProofTypes.CIP8 | ProofTypes.XRP_ED25519 | ProofTypes.CONCORDIUM | ProofTypes.XLM_ED25519 | ProofTypes.COSMOS;
1475
1492
  proof: string;
1476
1493
  attestation: string;
1477
1494
  wallet_provider: string;
1478
1495
  xpub?: string;
1479
1496
  chainSpecificData?: {
1480
1497
  cardanoCoseKey?: string;
1498
+ } | SolanaMetadata | CosmosMetadata;
1499
+ }
1500
+
1501
+ /**
1502
+ * Input for SIWX message signing
1503
+ * Every SIWX message must include the following fields:
1504
+ * - domain
1505
+ * - address
1506
+ * - statement
1507
+ * - uri
1508
+ * - version
1509
+ * - chainId
1510
+ *
1511
+ * Optional fields:
1512
+ * - nonce
1513
+ * - issuedAt
1514
+ * - expirationTime
1515
+ * - notBefore
1516
+ * - requestId
1517
+ * - resources
1518
+ *
1519
+ * @public
1520
+ */
1521
+ export declare interface SIWXInput {
1522
+ domain: string;
1523
+ address: string;
1524
+ statement?: string;
1525
+ uri?: string;
1526
+ version?: string;
1527
+ chainId?: string;
1528
+ nonce?: string;
1529
+ issuedAt?: string;
1530
+ expirationTime?: string;
1531
+ notBefore?: string;
1532
+ requestId?: string;
1533
+ resources?: readonly string[];
1534
+ }
1535
+
1536
+ /**
1537
+ * Metadata for Solana SIWX ownership proofs
1538
+ * @remarks
1539
+ * - Includes the account public key and address
1540
+ * - Includes the signed message
1541
+ * - Includes the signature
1542
+ * - Includes the message
1543
+ *
1544
+ * @see {@link SignatureProof} For signature-based proofs
1545
+ * @public
1546
+ */
1547
+ export declare interface SolanaMetadata {
1548
+ account: {
1549
+ address: string;
1550
+ publicKey: Uint8Array;
1481
1551
  };
1552
+ signedMessage: Uint8Array;
1553
+ signature: Uint8Array;
1554
+ message: SIWXInput;
1482
1555
  }
1483
1556
 
1484
1557
  /**
@@ -1,8 +1,8 @@
1
1
  var v = Object.defineProperty;
2
2
  var g = (t, e, n) => e in t ? v(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
3
3
  var a = (t, e, n) => g(t, typeof e != "symbol" ? e + "" : e, n);
4
- var A = /* @__PURE__ */ ((t) => (t.PRIVATE = "WALLET", t.VASP = "VASP", t))(A || {}), y = /* @__PURE__ */ ((t) => (t.NATURAL = "natural", t.LEGAL = "legal", t.SELF = "self", t))(y || {}), I = /* @__PURE__ */ ((t) => (t.EMPTY = "empty", t.VERIFY = "verify", t.PENDING = "pending", t.VERIFIED = "verified", t.BANNED = "banned", t))(I || {}), N = /* @__PURE__ */ ((t) => (t.ALLOWED = "allowed", t.PENDING = "pending", t))(N || {}), L = /* @__PURE__ */ ((t) => (t.ASSET = "asset", t.DESTINATION = "destination", t.COUNTERPARTY = "counterparty", t.AGENT = "agent", t))(L || {}), l = /* @__PURE__ */ ((t) => (t.COMPLETE = "complete", t.RESIZE = "resize", t.RESULT = "result", t.READY = "ready", t.INVALID = "invalid", t.ERROR = "error", t.CANCEL = "cancel", t.WARNING = "warning", t.INFO = "info", t))(l || {}), b = /* @__PURE__ */ ((t) => (t.SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE", t.WALLET_CONNECTION_FAILED = "WALLET_CONNECTION_FAILED", t.WALLET_NOT_SUPPORTED = "WALLET_NOT_SUPPORTED", t.TOKEN_INVALID = "TOKEN_INVALID", t))(b || {}), E = /* @__PURE__ */ ((t) => (t.UPDATE = "update", t.REQUEST_RESPONSE = "requestResponse", t))(E || {}), C = /* @__PURE__ */ ((t) => (t.PENDING = "pending", t.FAILED = "rejected", t.FLAGGED = "flagged", t.VERIFIED = "verified", t))(C || {}), U = /* @__PURE__ */ ((t) => (t.SelfDeclaration = "self-declaration", t.SIWE = "siwe", t.SIWX = "siwx", t.EIP191 = "eip-191", t.EIP712 = "eip-712", t.EIP1271 = "eip-1271", t.BIP137 = "bip-137", t.BIP322 = "bip-322", t.BIP137_XPUB = "xpub", t.TIP191 = "tip-191", t.ED25519 = "ed25519", t.XRP_ED25519 = "xrp-ed25519", t.XLM_ED25519 = "xlm-ed25519", t.CIP8 = "cip-8", t.MicroTransfer = "microtransfer", t.Screenshot = "screenshot", t.Connect = "connect", t.CONCORDIUM = "concordium", t))(U || {});
5
- class R {
4
+ var A = /* @__PURE__ */ ((t) => (t.PRIVATE = "WALLET", t.VASP = "VASP", t))(A || {}), I = /* @__PURE__ */ ((t) => (t.NATURAL = "natural", t.LEGAL = "legal", t.SELF = "self", t))(I || {}), y = /* @__PURE__ */ ((t) => (t.EMPTY = "empty", t.VERIFY = "verify", t.PENDING = "pending", t.VERIFIED = "verified", t.BANNED = "banned", t))(y || {}), N = /* @__PURE__ */ ((t) => (t.ALLOWED = "allowed", t.PENDING = "pending", t))(N || {}), L = /* @__PURE__ */ ((t) => (t.ASSET = "asset", t.DESTINATION = "destination", t.COUNTERPARTY = "counterparty", t.AGENT = "agent", t))(L || {}), l = /* @__PURE__ */ ((t) => (t.COMPLETE = "complete", t.RESIZE = "resize", t.RESULT = "result", t.READY = "ready", t.INVALID = "invalid", t.ERROR = "error", t.CANCEL = "cancel", t.WARNING = "warning", t.INFO = "info", t))(l || {}), C = /* @__PURE__ */ ((t) => (t.SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE", t.WALLET_CONNECTION_FAILED = "WALLET_CONNECTION_FAILED", t.WALLET_NOT_SUPPORTED = "WALLET_NOT_SUPPORTED", t.TOKEN_INVALID = "TOKEN_INVALID", t))(C || {}), p = /* @__PURE__ */ ((t) => (t.UPDATE = "update", t.REQUEST_RESPONSE = "requestResponse", t))(p || {}), b = /* @__PURE__ */ ((t) => (t.PENDING = "pending", t.FAILED = "rejected", t.FLAGGED = "flagged", t.VERIFIED = "verified", t))(b || {}), U = /* @__PURE__ */ ((t) => (t.SelfDeclaration = "self-declaration", t.SIWE = "siwe", t.SIWX = "siwx", t.SOL_SIWX = "sol-siwx", t.EIP191 = "eip-191", t.EIP712 = "eip-712", t.EIP1271 = "eip-1271", t.BIP137 = "bip-137", t.BIP322 = "bip-322", t.BIP137_XPUB = "xpub", t.TIP191 = "tip-191", t.ED25519 = "ed25519", t.XRP_ED25519 = "xrp-ed25519", t.XLM_ED25519 = "xlm-ed25519", t.CIP8 = "cip-8", t.COSMOS = "cosmos-ecdsa", t.MicroTransfer = "microtransfer", t.Screenshot = "screenshot", t.Connect = "connect", t.CONCORDIUM = "concordium", t))(U || {});
5
+ class O {
6
6
  constructor() {
7
7
  a(this, "listeners", /* @__PURE__ */ new Map());
8
8
  a(this, "port");
@@ -82,7 +82,7 @@ class _ {
82
82
  a(this, "iframe");
83
83
  a(this, "eventManager");
84
84
  a(this, "modal");
85
- this._url = e, this._value = n, this._options = s, this.eventManager = new R(), this.on(l.INVALID, (r) => {
85
+ this._url = e, this._value = n, this._options = s, this.eventManager = new O(), this.on(l.INVALID, (r) => {
86
86
  r.type === l.INVALID && (this._errors = r.errors, this._value = r.value);
87
87
  }), this.on(l.RESIZE, (r) => {
88
88
  r.type === l.RESIZE && this.iframe && (this.iframe.style.height = `${r.height}px`);
@@ -166,7 +166,7 @@ class _ {
166
166
  * @param value - The new transaction value
167
167
  */
168
168
  update(e, n) {
169
- this._value = e, n && (this._options = n), this.send({ type: E.UPDATE, value: e, options: this._options });
169
+ this._value = e, n && (this._options = n), this.send({ type: p.UPDATE, value: e, options: this._options });
170
170
  }
171
171
  /**
172
172
  * Waits for the component to complete and returns the transaction response
@@ -247,7 +247,7 @@ function x(t) {
247
247
  return `${s}=${r}`;
248
248
  }).filter((e) => e !== void 0).join("&");
249
249
  }
250
- function O(t) {
250
+ function D(t) {
251
251
  const e = t.slice(1);
252
252
  return e ? e.split("&").filter(Boolean).reduce(
253
253
  (s, r) => {
@@ -257,7 +257,7 @@ function O(t) {
257
257
  {}
258
258
  ) : {};
259
259
  }
260
- async function p(t, e) {
260
+ async function E(t, e) {
261
261
  const n = JSON.stringify(t), s = new TextEncoder(), r = e ? m(e) : crypto.getRandomValues(new Uint8Array(32)), i = await crypto.subtle.importKey(
262
262
  "raw",
263
263
  r,
@@ -303,7 +303,7 @@ function m(t) {
303
303
  n[s] = e.charCodeAt(s);
304
304
  return n;
305
305
  }
306
- async function M(t) {
306
+ async function S(t) {
307
307
  const e = await fetch(t.url, {
308
308
  method: "GET"
309
309
  });
@@ -331,7 +331,7 @@ async function M(t) {
331
331
  tx: i.tx
332
332
  };
333
333
  }
334
- class S {
334
+ class M {
335
335
  constructor(e) {
336
336
  a(this, "endpoint");
337
337
  this.endpoint = e;
@@ -344,7 +344,7 @@ class S {
344
344
  * @returns Promise resolving to connection details including ID, version, and encryption key
345
345
  */
346
346
  async create(e, n) {
347
- const s = await p(e), r = {
347
+ const s = await E(e), r = {
348
348
  metadata: n,
349
349
  sealed: s.ciphertext
350
350
  }, i = await fetch(this.endpoint, {
@@ -377,7 +377,7 @@ class S {
377
377
  * @returns Promise resolving to updated connection details including new encryption key
378
378
  */
379
379
  async update(e, n, s, r, i) {
380
- const o = await p(n, i), c = {
380
+ const o = await E(n, i), c = {
381
381
  sealed: o.ciphertext,
382
382
  version: s,
383
383
  status: r
@@ -561,17 +561,17 @@ class k {
561
561
  export {
562
562
  A as AgentType,
563
563
  l as CMType,
564
- S as ConnectionManager,
564
+ M as ConnectionManager,
565
565
  _ as EmbeddedComponent,
566
- b as ErrorIdentifierCode,
567
- E as HMType,
568
- y as PersonType,
569
- C as ProofStatus,
566
+ C as ErrorIdentifierCode,
567
+ p as HMType,
568
+ I as PersonType,
569
+ b as ProofStatus,
570
570
  U as ProofTypes,
571
- I as Status,
571
+ y as Status,
572
572
  N as VASPSearchControl,
573
573
  L as ValidationSections,
574
- O as decodeFragmentToObject,
574
+ D as decodeFragmentToObject,
575
575
  k as default,
576
- M as getRefreshResult
576
+ S as getRefreshResult
577
577
  };
@@ -10,7 +10,7 @@
10
10
  "author": "Notabene <developers@notabene.id>",
11
11
  "license": "MIT",
12
12
  "packageManager": "yarn@4.5.1",
13
- "version": "2.10.0-next.4",
13
+ "version": "2.11.0-next.2",
14
14
  "source": "src/notabene.ts",
15
15
  "main": "dist/cjs/notabene.cjs",
16
16
  "module": "dist/esm/notabene.js",
@@ -403,6 +403,19 @@ export declare type ConnectionResult<T extends ComponentRequest> = {
403
403
 
404
404
  export declare type ConnectionStatus = 'active' | 'completed' | 'closed';
405
405
 
406
+ /**
407
+ * Metadata for Cosmos ownership proofs
408
+ * @remarks
409
+ * - Includes the public key
410
+ * @public
411
+ */
412
+ export declare interface CosmosMetadata {
413
+ pub_key: {
414
+ type: string;
415
+ value: string;
416
+ };
417
+ }
418
+
406
419
  /**
407
420
  * The counterparty of a transaction.
408
421
  * @public
@@ -1377,6 +1390,8 @@ export declare enum ProofStatus {
1377
1390
  * - SelfDeclaration: User self-declares ownership without cryptographic proof
1378
1391
  * - EIP191: Ethereum personal signature following EIP-191 standard
1379
1392
  * - SIWE: Sign-In with Ethereum message signature (EIP-4361)
1393
+ * - SIWX: Sign-In with X message signature
1394
+ * - SOL_SIWX: Sign-In with Solana message signature (SIWE for Solana)
1380
1395
  * - EIP712: Ethereum typed data signature following EIP-712 standard
1381
1396
  * - BIP137: Bitcoin message signature following BIP-137
1382
1397
  * - BIP322: Bitcoin message signature following BIP-322
@@ -1399,6 +1414,7 @@ export declare enum ProofTypes {
1399
1414
  SelfDeclaration = "self-declaration",
1400
1415
  SIWE = "siwe",
1401
1416
  SIWX = "siwx",
1417
+ SOL_SIWX = "sol-siwx",
1402
1418
  EIP191 = "eip-191",
1403
1419
  EIP712 = "eip-712",
1404
1420
  EIP1271 = "eip-1271",
@@ -1410,6 +1426,7 @@ export declare enum ProofTypes {
1410
1426
  XRP_ED25519 = "xrp-ed25519",
1411
1427
  XLM_ED25519 = "xlm-ed25519",
1412
1428
  CIP8 = "cip-8",
1429
+ COSMOS = "cosmos-ecdsa",
1413
1430
  MicroTransfer = "microtransfer",
1414
1431
  Screenshot = "screenshot",
1415
1432
  Connect = "connect",
@@ -1471,14 +1488,70 @@ export declare interface ScreenshotProof extends OwnershipProof {
1471
1488
  * @public
1472
1489
  */
1473
1490
  export declare interface SignatureProof extends OwnershipProof {
1474
- type: ProofTypes.EIP191 | ProofTypes.EIP712 | ProofTypes.EIP1271 | ProofTypes.BIP137 | ProofTypes.BIP322 | ProofTypes.BIP137_XPUB | ProofTypes.ED25519 | ProofTypes.TIP191 | ProofTypes.SIWX | ProofTypes.SIWE | ProofTypes.CIP8 | ProofTypes.XRP_ED25519 | ProofTypes.CONCORDIUM | ProofTypes.XLM_ED25519;
1491
+ type: ProofTypes.EIP191 | ProofTypes.EIP712 | ProofTypes.EIP1271 | ProofTypes.BIP137 | ProofTypes.BIP322 | ProofTypes.BIP137_XPUB | ProofTypes.ED25519 | ProofTypes.TIP191 | ProofTypes.SIWX | ProofTypes.SOL_SIWX | ProofTypes.SIWE | ProofTypes.CIP8 | ProofTypes.XRP_ED25519 | ProofTypes.CONCORDIUM | ProofTypes.XLM_ED25519 | ProofTypes.COSMOS;
1475
1492
  proof: string;
1476
1493
  attestation: string;
1477
1494
  wallet_provider: string;
1478
1495
  xpub?: string;
1479
1496
  chainSpecificData?: {
1480
1497
  cardanoCoseKey?: string;
1498
+ } | SolanaMetadata | CosmosMetadata;
1499
+ }
1500
+
1501
+ /**
1502
+ * Input for SIWX message signing
1503
+ * Every SIWX message must include the following fields:
1504
+ * - domain
1505
+ * - address
1506
+ * - statement
1507
+ * - uri
1508
+ * - version
1509
+ * - chainId
1510
+ *
1511
+ * Optional fields:
1512
+ * - nonce
1513
+ * - issuedAt
1514
+ * - expirationTime
1515
+ * - notBefore
1516
+ * - requestId
1517
+ * - resources
1518
+ *
1519
+ * @public
1520
+ */
1521
+ export declare interface SIWXInput {
1522
+ domain: string;
1523
+ address: string;
1524
+ statement?: string;
1525
+ uri?: string;
1526
+ version?: string;
1527
+ chainId?: string;
1528
+ nonce?: string;
1529
+ issuedAt?: string;
1530
+ expirationTime?: string;
1531
+ notBefore?: string;
1532
+ requestId?: string;
1533
+ resources?: readonly string[];
1534
+ }
1535
+
1536
+ /**
1537
+ * Metadata for Solana SIWX ownership proofs
1538
+ * @remarks
1539
+ * - Includes the account public key and address
1540
+ * - Includes the signed message
1541
+ * - Includes the signature
1542
+ * - Includes the message
1543
+ *
1544
+ * @see {@link SignatureProof} For signature-based proofs
1545
+ * @public
1546
+ */
1547
+ export declare interface SolanaMetadata {
1548
+ account: {
1549
+ address: string;
1550
+ publicKey: Uint8Array;
1481
1551
  };
1552
+ signedMessage: Uint8Array;
1553
+ signature: Uint8Array;
1554
+ message: SIWXInput;
1482
1555
  }
1483
1556
 
1484
1557
  /**
package/dist/notabene.js CHANGED
@@ -1,8 +1,8 @@
1
1
  var v = Object.defineProperty;
2
2
  var g = (t, e, n) => e in t ? v(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
3
3
  var a = (t, e, n) => g(t, typeof e != "symbol" ? e + "" : e, n);
4
- var A = /* @__PURE__ */ ((t) => (t.PRIVATE = "WALLET", t.VASP = "VASP", t))(A || {}), y = /* @__PURE__ */ ((t) => (t.NATURAL = "natural", t.LEGAL = "legal", t.SELF = "self", t))(y || {}), I = /* @__PURE__ */ ((t) => (t.EMPTY = "empty", t.VERIFY = "verify", t.PENDING = "pending", t.VERIFIED = "verified", t.BANNED = "banned", t))(I || {}), N = /* @__PURE__ */ ((t) => (t.ALLOWED = "allowed", t.PENDING = "pending", t))(N || {}), L = /* @__PURE__ */ ((t) => (t.ASSET = "asset", t.DESTINATION = "destination", t.COUNTERPARTY = "counterparty", t.AGENT = "agent", t))(L || {}), l = /* @__PURE__ */ ((t) => (t.COMPLETE = "complete", t.RESIZE = "resize", t.RESULT = "result", t.READY = "ready", t.INVALID = "invalid", t.ERROR = "error", t.CANCEL = "cancel", t.WARNING = "warning", t.INFO = "info", t))(l || {}), b = /* @__PURE__ */ ((t) => (t.SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE", t.WALLET_CONNECTION_FAILED = "WALLET_CONNECTION_FAILED", t.WALLET_NOT_SUPPORTED = "WALLET_NOT_SUPPORTED", t.TOKEN_INVALID = "TOKEN_INVALID", t))(b || {}), E = /* @__PURE__ */ ((t) => (t.UPDATE = "update", t.REQUEST_RESPONSE = "requestResponse", t))(E || {}), C = /* @__PURE__ */ ((t) => (t.PENDING = "pending", t.FAILED = "rejected", t.FLAGGED = "flagged", t.VERIFIED = "verified", t))(C || {}), U = /* @__PURE__ */ ((t) => (t.SelfDeclaration = "self-declaration", t.SIWE = "siwe", t.SIWX = "siwx", t.EIP191 = "eip-191", t.EIP712 = "eip-712", t.EIP1271 = "eip-1271", t.BIP137 = "bip-137", t.BIP322 = "bip-322", t.BIP137_XPUB = "xpub", t.TIP191 = "tip-191", t.ED25519 = "ed25519", t.XRP_ED25519 = "xrp-ed25519", t.XLM_ED25519 = "xlm-ed25519", t.CIP8 = "cip-8", t.MicroTransfer = "microtransfer", t.Screenshot = "screenshot", t.Connect = "connect", t.CONCORDIUM = "concordium", t))(U || {});
5
- class R {
4
+ var A = /* @__PURE__ */ ((t) => (t.PRIVATE = "WALLET", t.VASP = "VASP", t))(A || {}), I = /* @__PURE__ */ ((t) => (t.NATURAL = "natural", t.LEGAL = "legal", t.SELF = "self", t))(I || {}), y = /* @__PURE__ */ ((t) => (t.EMPTY = "empty", t.VERIFY = "verify", t.PENDING = "pending", t.VERIFIED = "verified", t.BANNED = "banned", t))(y || {}), N = /* @__PURE__ */ ((t) => (t.ALLOWED = "allowed", t.PENDING = "pending", t))(N || {}), L = /* @__PURE__ */ ((t) => (t.ASSET = "asset", t.DESTINATION = "destination", t.COUNTERPARTY = "counterparty", t.AGENT = "agent", t))(L || {}), l = /* @__PURE__ */ ((t) => (t.COMPLETE = "complete", t.RESIZE = "resize", t.RESULT = "result", t.READY = "ready", t.INVALID = "invalid", t.ERROR = "error", t.CANCEL = "cancel", t.WARNING = "warning", t.INFO = "info", t))(l || {}), C = /* @__PURE__ */ ((t) => (t.SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE", t.WALLET_CONNECTION_FAILED = "WALLET_CONNECTION_FAILED", t.WALLET_NOT_SUPPORTED = "WALLET_NOT_SUPPORTED", t.TOKEN_INVALID = "TOKEN_INVALID", t))(C || {}), p = /* @__PURE__ */ ((t) => (t.UPDATE = "update", t.REQUEST_RESPONSE = "requestResponse", t))(p || {}), b = /* @__PURE__ */ ((t) => (t.PENDING = "pending", t.FAILED = "rejected", t.FLAGGED = "flagged", t.VERIFIED = "verified", t))(b || {}), U = /* @__PURE__ */ ((t) => (t.SelfDeclaration = "self-declaration", t.SIWE = "siwe", t.SIWX = "siwx", t.SOL_SIWX = "sol-siwx", t.EIP191 = "eip-191", t.EIP712 = "eip-712", t.EIP1271 = "eip-1271", t.BIP137 = "bip-137", t.BIP322 = "bip-322", t.BIP137_XPUB = "xpub", t.TIP191 = "tip-191", t.ED25519 = "ed25519", t.XRP_ED25519 = "xrp-ed25519", t.XLM_ED25519 = "xlm-ed25519", t.CIP8 = "cip-8", t.COSMOS = "cosmos-ecdsa", t.MicroTransfer = "microtransfer", t.Screenshot = "screenshot", t.Connect = "connect", t.CONCORDIUM = "concordium", t))(U || {});
5
+ class O {
6
6
  constructor() {
7
7
  a(this, "listeners", /* @__PURE__ */ new Map());
8
8
  a(this, "port");
@@ -82,7 +82,7 @@ class _ {
82
82
  a(this, "iframe");
83
83
  a(this, "eventManager");
84
84
  a(this, "modal");
85
- this._url = e, this._value = n, this._options = s, this.eventManager = new R(), this.on(l.INVALID, (r) => {
85
+ this._url = e, this._value = n, this._options = s, this.eventManager = new O(), this.on(l.INVALID, (r) => {
86
86
  r.type === l.INVALID && (this._errors = r.errors, this._value = r.value);
87
87
  }), this.on(l.RESIZE, (r) => {
88
88
  r.type === l.RESIZE && this.iframe && (this.iframe.style.height = `${r.height}px`);
@@ -166,7 +166,7 @@ class _ {
166
166
  * @param value - The new transaction value
167
167
  */
168
168
  update(e, n) {
169
- this._value = e, n && (this._options = n), this.send({ type: E.UPDATE, value: e, options: this._options });
169
+ this._value = e, n && (this._options = n), this.send({ type: p.UPDATE, value: e, options: this._options });
170
170
  }
171
171
  /**
172
172
  * Waits for the component to complete and returns the transaction response
@@ -247,7 +247,7 @@ function x(t) {
247
247
  return `${s}=${r}`;
248
248
  }).filter((e) => e !== void 0).join("&");
249
249
  }
250
- function O(t) {
250
+ function D(t) {
251
251
  const e = t.slice(1);
252
252
  return e ? e.split("&").filter(Boolean).reduce(
253
253
  (s, r) => {
@@ -257,7 +257,7 @@ function O(t) {
257
257
  {}
258
258
  ) : {};
259
259
  }
260
- async function p(t, e) {
260
+ async function E(t, e) {
261
261
  const n = JSON.stringify(t), s = new TextEncoder(), r = e ? m(e) : crypto.getRandomValues(new Uint8Array(32)), i = await crypto.subtle.importKey(
262
262
  "raw",
263
263
  r,
@@ -303,7 +303,7 @@ function m(t) {
303
303
  n[s] = e.charCodeAt(s);
304
304
  return n;
305
305
  }
306
- async function M(t) {
306
+ async function S(t) {
307
307
  const e = await fetch(t.url, {
308
308
  method: "GET"
309
309
  });
@@ -331,7 +331,7 @@ async function M(t) {
331
331
  tx: i.tx
332
332
  };
333
333
  }
334
- class S {
334
+ class M {
335
335
  constructor(e) {
336
336
  a(this, "endpoint");
337
337
  this.endpoint = e;
@@ -344,7 +344,7 @@ class S {
344
344
  * @returns Promise resolving to connection details including ID, version, and encryption key
345
345
  */
346
346
  async create(e, n) {
347
- const s = await p(e), r = {
347
+ const s = await E(e), r = {
348
348
  metadata: n,
349
349
  sealed: s.ciphertext
350
350
  }, i = await fetch(this.endpoint, {
@@ -377,7 +377,7 @@ class S {
377
377
  * @returns Promise resolving to updated connection details including new encryption key
378
378
  */
379
379
  async update(e, n, s, r, i) {
380
- const o = await p(n, i), c = {
380
+ const o = await E(n, i), c = {
381
381
  sealed: o.ciphertext,
382
382
  version: s,
383
383
  status: r
@@ -561,17 +561,17 @@ class k {
561
561
  export {
562
562
  A as AgentType,
563
563
  l as CMType,
564
- S as ConnectionManager,
564
+ M as ConnectionManager,
565
565
  _ as EmbeddedComponent,
566
- b as ErrorIdentifierCode,
567
- E as HMType,
568
- y as PersonType,
569
- C as ProofStatus,
566
+ C as ErrorIdentifierCode,
567
+ p as HMType,
568
+ I as PersonType,
569
+ b as ProofStatus,
570
570
  U as ProofTypes,
571
- I as Status,
571
+ y as Status,
572
572
  N as VASPSearchControl,
573
573
  L as ValidationSections,
574
- O as decodeFragmentToObject,
574
+ D as decodeFragmentToObject,
575
575
  k as default,
576
- M as getRefreshResult
576
+ S as getRefreshResult
577
577
  };