@bestinslot/wallet-kit 0.13.7 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{balances-CGAvYUZu.js → balances-CHRCcJyq.js} +2577 -2181
- package/dist/browser.js +5 -5
- package/dist/core.js +5 -5
- package/dist/{mint-D4wMHU5r.js → mint-Cyl31b8y.js} +17 -12
- package/dist/node.js +4 -4
- package/dist/react.js +1 -1
- package/dist/{register-browser-providers-B5u1iRRq.js → register-browser-providers-DOpVXcri.js} +1 -1
- package/dist/types/api/balances.d.ts +11 -0
- package/dist/types/api/brc20.d.ts +85 -0
- package/dist/types/core/brc20-send.d.ts +127 -0
- package/dist/types/core/frbtc.d.ts +58 -0
- package/dist/types/core/mint.d.ts +1 -0
- package/dist/vue.js +1 -1
- package/package.json +1 -1
package/dist/browser.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "./register-browser-providers-
|
|
2
|
-
import { g as d, c as B, W as Q, a as h, b as E, d as C, e as b, f as p, h as m, i as u, s as f, j as D, k as M, l as I, m as k, n as x, o as y } from "./mint-
|
|
3
|
-
import { q as X, x as _, p as $, u as AA, r as eA, t as tA, v as oA, y as iA, w as rA } from "./mint-
|
|
4
|
-
import { s as v } from "./balances-
|
|
5
|
-
import { c as sA, b as nA, m as gA, a as lA } from "./balances-
|
|
1
|
+
import "./register-browser-providers-DOpVXcri.js";
|
|
2
|
+
import { g as d, c as B, W as Q, a as h, b as E, d as C, e as b, f as p, h as m, i as u, s as f, j as D, k as M, l as I, m as k, n as x, o as y } from "./mint-Cyl31b8y.js";
|
|
3
|
+
import { q as X, x as _, p as $, u as AA, r as eA, t as tA, v as oA, y as iA, w as rA } from "./mint-Cyl31b8y.js";
|
|
4
|
+
import { s as v } from "./balances-CHRCcJyq.js";
|
|
5
|
+
import { c as sA, b as nA, m as gA, a as lA } from "./balances-CHRCcJyq.js";
|
|
6
6
|
const K = '@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--spacing:.25rem;--container-sm:24rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-primary:#f90}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.z-10{z-index:10}.-m-2{margin:calc(var(--spacing)*-2)}.mx-auto{margin-inline:auto}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.flex{display:flex}.size-10{width:calc(var(--spacing)*10);height:calc(var(--spacing)*10)}.size-16{width:calc(var(--spacing)*16);height:calc(var(--spacing)*16)}.h-6{height:calc(var(--spacing)*6)}.h-9\\.75{height:calc(var(--spacing)*9.75)}.h-10{height:calc(var(--spacing)*10)}.max-h-\\[90vh\\]{max-height:90vh}.w-9{width:calc(var(--spacing)*9)}.w-24{width:calc(var(--spacing)*24)}.w-\\[92\\%\\]{width:92%}.w-auto{width:auto}.w-full{width:100%}.max-w-50{max-width:calc(var(--spacing)*50)}.max-w-sm{max-width:var(--container-sm)}.grow{flex-grow:1}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-x-4{column-gap:calc(var(--spacing)*4)}.gap-y-3{row-gap:calc(var(--spacing)*3)}.overflow-y-auto{overflow-y:auto}.rounded-lg{border-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-border{border-color:var(--bis-cw-border)}.bg-black\\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-3{padding-block:calc(var(--spacing)*3)}.py-6{padding-block:calc(var(--spacing)*6)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-foreground{color:var(--bis-cw-fg)}.text-muted-foreground{color:var(--bis-cw-muted-fg)}.underline-offset-4{text-underline-offset:4px}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.bg-background{background:var(--bis-cw-bg)}@media(hover:hover){.group-hover\\:text-foreground:is(:where(.group):hover *){color:var(--bis-cw-fg)}.hover\\:border-primary:hover{border-color:var(--color-primary)}.hover\\:bg-primary:hover{background-color:var(--color-primary)}.hover\\:text-foreground:hover{color:var(--bis-cw-fg)}.hover\\:underline:hover{text-decoration-line:underline}}@media(min-width:40rem){.sm\\:z-50{z-index:50}.sm\\:px-6{padding-inline:calc(var(--spacing)*6)}}}:host,:root{--bis-cw-primary:#f90;--bis-cw-dark-bg:#0a0a0a;--bis-cw-dark-fg:#fafaf9;--bis-cw-dark-muted-fg:#a3a3a3;--bis-cw-dark-border:#ffffff0f;--bis-cw-light-bg:#fff;--bis-cw-light-fg:#0a0a0a;--bis-cw-light-muted-fg:#737373;--bis-cw-light-border:#e5e5e5;--bis-cw-bg:var(--bis-cw-dark-bg);--bis-cw-fg:var(--bis-cw-dark-fg);--bis-cw-muted-fg:var(--bis-cw-dark-muted-fg);--bis-cw-border:var(--bis-cw-dark-border);--tw-border-style:solid;--tw-bg-opacity:1}@media(prefers-color-scheme:light){:host,:root{--bis-cw-bg:var(--bis-cw-light-bg);--bis-cw-fg:var(--bis-cw-light-fg);--bis-cw-muted-fg:var(--bis-cw-light-muted-fg);--bis-cw-border:var(--bis-cw-light-border)}}.bis-cw-theme-light{--bis-cw-bg:var(--bis-cw-light-bg);--bis-cw-fg:var(--bis-cw-light-fg);--bis-cw-muted-fg:var(--bis-cw-light-muted-fg);--bis-cw-border:var(--bis-cw-light-border)}.bis-cw-theme-dark{--bis-cw-bg:var(--bis-cw-dark-bg);--bis-cw-fg:var(--bis-cw-dark-fg);--bis-cw-muted-fg:var(--bis-cw-dark-muted-fg);--bis-cw-border:var(--bis-cw-dark-border)}.best-scrollbar{scrollbar-width:thin;scrollbar-color:#25252d transparent;overflow:auto}.best-scrollbar::-webkit-scrollbar{background:0 0;width:6px;height:6px}.best-scrollbar::-webkit-scrollbar-thumb{background:#fff;border:1px solid #0000;-webkit-border-radius:1ex;-webkit-box-shadow:0 1px 2px #000000bf}.best-scrollbar::-webkit-scrollbar-corner{background:0 0}.best-scrollbar::-webkit-scrollbar-track{background:0 0;border-radius:9999px}.fade-scale-enter-active,.fade-scale-leave-active{transition:opacity .35s,transform .35s}.fade-scale-enter-from,.fade-scale-leave-to{opacity:0;transform:scale(1)}.fade-scale-enter-to,.fade-scale-leave-from{opacity:1;transform:scale(1)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}', G = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAnCAYAAABnlOo2AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALRSURBVHgBzZg/TypBFMXPCK2GykIb7Aha0Ngbv4CVnQXYaYOvstGwRBttHjTa+SfRShu/gHmvtiFKDCWN2hK1RPfNcR5xWXbZOyugJ9mw7Nzd+9uZe+/sjMIX5c7NLeifkj5aSCZ/qVqtiS9IIabcXC6Nt7cSXDff/UR1gkSiHBfMGkiDpNBub2jHRQ2TCn9yPDAxkBikG6qpbU9Vve5AKBGQOzu7gbGxkhgkCEwpR93enkaa9mv8CFiljjVIGoOQAEyFgpjMWcBwVMP7e0Hd39fQD+gjc9rt4yGC+Lz3Br76D8KAdfRpEd8hD5jSw+NYZc5wVSaQix+kMdhqZQXIZGS2a2vA+DhsZAe0uWmOoyNgcbG/7e4usL4OXF4C09MYPBAdsHcovnW1Ciwt9dqxjcCdtqkp818IJQPimwY5JySHxQ8zP99tR6idHUiUcCYnnUirhwczRBMTvW0d509PwPk5MDMTfH9RV5SXF0RJnmVRXU9nQQHcaBiYx0dIJI8hPnB52TgIUhjM6qoYxg6IYi/QQRiUVzc3xlYwTPGBOlDsqevrcBvGTAyYeEAUA9mfSV4xzi4urItiPCCmP4M7yhmruUX9iQfEwsjaI1UMKDkQiyOnjSAdHACHh8FtlpU6KbJiz3grsld7e8DZmTl/fg6GJlSlYpIhQrIeYkYxc/za2vqEoXjOa34x27a3IZEMiIXNW3/ooFAArq56bXnNO03Y1C7YTB1UZ5bf3492wIDmhGoxbdgDjUAcMgc/Qy19OGbVkcmk9Vd/SX/s5/EdUqqiY62sms1W97ps9GB/9PKroBqNZudC8Mo1m83ptTwXjDkMC4RL6ru7v/6G/mv7bDavb2SPpTEIuW5Tv2g+CEQENEAwE7D1ejXK0GrDSpcIs2MmByNIBa+vVQas5Ab7HTRZ4FuDxAaKBHPdE733WPZmzkiAusCSyd/6NBWWOTb6B4ysJPfkVwUnAAAAAElFTkSuQmCC", Y = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAoESURBVFiFzZl5kBTVHcc/r+fomZ6jZ3YFtaKIHMXhEYhyeaDijbKLICpYEQ+i8TaJGuMfxkpVKjGVaAFqtBKRxIBHoiaKR6LAElBBF3ZJIlmKVQ6NxMDO3cd0T/fLHzs7LrIHAorfqq6a6XnvN59+/d7v937vJ6SU9KT6dHogyGuBWcAYQOmx4cGVD7QCfwQWdWRz/+upkfg8dH06lQBuA+YAQwEVkID4Mmmr6vqfMvABsATkgo5svtQrdH06dTLwNDDsKwDcV7UDszuyueauGzXo+nTqW8DfgdihYetTBjC5I5vbAFXo+lQqhuBfwOBDita3toM4riObNToXl+B2vt7AAMeAvANA1KX0AcBbwPCvmqJragqxz2t8i5Ty1EA0ErkdmMFX4NKEEHieR6FQxLLLSOnjui4l00L6knA43J8JXQiRF3Up/T3g5C8bGCCXy5NK6TQ2NnL2lLMYNOhoKp7Hpk3/ZvGTi9nQ0koqpfdnplnUpfRdwGFfFEAAbqWC53kIIZBSoigKoVBor7ZSSrL5AtMumsoDD/ycUcedAEjwXRACRAjbKjHv2nk8/eyzpFMpegt6wO79hvY8D03T0HV9j7n56aef7jVHM7k8d9x6Mw8tmA++h1kqAqL2sFJKopqGZVmMGz+J7du3E4lEeoXe73ls2TaPP/YoGza8x9trVrHxn/9gzpwryBeKtTZCCDK5PNddfRUPLXgY1zIxikVCoTBaMk00kSAajXbaM01iyTpmXToT0y73+d/7BW3bNiNHjOC8c89BDQZJpXQqtskzzzxHRP1sMRVLJU4aO4YFCxdQsQ0cp0wsHqdkmPzwrju54PyprFzZhBqNVd+Oz+jRo/rdLwT3B9qyy4wfNw41pmMWMmjxOO81r6G9vZ14PA50uTPBr375C7R4AiOfJarF+WTnf2lomM76llYAjjx8IFPOuxDHNgEIBPofx/0aaQkMH95te6IE+eSTnbgVr3Yrly8w85JGzphyLmYhRzAYxPN95l41l/UtraT1JADTpzcgfbeGs2XLB/S6BA8EGiCqad2ewqeuLl17rVJKwuEQt95yE/guUkrUmM6vH32UN1euIpVMkM0X+N5tt9A4Yya2UURRFHzX5pVXX0UN7+2BDgr07l27ap8dy2TixEkMHzaUQqGIYZicesokJk46BcsoEQ6HyOzayfz5CwEoFIrce8/dPPjQg5QNA9+XROIpnnvuOd5Zu45Y9wE5WNChQIB1774LsoIQ4Louqbo6Hn5kIbqu41QqNDY0IIIqUkpC0QRPPfUHPty+g4njx7Hs5b/w0589QNkyqVQcYnqKD9s3c9fd9xDt3dXVtF9+2vd9HNelafkbjJt0CkY+iwA0Xae9bTNLlj7N7NmXM2TIsThlh1A4wtKlS4jFYjQ0TCMc1TALeZASTa/n4x1bufjiBt7ftAk9mewrsMCBBJdiqcT4ceN4882/oYZDmIaBACLRKEpYw7WKOI5TCyCxeBwCQexSEc/zUFWVYCTO6qYVXHvdPLZu3UYqpfcHDAcSXJKJBG+/s5bLZl1GPl8kptejBALYto1ZyOC6bi0yCiEwDQOrWEBVVWJ6Pdl8nnvvuZsLLpzKRx99vK/Anfb2d6S7YDLZHKNHjeD++++nsWEaoUgMs5DZo52W1IEAsmLT1raZPz3/Ak8uXszWbTvQE3GCweA+A3Mg06M7uGGYOI7D2LFjmD37Cm6+8QaQEolEUQK8+OeXaF6/gZaWFlpaWsjmC8SiUSIR9YvAHjzo7srk8kw+dRIrm1ZStkxUVaW9vZ3jTxyL6/mooSDRaBRFOaCt++4vFMYdx8GyLLzq4AhADYeIRCIEqiAzZsxACapIaaCEo7z19ju4nk9d//vkfVa/0EIIbNvGsGyGDTmWsWPHctRRR6GqYTKZDO+/v4nW1lZylo0WUZk8+TRkxa72lqxY2YRykE9M+oQWQlAsFjn88MOZ/+P7uOSSRuoOG0j3mFQpm2zcuJH5CxayuW0zI0eMoGzbBINBcrs/5d1330OLRHuwDZ7nYxhm9U5nEhGL9X+C0eecNk2TwYMHs2zZSwwdPhLXKlZdGUA1WxGCSCwGQvDR9u0MqK/HlxItnmDliuVccOE0YjFtr8TA9300TWPMmG8CoCgKpmnS2roRKWVfyW7vc9r3fZRAgCd++zhDh4/EyHegKApaMgX4UKlAUAU8rGIRpOTII47AcZxOA0qIlU2rcCoV4j0A2LbN6FGjeOW1V0H6IEJs3dLGSeMm9Afd+/QolQwaGy7mlNPPwixkUBSFYCjM4iee4PnnX8C0LAYPPoZLZ87gwoum4lgW5XIZITrTKN+1efON5QioRcXuct0KAwYOACmxSiWimkY2l6VSqRAIBHoFhj42TBXf57TTT6t9j8Z1lixZyjXzrufV119nzZo1LFr8e6ZOm84l02dSMi2C1aS2K+/7wZ3fJ6Un6cjm9oAWQuBJyVlnngGiGlgCnXty07L6dYl9/ppIJPb43vXGfAlOdcOfSiYYNOjozoyjG1jZNpk563JWr2ri4qkXYBgmmVyeTC5PRzbHpAnjmTt3Lo5ZqPYI0NzcjOf3H2z69B7btm7r/CAlVinPnDmzSSQSNDWtQgkEGDVqJGdPOYthI0Zjl/JUKi6a1rn6TdPEyGc47vjRvLzsJd5avYbly1fwyc6dDB06hGuvuZpEIo5tWQSDQRyryMvLXiGq9ntg07v3sG2b4cOGsW7d2yhC4DgOiiKIJpLdnlXiOyZ2NXvWknW0rl8HCMacNB67lMPzPBRFIRrTQFFr9mu7QEDT6/nNY49w/Y237EsQ2h2IRiJ3A3ulCsFgkO07PsJ1Xc6fOo2gApWKi1t2cMtW9bLxPB8tkSAUibPspReZdflsFi1aTDIRY+LEiYQ1jYpTxnW697PwfZ9QKEQkkWZ10wrmfee7BANKv4sQMKlL6bvqUrrs6UrrSRkQQt5y0w1y5392yM/kVy8pvbIp1761Wn77yjkyFFBkLBqRiZgmATnlzMnyjb++Jj3H6tbPq1kp5DrkwvkPybSuSy2iyvp0qkeOz127+j3L6zrSGnTUNzjnnHM48cQTOKy+DsO0aG9vZ+07a2levwG7XCalJ/fwr8ViESEEEyZM4PTTT2PIsccSiahksjna2tpoalrFprbNJGIa4XB4X3d8zaIupf8I+Al9LEoBOK5LyTBrRZEu82ooiKbtHfG6P7RpmpTdSs1WV99YNIKqqj3260UV4D6R1pMDhBCH5Hx6P7QFxKlKJpffBfzuUNPsoxZ3ZLO7Omsu6XQM5PvAMYeaqg9tA47vyOY6ay4d2axBZzXAOJRUfcgAZnZkcwZ0C+PVcteZdNbtvk5qB87sKsdBjxXbdBzkbcCVHPqK7VJgQUc2V+zeaC/oLtWlUwMFHLLauEQsymSzPdbG/w+4k7mXlA6bMQAAAABJRU5ErkJggg==", F = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK6wAACusBgosNWgAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAGsSURBVFiF7ZgxisJAGIVfFiUoESGNjWBhGxBR8QxCjpDeI3gRBc+ghZ0XSPAIqdJbaOFgiI1mtttqZ+bfdZiN7nxg9TLMF5l5ycQBwPFifPy1wG+w0qaw0qaw0qaw0qaoUS9cLBaIokiYr9drrFYrYd7r9bDb7VCv17/NT6cTwjBEURRKF7L0aDRCEATCfDgcSsd3Oh3lNY1GgyRNXh632+2p/H6/S/M8z8E57TXoJde0lTYFWdpxnKdynZClXdeV5mVZSnPGmDT3PI+8ER0QTy5BEGAwGAhzzjlms5nwH0/TFFmWCXuaMYb9fq+8+a/5dPzm8zmXkaaplnkAcG0bUbWmr9errqnevD2qhJU2hTZpVVW1Wi1dU9F7ejweYzKZCHPGGKbTqbBFsixDURTCnr5cLthsNng8HhQdWjdut1tpDy+XS+n4fr8vHc85577v6+1p1cu56hHcbreleZ7nVJV/vhFNYqVNQZZuNptP5bWa/ODveR75IEH+hJAkCbrdrjA/HA7S8cfjEXEcC3v6fD6TPh8AP3i4VIn3XtNVwkqbwkqbwkqb4iWlPwENJBb5gZq7aAAAAABJRU5ErkJggg==", U = "data:image/png;base64,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", S = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC0AAAAtCAYAAAA6GuKaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAT2SURBVFiF7ZlPaBRXHMc/b2Z39t9EN7uG7i5sIAGLECV4qIg5VErSQ/Hg3luhlGJArVUItNBD6UmoHtoYWoQe7KFFEZKQ1bZIwRRMQdoivTWY5pY5tNU1bmadmd15PSS7JtmdZGa13Qr9HnaZ935v5sPv/d7v92aekFKyWdlsdgx4C3gREE0G/7wkMA98YRjGx5s7xXrobDY7DHwAvATE6AxwXRKoAD8BHxmG8X29owGdzWbfAT7pCJ4/nTYM41NYg85msy8DtzrL5EuHDcOYFZlMRgNmgYOdJvKhH4UQh1Vd198FXgfUThP50AtAWWQymd+Bvk7TBNCiwvMFDNCndJqgHT2X0KGgA6SUSCkRQjT+hfBfg2TjZ00ieAULDO04zoZr27aJRCJomkarLcE6NmxXYtVAUzZyR9Rg2L6hpZQ4jsOlS5fYs2dPo31hYYHR0VFM0yQej7cEF4BZlcRCgonhJH07Q1i11etf/3AYu1UirAj8TlhgT+/fv5/+/v7G9cDAAOl0mkKh0BJcAJWqRFMFX76WYqQ/iuWs9kfCAqWN3U3ghVipVJrahoaGmJqaIhKJYJpmI8brHtZUwVdHUoz0RblvupiOxHQkliOpVL1D6plBx+Pxlu2HDh1icnISTdMa4LYriYcFXx9JM9wXpVRxmxZdRBWBF6JvaCEElmUxOTnpabMevLyygkTw+Ug3r/RFKZkuyrpMIVkNj9/uV7FcfMczgMhkMr7nx3VdSqUSFy5c4OTJk552t2/fplAo4Ng2e3M7cF2JWZUMpMN89mqSmgvJmML1exXe/PYBUkIowJyruq5/6NdYCIGmaUxPT5NKpThw4EBLu97eXoaGhrh27RqLf67woKqyVK4REnBsb4KdMYUbC485duM+NRk85QWOaVVVSSaTnDlzhomJCU+7eqjsSESRdoVYWCEWFuyIqXxz7zFvXP8LCcRUQdClGMjTdSmKQiQSYXp6mu7ubk+P5/P5hsdXzAr5ZJSusODt7x5Qle0BQ8CY3qxarcbDhw85d+4cp06dIhRqnfbn5uYoFApYloWixVCERFPaA35qaCEEpVKJXbt2cffuXVKplKft3NwcR48e5bFloScSW5b87dT2Lk8IwaNHj+jp6WFmZmZLYFiN8ampKaKbClA7agu6DpxKpSgWiwwODvoa16oAtaPA0HXgdDpNsVhk3759gcZ7lfwgCgS93sMzMzNbAs/Pz3v2Pa3HA0FblkVPT8+2Hr58+TKDg4OMj4972tTBE4lE0x59O/nO01JKLMviypUrnnm5Dnz8+HHi8TjFYnHLPN7b20s+n+fq1atEo1Hf0IH205qmkcvltgQeHR2lq6uLcDhMKBTi7NmzCCE4ceJEyzG5XA5FCba0AllLKbFtu2Wf67qcP3++ASul9FXyve73zKABdF1vfSNFIZFIoKobP1StB7948WLTuEQbhSbw69bNmzfZvXt304Mcx2F5ebkJGp6Aj42NUS6XOXhw9bOhEII7d+54ln8vBS7j5XK5pWeklOi6jqqqnp6TUrK8vLwhhhVFQdf1QN5+qr1Hp/RcfmH6H/rfkgIsdhoioBYVYAIInuE7IxuYUIQQ48DPnabxqV+AcWVpackG3u80jU+9ZxiGrQAYhjELnO4w0HY6vcb5JHusHSwOAz8AJrT9svysJNc4ZoGR+sEnbDpmruu/fjb+Nx2M9cevd+7+AAAAAElFTkSuQmCC", O = "data:image/gif;base64,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", n = {
|
|
7
7
|
okx: { name: "OKX", img: F },
|
|
8
8
|
unisat: { name: "Unisat", img: U },
|
package/dist/core.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "./register-browser-providers-
|
|
2
|
-
import { s } from "./balances-
|
|
3
|
-
import { c as j, b as k, m as x, a as B } from "./balances-
|
|
4
|
-
import { W as e, a, b as t, d as o, e as n, f as r, h as i, i as l, s as c, j as g, k as d, l as p, m, n as f, o as b } from "./mint-
|
|
5
|
-
import { q as T, x as v, p as C, u as M, r as S, t as _, v as h, y as N, T as O, w as P } from "./mint-
|
|
1
|
+
import "./register-browser-providers-DOpVXcri.js";
|
|
2
|
+
import { s } from "./balances-CHRCcJyq.js";
|
|
3
|
+
import { c as j, b as k, m as x, a as B } from "./balances-CHRCcJyq.js";
|
|
4
|
+
import { W as e, a, b as t, d as o, e as n, f as r, h as i, i as l, s as c, j as g, k as d, l as p, m, n as f, o as b } from "./mint-Cyl31b8y.js";
|
|
5
|
+
import { q as T, x as v, p as C, u as M, r as S, t as _, v as h, y as N, T as O, w as P } from "./mint-Cyl31b8y.js";
|
|
6
6
|
const w = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7
7
|
__proto__: null,
|
|
8
8
|
WalletAccountChangedError: e,
|
|
@@ -67627,7 +67627,9 @@ async function sendInscriptionToOpReturnWithExtraInputsAndExtraOutputAll(t, e, r
|
|
|
67627
67627
|
if (C.satpoint.split(":")[2] !== "0")
|
|
67628
67628
|
throw new Error("Inscription is not at the first sat of utxo");
|
|
67629
67629
|
if (!B.addr) throw new Error("Payer wallet address is not set.");
|
|
67630
|
-
const p = await getCardinalUtxos(B.addr)
|
|
67630
|
+
const p = await getCardinalUtxos(B.addr);
|
|
67631
|
+
(A <= 0 || A == null) && (A = 1);
|
|
67632
|
+
const v = [{
|
|
67631
67633
|
utxo: `${C.satpoint.split(":")[0]}:${C.satpoint.split(":")[1]}`,
|
|
67632
67634
|
value: C.value,
|
|
67633
67635
|
script_type: C.script_type,
|
|
@@ -67676,7 +67678,9 @@ async function sendInscriptionToOpReturnWithExtraInputsAndExtraOutputFeeRate(t,
|
|
|
67676
67678
|
if (l.satpoint.split(":")[2] !== "0")
|
|
67677
67679
|
throw new Error("Inscription is not at the first sat of utxo");
|
|
67678
67680
|
if (!I.addr) throw new Error("Payer wallet address is not set.");
|
|
67679
|
-
const C = await getCardinalUtxos(I.addr, o)
|
|
67681
|
+
const C = await getCardinalUtxos(I.addr, o);
|
|
67682
|
+
(A <= 0 || A == null) && (A = 1);
|
|
67683
|
+
const Q = [{
|
|
67680
67684
|
utxo: `${l.satpoint.split(":")[0]}:${l.satpoint.split(":")[1]}`,
|
|
67681
67685
|
value: l.value,
|
|
67682
67686
|
script_type: l.script_type,
|
|
@@ -67850,16 +67854,17 @@ export {
|
|
|
67850
67854
|
mintAll as ag,
|
|
67851
67855
|
sendInscriptionToOpReturnWithExtraInputsAndExtraOutputAll as ah,
|
|
67852
67856
|
mintWithExtraInputInCommitAll as ai,
|
|
67853
|
-
|
|
67854
|
-
|
|
67855
|
-
|
|
67856
|
-
|
|
67857
|
-
|
|
67858
|
-
|
|
67859
|
-
|
|
67860
|
-
|
|
67861
|
-
|
|
67862
|
-
|
|
67857
|
+
evmEncodeFunctionCall as aj,
|
|
67858
|
+
getDustValue as ak,
|
|
67859
|
+
ethCallOnPublicRpc as al,
|
|
67860
|
+
callSmartContract as am,
|
|
67861
|
+
callSmartContractFromPaymentWallet as an,
|
|
67862
|
+
depositToBrc20Prog as ao,
|
|
67863
|
+
withdrawFromBrc20Prog as ap,
|
|
67864
|
+
inscribeMultiple as aq,
|
|
67865
|
+
inscribeWithParent as ar,
|
|
67866
|
+
getInscribeMultipleFee as as,
|
|
67867
|
+
fetchWithErrors as at,
|
|
67863
67868
|
getCardinalBalance as b,
|
|
67864
67869
|
clearWalletInfo as c,
|
|
67865
67870
|
getEndpoints as d,
|
package/dist/node.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { z as fI, A as KA, B as f, C as eI, D as tI, E as RA, F as d, G as SI, H as ZA, I as e, J as UA, K as nI, L as pI, M as rI, N as FI, O as sI, P as KI, Q as BA, e as zA, k as eA, R as RI, c as UI, S as qI, W as VI, a as lI, b as dI, d as xI, f as YI, h as JI, i as PI, s as vI, j as OI, l as uI, m as jI, n as bI, o as LI } from "./mint-
|
|
2
|
-
import { q as ZQ, x as zQ, p as mQ, u as XQ, r as WQ, t as _Q, v as $Q, y as AC, w as IC } from "./mint-
|
|
3
|
-
import { s as TI } from "./balances-
|
|
4
|
-
import { c as QC, b as CC, m as BC, a as EC } from "./balances-
|
|
1
|
+
import { z as fI, A as KA, B as f, C as eI, D as tI, E as RA, F as d, G as SI, H as ZA, I as e, J as UA, K as nI, L as pI, M as rI, N as FI, O as sI, P as KI, Q as BA, e as zA, k as eA, R as RI, c as UI, S as qI, W as VI, a as lI, b as dI, d as xI, f as YI, h as JI, i as PI, s as vI, j as OI, l as uI, m as jI, n as bI, o as LI } from "./mint-Cyl31b8y.js";
|
|
2
|
+
import { q as ZQ, x as zQ, p as mQ, u as XQ, r as WQ, t as _Q, v as $Q, y as AC, w as IC } from "./mint-Cyl31b8y.js";
|
|
3
|
+
import { s as TI } from "./balances-CHRCcJyq.js";
|
|
4
|
+
import { c as QC, b as CC, m as BC, a as EC } from "./balances-CHRCcJyq.js";
|
|
5
5
|
var ZI = fI();
|
|
6
6
|
const qA = {
|
|
7
7
|
messagePrefix: `Bitcoin Signed Message:
|
package/dist/react.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useSyncExternalStore as u, useCallback as r, useState as w } from "react";
|
|
2
|
-
import { T as c, e, k as l, i as n } from "./mint-
|
|
2
|
+
import { T as c, e, k as l, i as n } from "./mint-Cyl31b8y.js";
|
|
3
3
|
function m() {
|
|
4
4
|
const t = u(c, e, e), s = r((o) => l(o), []);
|
|
5
5
|
return [t, s];
|
package/dist/{register-browser-providers-B5u1iRRq.js → register-browser-providers-DOpVXcri.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as l, E as x, G as b, e as d, U as B, I as p, h as S, V as P, S as T } from "./mint-
|
|
1
|
+
import { F as l, E as x, G as b, e as d, U as B, I as p, h as S, V as P, S as T } from "./mint-Cyl31b8y.js";
|
|
2
2
|
async function C() {
|
|
3
3
|
if (!window.LeatherProvider) throw new Error("Leather extension not found.");
|
|
4
4
|
const e = await window.LeatherProvider.request("getAddresses");
|
|
@@ -42,6 +42,17 @@ export declare function getBRC20ProgBalanceOfAddress(bitcoinAddress: string, tok
|
|
|
42
42
|
* @returns {Promise<bigint>} A promise that resolves to a bigint representing the total balance in 18 decimals for the specified Bitcoin address and BRC-20 token.
|
|
43
43
|
*/
|
|
44
44
|
export declare function getBRC20ProgBalanceOfTicker(bitcoinAddress: string, ticker: string): Promise<bigint>;
|
|
45
|
+
/**
|
|
46
|
+
* Reads the frBTC balance held by a Bitcoin address's BRC2.0 (EVM) address, straight from the frBTC
|
|
47
|
+
* contract on the public RPC. frBTC is an ERC-20 with no BRC-20 ticker, so the ticker reads above do
|
|
48
|
+
* not cover it. Use the ordinals address for a connected wallet: that is the address
|
|
49
|
+
* `brc20.wrapBtcToBrc20Prog` mints to and `brc20.unwrapBtcFromBrc20Prog` burns from.
|
|
50
|
+
*
|
|
51
|
+
* @param bitcoinAddress The Bitcoin address whose BRC2.0 balance to read.
|
|
52
|
+
*
|
|
53
|
+
* @returns {Promise<bigint>} The balance in sats (frBTC has 8 decimals).
|
|
54
|
+
*/
|
|
55
|
+
export declare function getFrBtcBalanceOfAddress(bitcoinAddress: string): Promise<bigint>;
|
|
45
56
|
/**
|
|
46
57
|
* Get token address of a ticker in BRC2.0 by making an API call to the public RPC.
|
|
47
58
|
*
|
|
@@ -1,6 +1,91 @@
|
|
|
1
|
+
import { Brc20SendQuote, SendAsBrc20Args, SendAsBrc20ProgArgs, SendAsBrc20ProgResult, SendAsBrc20Result } from '../core/brc20-send';
|
|
2
|
+
import { FrBtcResult, UnwrapBtcFromBrc20ProgArgs, WrapBtcToBrc20ProgArgs } from '../core/frbtc';
|
|
1
3
|
import { BISWalletPurpose, PaymentOpts } from '../types/common';
|
|
2
4
|
export type { Brc20AmountOptions, Brc20DeployOptions, Brc20PredeployOptions, Brc20PredeployResult, } from '../core/brc20-inscriptions';
|
|
3
5
|
export { computeBrc20PredeployHash, deployBrc20Inscription, generateBrc20Salt, mintBrc20Inscription, predeployInscriptions, transferBrc20Inscription, } from '../core/brc20-inscriptions';
|
|
6
|
+
export type { Brc20SendPart, Brc20SendQuote, Brc20SendStepName, Brc20SendStepQuote, SendAsBrc20Args, SendAsBrc20ProgArgs, SendAsBrc20ProgResult, SendAsBrc20Result, } from '../core/brc20-send';
|
|
7
|
+
/**
|
|
8
|
+
* Sends a ticker so the recipient receives plain BRC-20. `fromBrc20Amount` is sent as a BRC-20
|
|
9
|
+
* transfer inscription and `fromProgAmount` as a BRC2.0 withdraw inscription, both to `recipient`.
|
|
10
|
+
* Every transaction is signed as one chain (each step spends the previous step's output) and the chain
|
|
11
|
+
* is broadcast at the end, so the parts never compete for a UTXO.
|
|
12
|
+
*
|
|
13
|
+
* With `dryRun: true` nothing is signed or broadcast and the result is a fee quote: total sats,
|
|
14
|
+
* wallet prompts, and a per-step breakdown. `onSignRequest` is called before each wallet prompt with
|
|
15
|
+
* `{ step, total }`; `total` is 2 per part.
|
|
16
|
+
*
|
|
17
|
+
* @param args - `tick`, `fromBrc20Amount` and `fromProgAmount` (decimal strings, either may be `"0"`), `recipient`, `feeRate` (sats/vB), `dryRun`, and optional `onSignRequest`.
|
|
18
|
+
* @returns The quote for a dry run; otherwise the transaction ids of each part plus every txid in chain order.
|
|
19
|
+
*/
|
|
20
|
+
export declare function sendAsBrc20(args: SendAsBrc20Args & {
|
|
21
|
+
dryRun: true;
|
|
22
|
+
}): Promise<Brc20SendQuote>;
|
|
23
|
+
export declare function sendAsBrc20(args: SendAsBrc20Args & {
|
|
24
|
+
dryRun: false;
|
|
25
|
+
}): Promise<SendAsBrc20Result>;
|
|
26
|
+
export declare function sendAsBrc20(args: SendAsBrc20Args): Promise<Brc20SendQuote | SendAsBrc20Result>;
|
|
27
|
+
/**
|
|
28
|
+
* Sends a ticker so the recipient receives BRC2.0. When `topUpFromBrc20` is above 0, that much base
|
|
29
|
+
* BRC-20 is first deposited into the sender's own BRC2.0 balance; then an ERC-20
|
|
30
|
+
* `transfer(recipientEvm, amount)` call on `contractAddress` moves `amount` to the EVM address of
|
|
31
|
+
* `recipient`. Both are inscribed from the ordinals identity, which owns the BRC2.0 balance, and the
|
|
32
|
+
* call spends the deposit's output so the deposit is indexed first.
|
|
33
|
+
*
|
|
34
|
+
* With `dryRun: true` nothing is signed or broadcast and the result is a fee quote. `onSignRequest` is
|
|
35
|
+
* called before each wallet prompt with `{ step, total }`; `total` is 2, or 4 with a top-up.
|
|
36
|
+
*
|
|
37
|
+
* @param args - `tick`, `contractAddress`, `topUpFromBrc20` (decimal string, may be `"0"`), `amount` (bigint, 18 decimals, as in `swap.deposit`), `recipient`, `feeRate` (sats/vB), `dryRun`, and optional `onSignRequest`.
|
|
38
|
+
* @returns The quote for a dry run; otherwise the transaction ids of each part plus every txid in chain order.
|
|
39
|
+
*/
|
|
40
|
+
export declare function sendAsBrc20Prog(args: SendAsBrc20ProgArgs & {
|
|
41
|
+
dryRun: true;
|
|
42
|
+
}): Promise<Brc20SendQuote>;
|
|
43
|
+
export declare function sendAsBrc20Prog(args: SendAsBrc20ProgArgs & {
|
|
44
|
+
dryRun: false;
|
|
45
|
+
}): Promise<SendAsBrc20ProgResult>;
|
|
46
|
+
export declare function sendAsBrc20Prog(args: SendAsBrc20ProgArgs): Promise<Brc20SendQuote | SendAsBrc20ProgResult>;
|
|
47
|
+
export type { FrBtcResult, UnwrapBtcFromBrc20ProgArgs, WrapBtcToBrc20ProgArgs } from '../core/frbtc';
|
|
48
|
+
export { getFrBtcAddress } from '../core/frbtc';
|
|
49
|
+
/**
|
|
50
|
+
* Wraps BTC into frBTC held by the wallet's own BRC2.0 address, with no smart wallet involved. One
|
|
51
|
+
* call inscription runs `wrap()` on Subfrost's frBTC contract; its send transaction pays `amount`
|
|
52
|
+
* sats to the frBTC signer, and the contract mints frBTC, less its `premium()` fee, to the ordinals
|
|
53
|
+
* address's BRC2.0 address.
|
|
54
|
+
*
|
|
55
|
+
* With `dryRun: true` nothing is signed or broadcast and the result is a fee quote whose
|
|
56
|
+
* `paymentSats` is the wrapped amount. `onSignRequest` is called before each wallet prompt with
|
|
57
|
+
* `{ step, total }`; `total` is 2.
|
|
58
|
+
*
|
|
59
|
+
* @param args - `amount` (bigint sats, at least 546), `feeRate` (sats/vB), `dryRun`, and optional `onSignRequest`.
|
|
60
|
+
* @returns The quote for a dry run; otherwise the call's transaction ids plus every txid in chain order.
|
|
61
|
+
*/
|
|
62
|
+
export declare function wrapBtcToBrc20Prog(args: WrapBtcToBrc20ProgArgs & {
|
|
63
|
+
dryRun: true;
|
|
64
|
+
}): Promise<Brc20SendQuote>;
|
|
65
|
+
export declare function wrapBtcToBrc20Prog(args: WrapBtcToBrc20ProgArgs & {
|
|
66
|
+
dryRun: false;
|
|
67
|
+
}): Promise<FrBtcResult>;
|
|
68
|
+
export declare function wrapBtcToBrc20Prog(args: WrapBtcToBrc20ProgArgs): Promise<Brc20SendQuote | FrBtcResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Unwraps frBTC held by the wallet's own BRC2.0 address into BTC paid to `recipient`, with no smart
|
|
71
|
+
* wallet involved. One call inscription runs `unwrap2` on Subfrost's frBTC contract, which burns the
|
|
72
|
+
* frBTC and queues the payment; its send transaction pays a 546-sat marker to the frBTC signer, which
|
|
73
|
+
* pays the BTC out in a later Bitcoin transaction.
|
|
74
|
+
*
|
|
75
|
+
* With `dryRun: true` nothing is signed or broadcast and the result is a fee quote. `onSignRequest` is
|
|
76
|
+
* called before each wallet prompt with `{ step, total }`; `total` is 2.
|
|
77
|
+
*
|
|
78
|
+
* @param args - `amount` (bigint sats), `recipient` (Bitcoin address), `feeRate` (sats/vB), `dryRun`, and optional `onSignRequest`.
|
|
79
|
+
* @returns The quote for a dry run; otherwise the call's transaction ids plus every txid in chain order.
|
|
80
|
+
* @throws {Error} When the BRC2.0 frBTC balance is below `amount`, before anything is signed.
|
|
81
|
+
*/
|
|
82
|
+
export declare function unwrapBtcFromBrc20Prog(args: UnwrapBtcFromBrc20ProgArgs & {
|
|
83
|
+
dryRun: true;
|
|
84
|
+
}): Promise<Brc20SendQuote>;
|
|
85
|
+
export declare function unwrapBtcFromBrc20Prog(args: UnwrapBtcFromBrc20ProgArgs & {
|
|
86
|
+
dryRun: false;
|
|
87
|
+
}): Promise<FrBtcResult>;
|
|
88
|
+
export declare function unwrapBtcFromBrc20Prog(args: UnwrapBtcFromBrc20ProgArgs): Promise<Brc20SendQuote | FrBtcResult>;
|
|
4
89
|
/**
|
|
5
90
|
* Interface representing the result of an inscription and send to OP_RETURN operation, including transaction IDs, signed transaction hexes, inscription ID, postage, and secret used in the minting process. This interface is used to encapsulate the details of the deploy, call and deposit operations in the BRC2.0 programmable module.
|
|
6
91
|
*
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { SignProgressOptions } from './sign-progress';
|
|
2
|
+
import { InscriptionDetails } from '../types/inscription';
|
|
3
|
+
import { WalletInfo } from '../types/wallet';
|
|
4
|
+
/** The transactions of one inscribe-and-send step. */
|
|
5
|
+
export interface Brc20SendPart {
|
|
6
|
+
commitTxId: string;
|
|
7
|
+
revealTxId: string;
|
|
8
|
+
/** The transaction that moves the inscription to its target (recipient or OP_RETURN). */
|
|
9
|
+
sendTxId: string;
|
|
10
|
+
inscriptionId: string;
|
|
11
|
+
}
|
|
12
|
+
/** Fee breakdown of one inscribe-and-send step. */
|
|
13
|
+
export interface Brc20SendStepQuote {
|
|
14
|
+
step: Brc20SendStepName;
|
|
15
|
+
/** Miner fees of the commit, reveal and send transactions. */
|
|
16
|
+
minerFeeSats: number;
|
|
17
|
+
/** Sats the send leaves on its target output (the recipient's postage, or 1 sat on OP_RETURN). */
|
|
18
|
+
postageSats: number;
|
|
19
|
+
/** Sats the send pays to its extra outputs, such as the BTC an frBTC wrap sends to the signer. */
|
|
20
|
+
paymentSats: number;
|
|
21
|
+
/** Wallet prompts this step raises. */
|
|
22
|
+
walletPrompts: number;
|
|
23
|
+
}
|
|
24
|
+
/** What a composite send costs, built without signing or broadcasting. */
|
|
25
|
+
export interface Brc20SendQuote {
|
|
26
|
+
/** Sats the wallet spends in all: miner fees, postage and payments. */
|
|
27
|
+
totalSats: number;
|
|
28
|
+
minerFeeSats: number;
|
|
29
|
+
postageSats: number;
|
|
30
|
+
paymentSats: number;
|
|
31
|
+
/** Wallet prompts the real send raises; `onSignRequest` reports each of them. */
|
|
32
|
+
walletPrompts: number;
|
|
33
|
+
feeRate: number;
|
|
34
|
+
steps: Brc20SendStepQuote[];
|
|
35
|
+
}
|
|
36
|
+
export type Brc20SendStepName = 'brc20Transfer' | 'progWithdraw' | 'progDeposit' | 'progTransfer' | 'frBtcWrap' | 'frBtcUnwrap';
|
|
37
|
+
/** An output the send transaction carries right after the target, at vout 1, 2, …. */
|
|
38
|
+
export interface ChainExtraOutput {
|
|
39
|
+
wallet: WalletInfo;
|
|
40
|
+
value: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ChainStep {
|
|
43
|
+
name: Brc20SendStepName;
|
|
44
|
+
inscription: InscriptionDetails;
|
|
45
|
+
target: WalletInfo;
|
|
46
|
+
extraOutputs?: ChainExtraOutput[];
|
|
47
|
+
/** Most inputs the send may spend; the chain is refused before broadcast when it spends more. */
|
|
48
|
+
maxSendInputs?: number;
|
|
49
|
+
}
|
|
50
|
+
export interface ChainResult {
|
|
51
|
+
parts: Record<string, Brc20SendPart>;
|
|
52
|
+
txIds: string[];
|
|
53
|
+
}
|
|
54
|
+
export declare function opReturnTarget(): WalletInfo;
|
|
55
|
+
/**
|
|
56
|
+
* Builds a `brc20-prog` call inscription. BRC2.0 grants `content bytes × GAS_PER_BYTE` gas, so the
|
|
57
|
+
* content is padded with spaces when its bytes alone fall short of `gasCeiling`.
|
|
58
|
+
*/
|
|
59
|
+
export declare function callInscription(contractAddress: string, calldata: string, gasCeiling: number): Promise<InscriptionDetails>;
|
|
60
|
+
/**
|
|
61
|
+
* Parses a BRC-20 decimal amount string into an 18-decimal bigint.
|
|
62
|
+
*
|
|
63
|
+
* @param value - A non-negative decimal string with at most 18 fractional digits, such as `"0"` or `"12.5"`.
|
|
64
|
+
* @param label - The argument name used in error messages.
|
|
65
|
+
*/
|
|
66
|
+
export declare function parseBrc20Amount(value: string, label: string): bigint;
|
|
67
|
+
export declare function assertRecipient(recipient: string): void;
|
|
68
|
+
export declare function assertFeeRate(feeRate: number): void;
|
|
69
|
+
export declare function runChain(steps: ChainStep[], feeRate: number, dryRun: boolean, options: SignProgressOptions): Promise<Brc20SendQuote | ChainResult>;
|
|
70
|
+
export interface SendAsBrc20Args extends SignProgressOptions {
|
|
71
|
+
tick: string;
|
|
72
|
+
/** Amount taken from the sender's base BRC-20 balance, as a decimal string; `"0"` skips it. */
|
|
73
|
+
fromBrc20Amount: string;
|
|
74
|
+
/** Amount taken from the sender's BRC2.0 balance, as a decimal string; `"0"` skips it. */
|
|
75
|
+
fromProgAmount: string;
|
|
76
|
+
/** Bitcoin address that receives plain BRC-20. */
|
|
77
|
+
recipient: string;
|
|
78
|
+
feeRate: number;
|
|
79
|
+
dryRun: boolean;
|
|
80
|
+
}
|
|
81
|
+
export interface SendAsBrc20Result {
|
|
82
|
+
/** The BRC-20 transfer inscription sent to the recipient, or null when `fromBrc20Amount` is 0. */
|
|
83
|
+
brc20Transfer: Brc20SendPart | null;
|
|
84
|
+
/** The BRC2.0 withdraw inscription sent to the recipient, or null when `fromProgAmount` is 0. */
|
|
85
|
+
progWithdraw: Brc20SendPart | null;
|
|
86
|
+
/** Every broadcast transaction id, in chain order. */
|
|
87
|
+
txIds: string[];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Sends a ticker so the recipient receives plain BRC-20, drawing on the sender's base BRC-20 balance
|
|
91
|
+
* first and its BRC2.0 balance second. The base part is a BRC-20 transfer inscription sent to the
|
|
92
|
+
* recipient; the BRC2.0 part is a `brc20-module` withdraw inscription sent to the recipient. Both
|
|
93
|
+
* parts are signed as one chain and broadcast together.
|
|
94
|
+
*/
|
|
95
|
+
export declare function sendAsBrc20(args: SendAsBrc20Args): Promise<Brc20SendQuote | SendAsBrc20Result>;
|
|
96
|
+
export interface SendAsBrc20ProgArgs extends SignProgressOptions {
|
|
97
|
+
tick: string;
|
|
98
|
+
/** The token's BRC2.0 (ERC-20) contract address. */
|
|
99
|
+
contractAddress: string;
|
|
100
|
+
/**
|
|
101
|
+
* Amount deposited from the sender's base BRC-20 balance into its own BRC2.0 balance before the
|
|
102
|
+
* transfer, as a decimal string; `"0"` skips the deposit.
|
|
103
|
+
*/
|
|
104
|
+
topUpFromBrc20: string;
|
|
105
|
+
/** Total amount the recipient receives, in 18 decimals (the BRC2.0 token unit, as in `swap.deposit`). */
|
|
106
|
+
amount: bigint;
|
|
107
|
+
/** Bitcoin address whose BRC2.0 (EVM) address receives the tokens. */
|
|
108
|
+
recipient: string;
|
|
109
|
+
feeRate: number;
|
|
110
|
+
dryRun: boolean;
|
|
111
|
+
}
|
|
112
|
+
export interface SendAsBrc20ProgResult {
|
|
113
|
+
/** The deposit into the sender's BRC2.0 balance, or null when `topUpFromBrc20` is 0. */
|
|
114
|
+
progDeposit: Brc20SendPart | null;
|
|
115
|
+
/** The ERC-20 `transfer` call to the recipient. */
|
|
116
|
+
progTransfer: Brc20SendPart;
|
|
117
|
+
/** Every broadcast transaction id, in chain order. */
|
|
118
|
+
txIds: string[];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Sends a ticker so the recipient receives BRC2.0. When `topUpFromBrc20` is above 0, a deposit first
|
|
122
|
+
* moves that much of the sender's base BRC-20 into its own BRC2.0 balance; then an ERC-20
|
|
123
|
+
* `transfer(recipientEvm, amount)` call moves `amount` to the recipient's EVM address. Both are
|
|
124
|
+
* inscribed from the ordinals identity, which owns the BRC2.0 balance, and the call's commit spends
|
|
125
|
+
* the deposit's output so the deposit is indexed first.
|
|
126
|
+
*/
|
|
127
|
+
export declare function sendAsBrc20Prog(args: SendAsBrc20ProgArgs): Promise<Brc20SendQuote | SendAsBrc20ProgResult>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Brc20SendPart, Brc20SendQuote } from './brc20-send';
|
|
2
|
+
import { SignProgressOptions } from './sign-progress';
|
|
3
|
+
import { Buffer } from 'node:buffer';
|
|
4
|
+
/**
|
|
5
|
+
* Value of the marker output an unwrap pays the frBTC signer, and the smallest wrap: the dust limit
|
|
6
|
+
* of every standard output type.
|
|
7
|
+
*/
|
|
8
|
+
export declare const FRBTC_SIGNER_DUST_SATS = 546;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the frBTC contract address on the selected network, lowercased.
|
|
11
|
+
*
|
|
12
|
+
* @throws {Error} On a network without frBTC (testnet).
|
|
13
|
+
*/
|
|
14
|
+
export declare function getFrBtcAddress(): string;
|
|
15
|
+
/** Reads the output script of the frBTC signer, which receives wrapped BTC and unwrap markers. */
|
|
16
|
+
export declare function getFrBtcSignerScript(): Promise<Buffer>;
|
|
17
|
+
/**
|
|
18
|
+
* Reads the frBTC balance held by a Bitcoin address's BRC2.0 (EVM) address.
|
|
19
|
+
*
|
|
20
|
+
* @param bitcoinAddress - The Bitcoin address whose BRC2.0 balance to read; the ordinals address for a connected wallet.
|
|
21
|
+
* @returns The balance in sats (frBTC has 8 decimals).
|
|
22
|
+
*/
|
|
23
|
+
export declare function getFrBtcBalanceOfAddress(bitcoinAddress: string): Promise<bigint>;
|
|
24
|
+
export interface WrapBtcToBrc20ProgArgs extends SignProgressOptions {
|
|
25
|
+
/** BTC to wrap, in sats. The wallet's BRC2.0 address receives the frBTC. */
|
|
26
|
+
amount: bigint;
|
|
27
|
+
feeRate: number;
|
|
28
|
+
dryRun: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface UnwrapBtcFromBrc20ProgArgs extends SignProgressOptions {
|
|
31
|
+
/** frBTC to unwrap, in sats, taken from the wallet's BRC2.0 balance. */
|
|
32
|
+
amount: bigint;
|
|
33
|
+
/** Bitcoin address the signer pays the BTC to. */
|
|
34
|
+
recipient: string;
|
|
35
|
+
feeRate: number;
|
|
36
|
+
dryRun: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface FrBtcResult {
|
|
39
|
+
/** The call inscription's commit, reveal and send transactions. */
|
|
40
|
+
call: Brc20SendPart;
|
|
41
|
+
/** Every broadcast transaction id, in chain order. */
|
|
42
|
+
txIds: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Wraps BTC into frBTC held by the wallet's own BRC2.0 address. One call inscription runs `wrap()` on
|
|
46
|
+
* the frBTC contract, and its send transaction pays `amount` sats to the frBTC signer at vout 1; the
|
|
47
|
+
* contract mints frBTC, less its `premium()` fee, to the inscription's owner, the ordinals address.
|
|
48
|
+
*/
|
|
49
|
+
export declare function wrapBtcToBrc20Prog(args: WrapBtcToBrc20ProgArgs): Promise<Brc20SendQuote | FrBtcResult>;
|
|
50
|
+
/**
|
|
51
|
+
* Unwraps frBTC held by the wallet's own BRC2.0 address into BTC paid to `recipient`. One call
|
|
52
|
+
* inscription runs `unwrap2(amount, 1, recipientScript)` on the frBTC contract, and its send
|
|
53
|
+
* transaction pays a 546-sat marker to the frBTC signer at vout 1. The contract burns the frBTC and
|
|
54
|
+
* queues the payment; the signer pays it out in a later Bitcoin transaction.
|
|
55
|
+
*
|
|
56
|
+
* @throws {Error} When the BRC2.0 frBTC balance is below `amount`, before anything is signed.
|
|
57
|
+
*/
|
|
58
|
+
export declare function unwrapBtcFromBrc20Prog(args: UnwrapBtcFromBrc20ProgArgs): Promise<Brc20SendQuote | FrBtcResult>;
|
|
@@ -5,6 +5,7 @@ import { InscribeFees, InscribeMultipleResult, InscribeResult, SendInscriptionRe
|
|
|
5
5
|
import { Buffer } from 'node:buffer';
|
|
6
6
|
import { WalletInfo } from '../types/wallet';
|
|
7
7
|
import * as bitcoinjs from 'bitcoinjs-lib';
|
|
8
|
+
export declare function getDustValue(wallet: WalletInfo): number;
|
|
8
9
|
interface TapLeafScriptInfo {
|
|
9
10
|
script: Buffer;
|
|
10
11
|
controlBlock: Buffer;
|
package/dist/vue.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ref as s, onScopeDispose as u, watch as i } from "vue";
|
|
2
|
-
import { e as r, T as c, k as a } from "./mint-
|
|
2
|
+
import { e as r, T as c, k as a } from "./mint-Cyl31b8y.js";
|
|
3
3
|
function n() {
|
|
4
4
|
const o = s(r()), t = c((e) => {
|
|
5
5
|
o.value !== e && (o.value = e);
|
package/package.json
CHANGED