@wormhole-foundation/sdk-stacks 3.8.6

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 (50) hide show
  1. package/dist/cjs/address.d.ts +26 -0
  2. package/dist/cjs/address.d.ts.map +1 -0
  3. package/dist/cjs/address.js +67 -0
  4. package/dist/cjs/address.js.map +1 -0
  5. package/dist/cjs/chain.d.ts +5 -0
  6. package/dist/cjs/chain.d.ts.map +1 -0
  7. package/dist/cjs/chain.js +8 -0
  8. package/dist/cjs/chain.js.map +1 -0
  9. package/dist/cjs/index.d.ts +6 -0
  10. package/dist/cjs/index.d.ts.map +1 -0
  11. package/dist/cjs/index.js +23 -0
  12. package/dist/cjs/index.js.map +1 -0
  13. package/dist/cjs/package.json +1 -0
  14. package/dist/cjs/platform.d.ts +22 -0
  15. package/dist/cjs/platform.d.ts.map +1 -0
  16. package/dist/cjs/platform.js +125 -0
  17. package/dist/cjs/platform.js.map +1 -0
  18. package/dist/cjs/signer.d.ts +22 -0
  19. package/dist/cjs/signer.d.ts.map +1 -0
  20. package/dist/cjs/signer.js +68 -0
  21. package/dist/cjs/signer.js.map +1 -0
  22. package/dist/cjs/types.d.ts +15 -0
  23. package/dist/cjs/types.d.ts.map +1 -0
  24. package/dist/cjs/types.js +10 -0
  25. package/dist/cjs/types.js.map +1 -0
  26. package/dist/esm/address.d.ts +26 -0
  27. package/dist/esm/address.d.ts.map +1 -0
  28. package/dist/esm/address.js +63 -0
  29. package/dist/esm/address.js.map +1 -0
  30. package/dist/esm/chain.d.ts +5 -0
  31. package/dist/esm/chain.d.ts.map +1 -0
  32. package/dist/esm/chain.js +4 -0
  33. package/dist/esm/chain.js.map +1 -0
  34. package/dist/esm/index.d.ts +6 -0
  35. package/dist/esm/index.d.ts.map +1 -0
  36. package/dist/esm/index.js +7 -0
  37. package/dist/esm/index.js.map +1 -0
  38. package/dist/esm/platform.d.ts +22 -0
  39. package/dist/esm/platform.d.ts.map +1 -0
  40. package/dist/esm/platform.js +121 -0
  41. package/dist/esm/platform.js.map +1 -0
  42. package/dist/esm/signer.d.ts +22 -0
  43. package/dist/esm/signer.d.ts.map +1 -0
  44. package/dist/esm/signer.js +63 -0
  45. package/dist/esm/signer.js.map +1 -0
  46. package/dist/esm/types.d.ts +15 -0
  47. package/dist/esm/types.d.ts.map +1 -0
  48. package/dist/esm/types.js +7 -0
  49. package/dist/esm/types.js.map +1 -0
  50. package/package.json +87 -0
@@ -0,0 +1,26 @@
1
+ import { Address, UniversalAddress } from "@wormhole-foundation/sdk-connect";
2
+ import { AnyStacksAddress } from "./types.js";
3
+ export declare const StacksZeroAddress = "SP000000000000000000002Q6VF78";
4
+ export declare class StacksAddress implements Address {
5
+ static readonly byteSize = 20;
6
+ static readonly platform: "Stacks";
7
+ readonly type: string;
8
+ readonly address: string;
9
+ constructor(address: AnyStacksAddress);
10
+ unwrap(): string;
11
+ toString(): string;
12
+ toNative(): this;
13
+ toUint8Array(): Uint8Array;
14
+ toUniversalAddress(): UniversalAddress;
15
+ static isValidAddress(address: string): boolean;
16
+ static instanceof(address: any): address is StacksAddress;
17
+ equals(other: StacksAddress | UniversalAddress): boolean;
18
+ }
19
+ declare module '@wormhole-foundation/sdk-connect' {
20
+ namespace WormholeRegistry {
21
+ interface PlatformToNativeAddressMapping {
22
+ Stacks: StacksAddress;
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAAa,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGzD,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AAEjE,qBAAa,aAAc,YAAW,OAAO;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,MAAM;IAC9B,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAa;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IAEjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEZ,OAAO,EAAE,gBAAgB;IAgBrC,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;IAIlB,QAAQ;IAIR,YAAY,IAAI,UAAU;IAI1B,kBAAkB,IAAI,gBAAgB;IAItC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAS/C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,aAAa;IAIzD,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,OAAO;CAOzD;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAiB,gBAAgB,CAAC;QAChC,UAAU,8BAA8B;YACtC,MAAM,EAAE,aAAa,CAAC;SACvB;KACF;CACF"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StacksAddress = exports.StacksZeroAddress = void 0;
4
+ const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
+ const types_js_1 = require("./types.js");
6
+ const transactions_1 = require("@stacks/transactions");
7
+ exports.StacksZeroAddress = 'SP000000000000000000002Q6VF78';
8
+ class StacksAddress {
9
+ static byteSize = 20; // Assuming 20 bytes like EVM
10
+ static platform = types_js_1._platform;
11
+ type = 'Native';
12
+ address;
13
+ constructor(address) {
14
+ if (StacksAddress.instanceof(address)) {
15
+ const a = address;
16
+ this.address = a.address;
17
+ return;
18
+ }
19
+ if (typeof address === 'string') {
20
+ if (!StacksAddress.isValidAddress(address)) {
21
+ throw new Error(`Invalid Stacks address ${address}`);
22
+ }
23
+ this.address = address;
24
+ }
25
+ else {
26
+ throw new Error(`Invalid Stacks address ${address}`);
27
+ }
28
+ }
29
+ unwrap() {
30
+ return this.address;
31
+ }
32
+ toString() {
33
+ return this.address;
34
+ }
35
+ toNative() {
36
+ return this;
37
+ }
38
+ toUint8Array() {
39
+ return new Uint8Array(Buffer.from(this.address));
40
+ }
41
+ toUniversalAddress() {
42
+ return new sdk_connect_1.UniversalAddress(this.address, "keccak256");
43
+ }
44
+ static isValidAddress(address) {
45
+ try {
46
+ transactions_1.Address.parse(address);
47
+ return true;
48
+ }
49
+ catch (error) {
50
+ return false;
51
+ }
52
+ }
53
+ static instanceof(address) {
54
+ return address.constructor.platform === StacksAddress.platform;
55
+ }
56
+ equals(other) {
57
+ if (StacksAddress.instanceof(other)) {
58
+ return other.address === this.address;
59
+ }
60
+ else {
61
+ return other.equals(this.toUniversalAddress());
62
+ }
63
+ }
64
+ }
65
+ exports.StacksAddress = StacksAddress;
66
+ (0, sdk_connect_1.registerNative)(types_js_1._platform, StacksAddress);
67
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/address.ts"],"names":[],"mappings":";;;AAAA,kEAA6F;AAC7F,yCAAyD;AACzD,uDAAsE;AAEzD,QAAA,iBAAiB,GAAG,+BAA+B,CAAC;AAEjE,MAAa,aAAa;IACxB,MAAM,CAAU,QAAQ,GAAG,EAAE,CAAC,CAAC,6BAA6B;IAC5D,MAAM,CAAU,QAAQ,GAAG,oBAAS,CAAC;IAC5B,IAAI,GAAW,QAAQ,CAAC;IAExB,OAAO,CAAQ;IAExB,YAAY,OAAyB;QACnC,IAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,OAAmC,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAG,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAG,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY;QACV,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,8BAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAe;QACnC,IAAI,CAAC;YACH,sBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,OAAY;QAC5B,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,KAAuC;QAC5C,IAAI,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AA9DH,sCA+DC;AAUD,IAAA,4BAAc,EAAC,oBAAS,EAAE,aAAa,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ChainContext, ChainToPlatform, Network } from "@wormhole-foundation/sdk-connect";
2
+ import { StacksChains } from "./types.js";
3
+ export declare class StacksChain<N extends Network, C extends StacksChains> extends ChainContext<N, C, ChainToPlatform<C>> {
4
+ }
5
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAEjH"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StacksChain = void 0;
4
+ const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
+ class StacksChain extends sdk_connect_1.ChainContext {
6
+ }
7
+ exports.StacksChain = StacksChain;
8
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/chain.ts"],"names":[],"mappings":";;;AAAA,kEAA0F;AAG1F,MAAa,WAAuD,SAAQ,0BAAsC;CAEjH;AAFD,kCAEC"}
@@ -0,0 +1,6 @@
1
+ export * from './types.js';
2
+ export * from './address.js';
3
+ export * from './chain.js';
4
+ export * from './platform.js';
5
+ export * from './signer.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ // Export all types and functionality from the Stacks platform
18
+ __exportStar(require("./types.js"), exports);
19
+ __exportStar(require("./address.js"), exports);
20
+ __exportStar(require("./chain.js"), exports);
21
+ __exportStar(require("./platform.js"), exports);
22
+ __exportStar(require("./signer.js"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA8D;AAC9D,6CAA2B;AAC3B,+CAA6B;AAC7B,6CAA2B;AAC3B,gDAA8B;AAC9B,8CAA4B"}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,22 @@
1
+ import { ChainContext, ChainsConfig, ChainToPlatform, Network, PlatformContext, RpcConnection, StaticPlatformMethods, TokenId, TxHash, SignedTx, TokenAddress } from "@wormhole-foundation/sdk-connect";
2
+ import { StacksChains, StacksPlatformType } from "./types.js";
3
+ import { Chain } from "@wormhole-foundation/sdk-connect";
4
+ import { StacksNetwork } from "@stacks/network";
5
+ export declare class StacksPlatform<N extends Network> extends PlatformContext<N, StacksPlatformType> implements StaticPlatformMethods<StacksPlatformType, typeof StacksPlatform> {
6
+ static _platform: "Stacks";
7
+ constructor(network: N, config?: ChainsConfig<N, StacksPlatformType>);
8
+ getRpc(): StacksNetwork;
9
+ getChain<C extends StacksChains>(chain: C, rpc?: RpcConnection<C>): ChainContext<N, C, ChainToPlatform<C>>;
10
+ static isSupportedChain(chain: Chain): boolean;
11
+ static nativeTokenId<N extends Network, C extends StacksChains>(network: N, chain: C): TokenId<C>;
12
+ static isNativeTokenId<N extends Network, C extends StacksChains>(network: N, chain: C, tokenId: TokenId<C>): boolean;
13
+ static getDecimals<C extends StacksChains>(_network: Network, _chain: C, rpc: RpcConnection<C>, token: TokenAddress<C>): Promise<number>;
14
+ static getBalance<C extends StacksChains>(_network: Network, _chain: C, rpc: StacksNetwork, walletAddr: string, token: TokenAddress<C>): Promise<bigint | null>;
15
+ static getLatestBlock<C extends StacksChains>(rpc: RpcConnection<C>): Promise<number>;
16
+ static getLatestFinalizedBlock<C extends StacksChains>(rpc: RpcConnection<C>): Promise<number>;
17
+ static sendWait<C extends StacksChains>(chain: C, rpc: RpcConnection<C>, stxns: SignedTx[]): Promise<TxHash[]>;
18
+ static chainFromChainId(chainId: string): [Network, StacksChains];
19
+ static chainFromRpc(rpc: StacksNetwork): Promise<[Network, StacksChains]>;
20
+ static waitForTx(txId: string | undefined, clientBaseUrl: string, debug?: boolean): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAmB,eAAe,EAAE,OAAO,EAA0B,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAsB,YAAY,EAAY,MAAM,kCAAkC,CAAC;AAC/Q,OAAO,EAAa,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAA4B,aAAa,EAAqB,MAAM,iBAAiB,CAAC;AAI7F,qBAAa,cAAc,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAC1F,YAAW,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,cAAc,CAAC;IAE3E,MAAM,CAAC,SAAS,WAAa;gBAEjB,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,kBAAkB,CAAC;IAO3D,MAAM,IAAI,aAAa;IAMvB,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAOnH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAK9C,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,EAC5D,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,CAAC;IAOb,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,EAC9D,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO;WAMG,WAAW,CAAC,CAAC,SAAS,YAAY,EAC7C,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;WAmBL,UAAU,CAAC,CAAC,SAAS,YAAY,EAC5C,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAoBZ,cAAc,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;WAI9E,uBAAuB,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;WAIvF,QAAQ,CAAC,CAAC,SAAS,YAAY,EAC1C,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,KAAK,EAAE,QAAQ,EAAE,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC;WAIpD,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;WAalE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe;CAgB/F"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StacksPlatform = void 0;
4
+ const sdk_connect_1 = require("@wormhole-foundation/sdk-connect");
5
+ const types_js_1 = require("./types.js");
6
+ const chain_js_1 = require("./chain.js");
7
+ const network_1 = require("@stacks/network");
8
+ const address_js_1 = require("./address.js");
9
+ const transactions_1 = require("@stacks/transactions");
10
+ class StacksPlatform extends sdk_connect_1.PlatformContext {
11
+ static _platform = types_js_1._platform;
12
+ constructor(network, config) {
13
+ super(network, config ?? (0, sdk_connect_1.networkPlatformConfigs)(network, StacksPlatform._platform));
14
+ }
15
+ getRpc() {
16
+ let rpc = (0, network_1.networkFromName)(this.network.toLowerCase());
17
+ rpc.getNetwork = () => ({ chainId: rpc.chainId });
18
+ return rpc;
19
+ }
20
+ getChain(chain, rpc) {
21
+ if (chain in this.config) {
22
+ return new chain_js_1.StacksChain(chain, this, rpc);
23
+ }
24
+ throw new Error("No configuration available for chain: " + chain);
25
+ }
26
+ static isSupportedChain(chain) {
27
+ const platform = (0, sdk_connect_1.chainToPlatform)(chain);
28
+ return platform === StacksPlatform._platform;
29
+ }
30
+ static nativeTokenId(network, chain) {
31
+ if (!StacksPlatform.isSupportedChain(chain)) {
32
+ throw new Error(`invalid chain for Stacks: ${chain}`);
33
+ }
34
+ return sdk_connect_1.Wormhole.tokenId(chain, address_js_1.StacksZeroAddress);
35
+ }
36
+ static isNativeTokenId(network, chain, tokenId) {
37
+ if (!StacksPlatform.isSupportedChain(chain))
38
+ return false;
39
+ if (tokenId.chain !== chain)
40
+ return false;
41
+ return tokenId.address.toString() === address_js_1.StacksZeroAddress;
42
+ }
43
+ static async getDecimals(_network, _chain, rpc, token) {
44
+ if ((0, sdk_connect_1.isNative)(token))
45
+ return sdk_connect_1.decimals.nativeDecimals(StacksPlatform._platform);
46
+ const [contractAddress, contractName] = token.toString().split(".");
47
+ if (!contractAddress || !contractName) {
48
+ throw new Error("Invalid token address");
49
+ }
50
+ const res = await (0, transactions_1.fetchCallReadOnlyFunction)({
51
+ contractName,
52
+ contractAddress,
53
+ functionName: "get-decimals",
54
+ functionArgs: [],
55
+ client: {
56
+ baseUrl: rpc.client.baseUrl,
57
+ },
58
+ senderAddress: address_js_1.StacksZeroAddress
59
+ });
60
+ return Number((0, transactions_1.cvToValue)(res).value);
61
+ }
62
+ static async getBalance(_network, _chain, rpc, walletAddr, token) {
63
+ const [contractAddress, contractName] = token.toString().split(".");
64
+ if (!contractAddress || !contractName) {
65
+ throw new Error("Invalid token address");
66
+ }
67
+ const res = await (0, transactions_1.fetchCallReadOnlyFunction)({
68
+ contractName,
69
+ contractAddress,
70
+ functionName: "get-balance",
71
+ functionArgs: [
72
+ transactions_1.Cl.address(walletAddr)
73
+ ],
74
+ client: {
75
+ baseUrl: rpc.client.baseUrl,
76
+ },
77
+ senderAddress: address_js_1.StacksZeroAddress
78
+ });
79
+ return BigInt((0, transactions_1.cvToValue)(res).value);
80
+ }
81
+ static async getLatestBlock(rpc) {
82
+ throw new Error("Method not implemented.");
83
+ }
84
+ static async getLatestFinalizedBlock(rpc) {
85
+ throw new Error("Method not implemented.");
86
+ }
87
+ static async sendWait(chain, rpc, stxns) {
88
+ throw new Error("Method not implemented.");
89
+ }
90
+ static chainFromChainId(chainId) {
91
+ throw new Error("Method not implemented.");
92
+ }
93
+ static async chainFromRpc(rpc) {
94
+ if (rpc.chainId == network_1.ChainId.Mainnet) {
95
+ return ['Mainnet', 'Stacks'];
96
+ }
97
+ if (rpc.chainId == network_1.ChainId.Testnet) {
98
+ if (rpc.client.baseUrl.includes('localhost') || rpc.client.baseUrl.includes('127.0.0.1')) {
99
+ return ['Devnet', 'Stacks'];
100
+ }
101
+ return ['Testnet', 'Stacks'];
102
+ }
103
+ return ['Devnet', 'Stacks'];
104
+ }
105
+ static async waitForTx(txId, clientBaseUrl, debug = false) {
106
+ if (!txId) {
107
+ throw new Error("No tx id");
108
+ }
109
+ const apiUrl = `${clientBaseUrl}/extended/v1/tx/${txId}`;
110
+ const res = await fetch(apiUrl);
111
+ let data = await res.json();
112
+ let tries = 0;
113
+ while (data.tx_status !== 'success') {
114
+ if (debug)
115
+ console.log(`Waiting for tx ${txId} ... try: ${tries}`);
116
+ await new Promise(resolve => setTimeout(resolve, 1000));
117
+ data = await fetch(apiUrl).then(res => res.json());
118
+ tries++;
119
+ }
120
+ if (debug)
121
+ console.log(`tx mined!: ${txId}`);
122
+ }
123
+ }
124
+ exports.StacksPlatform = StacksPlatform;
125
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Network, SignedTx, SignAndSendSigner, UnsignedTransaction, TxHash } from "@wormhole-foundation/sdk-connect";
2
+ import { StacksChains } from "./types.js";
3
+ import { StacksNetwork } from "@stacks/network";
4
+ export declare function getStacksSigner(rpc: StacksNetwork, privateKey: string): Promise<SignAndSendSigner<Network, StacksChains>>;
5
+ export declare class StacksSigner<N extends Network, C extends StacksChains> implements SignAndSendSigner<N, C> {
6
+ private _chain;
7
+ private _network;
8
+ private _provider;
9
+ private _privKey;
10
+ private readonly _address;
11
+ constructor(_chain: C, _network: Network, _provider: StacksNetwork, _privKey: string);
12
+ signAndSend(txs: UnsignedTransaction<N, C>[]): Promise<TxHash[]>;
13
+ /**
14
+ *
15
+ * Stacks has different types of transactions.
16
+ * We are assuming that we're only signing contract interaction transactions.
17
+ */
18
+ sign(tx: UnsignedTransaction<N, C>[]): Promise<SignedTx[]>;
19
+ chain(): C;
20
+ address(): string;
21
+ }
22
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACrH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAqB,MAAM,iBAAiB,CAAC;AAGnE,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAGnD;AAED,qBAAa,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CAAE,YAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IAKnG,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAGvB,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM;IAKpB,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BtE;;;;OAIG;IACG,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQhE,KAAK,IAAI,CAAC;IAIV,OAAO,IAAI,MAAM;CAGlB"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StacksSigner = exports.getStacksSigner = void 0;
4
+ const transactions_1 = require("@stacks/transactions");
5
+ const platform_js_1 = require("./platform.js");
6
+ async function getStacksSigner(rpc, privateKey) {
7
+ const [network, chain] = await platform_js_1.StacksPlatform.chainFromRpc(rpc);
8
+ return new StacksSigner(chain, network, rpc, privateKey);
9
+ }
10
+ exports.getStacksSigner = getStacksSigner;
11
+ class StacksSigner {
12
+ _chain;
13
+ _network;
14
+ _provider;
15
+ _privKey;
16
+ _address;
17
+ constructor(_chain, _network, _provider, _privKey) {
18
+ this._chain = _chain;
19
+ this._network = _network;
20
+ this._provider = _provider;
21
+ this._privKey = _privKey;
22
+ this._address = (0, transactions_1.privateKeyToAddress)(this._privKey, this._network.toLowerCase());
23
+ }
24
+ async signAndSend(txs) {
25
+ const signed = [];
26
+ for (const tx of txs) {
27
+ const signedTx = await (0, transactions_1.makeContractCall)({
28
+ ...tx.transaction,
29
+ senderKey: this._privKey,
30
+ network: this._network.toLowerCase(),
31
+ client: this._provider.client
32
+ });
33
+ signed.push(signedTx);
34
+ }
35
+ const txHashes = await Promise.all(signed.map(async (signedTx) => {
36
+ const txBroadcastResult = await (0, transactions_1.broadcastTransaction)({
37
+ transaction: signedTx,
38
+ client: this._provider.client
39
+ });
40
+ if (txBroadcastResult.error) {
41
+ console.log(signedTx);
42
+ throw new Error(`Failed to broadcast transaction: ${txBroadcastResult.error} ${txBroadcastResult.reason} - ${txBroadcastResult.txid} -`);
43
+ }
44
+ return txBroadcastResult.txid;
45
+ }));
46
+ return txHashes;
47
+ }
48
+ /**
49
+ *
50
+ * Stacks has different types of transactions.
51
+ * We are assuming that we're only signing contract interaction transactions.
52
+ */
53
+ async sign(tx) {
54
+ const signedTxs = tx.map(async (t) => {
55
+ const transaction = t.transaction;
56
+ return (0, transactions_1.makeContractCall)(transaction);
57
+ });
58
+ return Promise.all(signedTxs);
59
+ }
60
+ chain() {
61
+ return this._chain;
62
+ }
63
+ address() {
64
+ return this._address;
65
+ }
66
+ }
67
+ exports.StacksSigner = StacksSigner;
68
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":";;;AAEA,uDAA0H;AAE1H,+CAA+C;AAExC,KAAK,UAAU,eAAe,CACnC,GAAkB,EAClB,UAAkB;IAElB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,4BAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAND,0CAMC;AAED,MAAa,YAAY;IAKb;IACA;IACA;IACA;IANO,QAAQ,CAAQ;IAEjC,YACU,MAAS,EACT,QAAiB,EACjB,SAAwB,EACxB,QAAgB;QAHhB,WAAM,GAAN,MAAM,CAAG;QACT,aAAQ,GAAR,QAAQ,CAAS;QACjB,cAAS,GAAT,SAAS,CAAe;QACxB,aAAQ,GAAR,QAAQ,CAAQ;QAExB,IAAI,CAAC,QAAQ,GAAG,IAAA,kCAAmB,EAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAuB,CAAC,CAAC;IACvG,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAgC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAA;QAC1C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,MAAM,IAAA,+BAAgB,EAAC;gBACtC,GAAG,EAAE,CAAC,WAAW;gBACjB,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACpC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;aAC9B,CAAC,CAAA;YACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC/D,MAAM,iBAAiB,GAAQ,MAAM,IAAA,mCAAoB,EAAC;gBACxD,WAAW,EAAE,QAAQ;gBACrB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;aAC9B,CAAC,CAAA;YACF,IAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBACrB,MAAM,IAAI,KAAK,CAAC,oCAAoC,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,MAAM,MAAM,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAA;YAC1I,CAAC;YACD,OAAO,iBAAiB,CAAC,IAAI,CAAA;QAC/B,CAAC,CAAC,CAAC,CAAA;QAEH,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,EAA+B;QACxC,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;YAClC,OAAO,IAAA,+BAAgB,EAAC,WAAW,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF;AA5DD,oCA4DC"}
@@ -0,0 +1,15 @@
1
+ import { PlatformToChains, UniversalOrNative } from "@wormhole-foundation/sdk-connect";
2
+ export declare const unusedNonce = 0;
3
+ export declare const unusedArbiterFee = 0n;
4
+ /**
5
+ * Runtime value for the Stacks Platform
6
+ */
7
+ export declare const _platform: 'Stacks';
8
+ /**
9
+ * Type for the Stacks Platform
10
+ */
11
+ export type StacksPlatformType = typeof _platform;
12
+ export type StacksChains = PlatformToChains<StacksPlatformType>;
13
+ export type UniversalOrStacks = UniversalOrNative<StacksChains>;
14
+ export type AnyStacksAddress = UniversalOrStacks | string | Uint8Array;
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAEvF,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,QAAmB,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,SAAS,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;AAC/D,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;AAC/D,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._platform = exports.unusedArbiterFee = exports.unusedNonce = void 0;
4
+ exports.unusedNonce = 0;
5
+ exports.unusedArbiterFee = 0n;
6
+ /**
7
+ * Runtime value for the Stacks Platform
8
+ */
9
+ exports._platform = 'Stacks';
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAEa,QAAA,WAAW,GAAG,CAAC,CAAC;AAChB,QAAA,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACU,QAAA,SAAS,GAAa,QAAQ,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { Address, UniversalAddress } from "@wormhole-foundation/sdk-connect";
2
+ import { AnyStacksAddress } from "./types.js";
3
+ export declare const StacksZeroAddress = "SP000000000000000000002Q6VF78";
4
+ export declare class StacksAddress implements Address {
5
+ static readonly byteSize = 20;
6
+ static readonly platform: "Stacks";
7
+ readonly type: string;
8
+ readonly address: string;
9
+ constructor(address: AnyStacksAddress);
10
+ unwrap(): string;
11
+ toString(): string;
12
+ toNative(): this;
13
+ toUint8Array(): Uint8Array;
14
+ toUniversalAddress(): UniversalAddress;
15
+ static isValidAddress(address: string): boolean;
16
+ static instanceof(address: any): address is StacksAddress;
17
+ equals(other: StacksAddress | UniversalAddress): boolean;
18
+ }
19
+ declare module '@wormhole-foundation/sdk-connect' {
20
+ namespace WormholeRegistry {
21
+ interface PlatformToNativeAddressMapping {
22
+ Stacks: StacksAddress;
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAAa,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGzD,eAAO,MAAM,iBAAiB,kCAAkC,CAAC;AAEjE,qBAAa,aAAc,YAAW,OAAO;IAC3C,MAAM,CAAC,QAAQ,CAAC,QAAQ,MAAM;IAC9B,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAa;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAY;IAEjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEZ,OAAO,EAAE,gBAAgB;IAgBrC,MAAM,IAAI,MAAM;IAIhB,QAAQ,IAAI,MAAM;IAIlB,QAAQ;IAIR,YAAY,IAAI,UAAU;IAI1B,kBAAkB,IAAI,gBAAgB;IAItC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAS/C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,aAAa;IAIzD,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,gBAAgB,GAAG,OAAO;CAOzD;AAED,OAAO,QAAQ,kCAAkC,CAAC;IAChD,UAAiB,gBAAgB,CAAC;QAChC,UAAU,8BAA8B;YACtC,MAAM,EAAE,aAAa,CAAC;SACvB;KACF;CACF"}
@@ -0,0 +1,63 @@
1
+ import { UniversalAddress, registerNative } from "@wormhole-foundation/sdk-connect";
2
+ import { _platform } from "./types.js";
3
+ import { Address as TransactionsAddress } from "@stacks/transactions";
4
+ export const StacksZeroAddress = 'SP000000000000000000002Q6VF78';
5
+ export class StacksAddress {
6
+ static byteSize = 20; // Assuming 20 bytes like EVM
7
+ static platform = _platform;
8
+ type = 'Native';
9
+ address;
10
+ constructor(address) {
11
+ if (StacksAddress.instanceof(address)) {
12
+ const a = address;
13
+ this.address = a.address;
14
+ return;
15
+ }
16
+ if (typeof address === 'string') {
17
+ if (!StacksAddress.isValidAddress(address)) {
18
+ throw new Error(`Invalid Stacks address ${address}`);
19
+ }
20
+ this.address = address;
21
+ }
22
+ else {
23
+ throw new Error(`Invalid Stacks address ${address}`);
24
+ }
25
+ }
26
+ unwrap() {
27
+ return this.address;
28
+ }
29
+ toString() {
30
+ return this.address;
31
+ }
32
+ toNative() {
33
+ return this;
34
+ }
35
+ toUint8Array() {
36
+ return new Uint8Array(Buffer.from(this.address));
37
+ }
38
+ toUniversalAddress() {
39
+ return new UniversalAddress(this.address, "keccak256");
40
+ }
41
+ static isValidAddress(address) {
42
+ try {
43
+ TransactionsAddress.parse(address);
44
+ return true;
45
+ }
46
+ catch (error) {
47
+ return false;
48
+ }
49
+ }
50
+ static instanceof(address) {
51
+ return address.constructor.platform === StacksAddress.platform;
52
+ }
53
+ equals(other) {
54
+ if (StacksAddress.instanceof(other)) {
55
+ return other.address === this.address;
56
+ }
57
+ else {
58
+ return other.equals(this.toUniversalAddress());
59
+ }
60
+ }
61
+ }
62
+ registerNative(_platform, StacksAddress);
63
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,gBAAgB,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAoB,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,+BAA+B,CAAC;AAEjE,MAAM,OAAO,aAAa;IACxB,MAAM,CAAU,QAAQ,GAAG,EAAE,CAAC,CAAC,6BAA6B;IAC5D,MAAM,CAAU,QAAQ,GAAG,SAAS,CAAC;IAC5B,IAAI,GAAW,QAAQ,CAAC;IAExB,OAAO,CAAQ;IAExB,YAAY,OAAyB;QACnC,IAAG,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,OAAmC,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAG,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAG,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IACD,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY;QACV,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,OAAe;QACnC,IAAI,CAAC;YACH,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAM,KAAK,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,OAAY;QAC5B,OAAO,OAAO,CAAC,WAAW,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,KAAuC;QAC5C,IAAI,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;;AAWH,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { ChainContext, ChainToPlatform, Network } from "@wormhole-foundation/sdk-connect";
2
+ import { StacksChains } from "./types.js";
3
+ export declare class StacksChain<N extends Network, C extends StacksChains> extends ChainContext<N, C, ChainToPlatform<C>> {
4
+ }
5
+ //# sourceMappingURL=chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,qBAAa,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CAAE,SAAQ,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;CAEjH"}
@@ -0,0 +1,4 @@
1
+ import { ChainContext } from "@wormhole-foundation/sdk-connect";
2
+ export class StacksChain extends ChainContext {
3
+ }
4
+ //# sourceMappingURL=chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chain.js","sourceRoot":"","sources":["../../src/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,kCAAkC,CAAC;AAG1F,MAAM,OAAO,WAAuD,SAAQ,YAAsC;CAEjH"}
@@ -0,0 +1,6 @@
1
+ export * from './types.js';
2
+ export * from './address.js';
3
+ export * from './chain.js';
4
+ export * from './platform.js';
5
+ export * from './signer.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ // Export all types and functionality from the Stacks platform
2
+ export * from './types.js';
3
+ export * from './address.js';
4
+ export * from './chain.js';
5
+ export * from './platform.js';
6
+ export * from './signer.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { ChainContext, ChainsConfig, ChainToPlatform, Network, PlatformContext, RpcConnection, StaticPlatformMethods, TokenId, TxHash, SignedTx, TokenAddress } from "@wormhole-foundation/sdk-connect";
2
+ import { StacksChains, StacksPlatformType } from "./types.js";
3
+ import { Chain } from "@wormhole-foundation/sdk-connect";
4
+ import { StacksNetwork } from "@stacks/network";
5
+ export declare class StacksPlatform<N extends Network> extends PlatformContext<N, StacksPlatformType> implements StaticPlatformMethods<StacksPlatformType, typeof StacksPlatform> {
6
+ static _platform: "Stacks";
7
+ constructor(network: N, config?: ChainsConfig<N, StacksPlatformType>);
8
+ getRpc(): StacksNetwork;
9
+ getChain<C extends StacksChains>(chain: C, rpc?: RpcConnection<C>): ChainContext<N, C, ChainToPlatform<C>>;
10
+ static isSupportedChain(chain: Chain): boolean;
11
+ static nativeTokenId<N extends Network, C extends StacksChains>(network: N, chain: C): TokenId<C>;
12
+ static isNativeTokenId<N extends Network, C extends StacksChains>(network: N, chain: C, tokenId: TokenId<C>): boolean;
13
+ static getDecimals<C extends StacksChains>(_network: Network, _chain: C, rpc: RpcConnection<C>, token: TokenAddress<C>): Promise<number>;
14
+ static getBalance<C extends StacksChains>(_network: Network, _chain: C, rpc: StacksNetwork, walletAddr: string, token: TokenAddress<C>): Promise<bigint | null>;
15
+ static getLatestBlock<C extends StacksChains>(rpc: RpcConnection<C>): Promise<number>;
16
+ static getLatestFinalizedBlock<C extends StacksChains>(rpc: RpcConnection<C>): Promise<number>;
17
+ static sendWait<C extends StacksChains>(chain: C, rpc: RpcConnection<C>, stxns: SignedTx[]): Promise<TxHash[]>;
18
+ static chainFromChainId(chainId: string): [Network, StacksChains];
19
+ static chainFromRpc(rpc: StacksNetwork): Promise<[Network, StacksChains]>;
20
+ static waitForTx(txId: string | undefined, clientBaseUrl: string, debug?: boolean): Promise<void>;
21
+ }
22
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAmB,eAAe,EAAE,OAAO,EAA0B,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAsB,YAAY,EAAY,MAAM,kCAAkC,CAAC;AAC/Q,OAAO,EAAa,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAEzD,OAAO,EAA4B,aAAa,EAAqB,MAAM,iBAAiB,CAAC;AAI7F,qBAAa,cAAc,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAC1F,YAAW,qBAAqB,CAAC,kBAAkB,EAAE,OAAO,cAAc,CAAC;IAE3E,MAAM,CAAC,SAAS,WAAa;gBAEjB,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,kBAAkB,CAAC;IAO3D,MAAM,IAAI,aAAa;IAMvB,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;IAOnH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAK9C,MAAM,CAAC,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,EAC5D,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,CAAC;IAOb,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,EAC9D,OAAO,EAAE,CAAC,EACV,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,OAAO;WAMG,WAAW,CAAC,CAAC,SAAS,YAAY,EAC7C,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,CAAC;WAmBL,UAAU,CAAC,CAAC,SAAS,YAAY,EAC5C,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,CAAC,EACT,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;WAoBZ,cAAc,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;WAI9E,uBAAuB,CAAC,CAAC,SAAS,YAAY,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;WAIvF,QAAQ,CAAC,CAAC,SAAS,YAAY,EAC1C,KAAK,EAAE,CAAC,EACR,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,EACrB,KAAK,EAAE,QAAQ,EAAE,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC;WAIpD,YAAY,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;WAalE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe;CAgB/F"}
@@ -0,0 +1,121 @@
1
+ import { chainToPlatform, networkPlatformConfigs, PlatformContext, isNative, decimals, Wormhole } from "@wormhole-foundation/sdk-connect";
2
+ import { _platform } from "./types.js";
3
+ import { StacksChain } from "./chain.js";
4
+ import { ChainId, networkFromName } from "@stacks/network";
5
+ import { StacksZeroAddress } from "./address.js";
6
+ import { Cl, cvToValue, fetchCallReadOnlyFunction } from "@stacks/transactions";
7
+ export class StacksPlatform extends PlatformContext {
8
+ static _platform = _platform;
9
+ constructor(network, config) {
10
+ super(network, config ?? networkPlatformConfigs(network, StacksPlatform._platform));
11
+ }
12
+ getRpc() {
13
+ let rpc = networkFromName(this.network.toLowerCase());
14
+ rpc.getNetwork = () => ({ chainId: rpc.chainId });
15
+ return rpc;
16
+ }
17
+ getChain(chain, rpc) {
18
+ if (chain in this.config) {
19
+ return new StacksChain(chain, this, rpc);
20
+ }
21
+ throw new Error("No configuration available for chain: " + chain);
22
+ }
23
+ static isSupportedChain(chain) {
24
+ const platform = chainToPlatform(chain);
25
+ return platform === StacksPlatform._platform;
26
+ }
27
+ static nativeTokenId(network, chain) {
28
+ if (!StacksPlatform.isSupportedChain(chain)) {
29
+ throw new Error(`invalid chain for Stacks: ${chain}`);
30
+ }
31
+ return Wormhole.tokenId(chain, StacksZeroAddress);
32
+ }
33
+ static isNativeTokenId(network, chain, tokenId) {
34
+ if (!StacksPlatform.isSupportedChain(chain))
35
+ return false;
36
+ if (tokenId.chain !== chain)
37
+ return false;
38
+ return tokenId.address.toString() === StacksZeroAddress;
39
+ }
40
+ static async getDecimals(_network, _chain, rpc, token) {
41
+ if (isNative(token))
42
+ return decimals.nativeDecimals(StacksPlatform._platform);
43
+ const [contractAddress, contractName] = token.toString().split(".");
44
+ if (!contractAddress || !contractName) {
45
+ throw new Error("Invalid token address");
46
+ }
47
+ const res = await fetchCallReadOnlyFunction({
48
+ contractName,
49
+ contractAddress,
50
+ functionName: "get-decimals",
51
+ functionArgs: [],
52
+ client: {
53
+ baseUrl: rpc.client.baseUrl,
54
+ },
55
+ senderAddress: StacksZeroAddress
56
+ });
57
+ return Number(cvToValue(res).value);
58
+ }
59
+ static async getBalance(_network, _chain, rpc, walletAddr, token) {
60
+ const [contractAddress, contractName] = token.toString().split(".");
61
+ if (!contractAddress || !contractName) {
62
+ throw new Error("Invalid token address");
63
+ }
64
+ const res = await fetchCallReadOnlyFunction({
65
+ contractName,
66
+ contractAddress,
67
+ functionName: "get-balance",
68
+ functionArgs: [
69
+ Cl.address(walletAddr)
70
+ ],
71
+ client: {
72
+ baseUrl: rpc.client.baseUrl,
73
+ },
74
+ senderAddress: StacksZeroAddress
75
+ });
76
+ return BigInt(cvToValue(res).value);
77
+ }
78
+ static async getLatestBlock(rpc) {
79
+ throw new Error("Method not implemented.");
80
+ }
81
+ static async getLatestFinalizedBlock(rpc) {
82
+ throw new Error("Method not implemented.");
83
+ }
84
+ static async sendWait(chain, rpc, stxns) {
85
+ throw new Error("Method not implemented.");
86
+ }
87
+ static chainFromChainId(chainId) {
88
+ throw new Error("Method not implemented.");
89
+ }
90
+ static async chainFromRpc(rpc) {
91
+ if (rpc.chainId == ChainId.Mainnet) {
92
+ return ['Mainnet', 'Stacks'];
93
+ }
94
+ if (rpc.chainId == ChainId.Testnet) {
95
+ if (rpc.client.baseUrl.includes('localhost') || rpc.client.baseUrl.includes('127.0.0.1')) {
96
+ return ['Devnet', 'Stacks'];
97
+ }
98
+ return ['Testnet', 'Stacks'];
99
+ }
100
+ return ['Devnet', 'Stacks'];
101
+ }
102
+ static async waitForTx(txId, clientBaseUrl, debug = false) {
103
+ if (!txId) {
104
+ throw new Error("No tx id");
105
+ }
106
+ const apiUrl = `${clientBaseUrl}/extended/v1/tx/${txId}`;
107
+ const res = await fetch(apiUrl);
108
+ let data = await res.json();
109
+ let tries = 0;
110
+ while (data.tx_status !== 'success') {
111
+ if (debug)
112
+ console.log(`Waiting for tx ${txId} ... try: ${tries}`);
113
+ await new Promise(resolve => setTimeout(resolve, 1000));
114
+ data = await fetch(apiUrl).then(res => res.json());
115
+ tries++;
116
+ }
117
+ if (debug)
118
+ console.log(`tx mined!: ${txId}`);
119
+ }
120
+ }
121
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Network, SignedTx, SignAndSendSigner, UnsignedTransaction, TxHash } from "@wormhole-foundation/sdk-connect";
2
+ import { StacksChains } from "./types.js";
3
+ import { StacksNetwork } from "@stacks/network";
4
+ export declare function getStacksSigner(rpc: StacksNetwork, privateKey: string): Promise<SignAndSendSigner<Network, StacksChains>>;
5
+ export declare class StacksSigner<N extends Network, C extends StacksChains> implements SignAndSendSigner<N, C> {
6
+ private _chain;
7
+ private _network;
8
+ private _provider;
9
+ private _privKey;
10
+ private readonly _address;
11
+ constructor(_chain: C, _network: Network, _provider: StacksNetwork, _privKey: string);
12
+ signAndSend(txs: UnsignedTransaction<N, C>[]): Promise<TxHash[]>;
13
+ /**
14
+ *
15
+ * Stacks has different types of transactions.
16
+ * We are assuming that we're only signing contract interaction transactions.
17
+ */
18
+ sign(tx: UnsignedTransaction<N, C>[]): Promise<SignedTx[]>;
19
+ chain(): C;
20
+ address(): string;
21
+ }
22
+ //# sourceMappingURL=signer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACrH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,aAAa,EAAqB,MAAM,iBAAiB,CAAC;AAGnE,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAGnD;AAED,qBAAa,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,SAAS,YAAY,CAAE,YAAW,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;IAKnG,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;gBAGvB,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE,OAAO,EACjB,SAAS,EAAE,aAAa,EACxB,QAAQ,EAAE,MAAM;IAKpB,WAAW,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA2BtE;;;;OAIG;IACG,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQhE,KAAK,IAAI,CAAC;IAIV,OAAO,IAAI,MAAM;CAGlB"}
@@ -0,0 +1,63 @@
1
+ import { broadcastTransaction, makeContractCall, privateKeyToAddress } from "@stacks/transactions";
2
+ import { StacksPlatform } from "./platform.js";
3
+ export async function getStacksSigner(rpc, privateKey) {
4
+ const [network, chain] = await StacksPlatform.chainFromRpc(rpc);
5
+ return new StacksSigner(chain, network, rpc, privateKey);
6
+ }
7
+ export class StacksSigner {
8
+ _chain;
9
+ _network;
10
+ _provider;
11
+ _privKey;
12
+ _address;
13
+ constructor(_chain, _network, _provider, _privKey) {
14
+ this._chain = _chain;
15
+ this._network = _network;
16
+ this._provider = _provider;
17
+ this._privKey = _privKey;
18
+ this._address = privateKeyToAddress(this._privKey, this._network.toLowerCase());
19
+ }
20
+ async signAndSend(txs) {
21
+ const signed = [];
22
+ for (const tx of txs) {
23
+ const signedTx = await makeContractCall({
24
+ ...tx.transaction,
25
+ senderKey: this._privKey,
26
+ network: this._network.toLowerCase(),
27
+ client: this._provider.client
28
+ });
29
+ signed.push(signedTx);
30
+ }
31
+ const txHashes = await Promise.all(signed.map(async (signedTx) => {
32
+ const txBroadcastResult = await broadcastTransaction({
33
+ transaction: signedTx,
34
+ client: this._provider.client
35
+ });
36
+ if (txBroadcastResult.error) {
37
+ console.log(signedTx);
38
+ throw new Error(`Failed to broadcast transaction: ${txBroadcastResult.error} ${txBroadcastResult.reason} - ${txBroadcastResult.txid} -`);
39
+ }
40
+ return txBroadcastResult.txid;
41
+ }));
42
+ return txHashes;
43
+ }
44
+ /**
45
+ *
46
+ * Stacks has different types of transactions.
47
+ * We are assuming that we're only signing contract interaction transactions.
48
+ */
49
+ async sign(tx) {
50
+ const signedTxs = tx.map(async (t) => {
51
+ const transaction = t.transaction;
52
+ return makeContractCall(transaction);
53
+ });
54
+ return Promise.all(signedTxs);
55
+ }
56
+ chain() {
57
+ return this._chain;
58
+ }
59
+ address() {
60
+ return this._address;
61
+ }
62
+ }
63
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/signer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAyB,MAAM,sBAAsB,CAAC;AAE1H,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAkB,EAClB,UAAkB;IAElB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,OAAO,YAAY;IAKb;IACA;IACA;IACA;IANO,QAAQ,CAAQ;IAEjC,YACU,MAAS,EACT,QAAiB,EACjB,SAAwB,EACxB,QAAgB;QAHhB,WAAM,GAAN,MAAM,CAAG;QACT,aAAQ,GAAR,QAAQ,CAAS;QACjB,cAAS,GAAT,SAAS,CAAe;QACxB,aAAQ,GAAR,QAAQ,CAAQ;QAExB,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAuB,CAAC,CAAC;IACvG,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAgC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAA;QAC1C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC;gBACtC,GAAG,EAAE,CAAC,WAAW;gBACjB,SAAS,EAAE,IAAI,CAAC,QAAQ;gBACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACpC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;aAC9B,CAAC,CAAA;YACF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACvB,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC/D,MAAM,iBAAiB,GAAQ,MAAM,oBAAoB,CAAC;gBACxD,WAAW,EAAE,QAAQ;gBACrB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;aAC9B,CAAC,CAAA;YACF,IAAG,iBAAiB,CAAC,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;gBACrB,MAAM,IAAI,KAAK,CAAC,oCAAoC,iBAAiB,CAAC,KAAK,IAAI,iBAAiB,CAAC,MAAM,MAAM,iBAAiB,CAAC,IAAI,IAAI,CAAC,CAAA;YAC1I,CAAC;YACD,OAAO,iBAAiB,CAAC,IAAI,CAAA;QAC/B,CAAC,CAAC,CAAC,CAAA;QAEH,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,EAA+B;QACxC,MAAM,SAAS,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;YAClC,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { PlatformToChains, UniversalOrNative } from "@wormhole-foundation/sdk-connect";
2
+ export declare const unusedNonce = 0;
3
+ export declare const unusedArbiterFee = 0n;
4
+ /**
5
+ * Runtime value for the Stacks Platform
6
+ */
7
+ export declare const _platform: 'Stacks';
8
+ /**
9
+ * Type for the Stacks Platform
10
+ */
11
+ export type StacksPlatformType = typeof _platform;
12
+ export type StacksChains = PlatformToChains<StacksPlatformType>;
13
+ export type UniversalOrStacks = UniversalOrNative<StacksChains>;
14
+ export type AnyStacksAddress = UniversalOrStacks | string | Uint8Array;
15
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAEvF,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,QAAmB,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,SAAS,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;AAC/D,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;AAC/D,MAAM,MAAM,gBAAgB,GAAG,iBAAiB,GAAG,MAAM,GAAG,UAAU,CAAC"}
@@ -0,0 +1,7 @@
1
+ export const unusedNonce = 0;
2
+ export const unusedArbiterFee = 0n;
3
+ /**
4
+ * Runtime value for the Stacks Platform
5
+ */
6
+ export const _platform = 'Stacks';
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAa,QAAQ,CAAC"}
package/package.json ADDED
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "@wormhole-foundation/sdk-stacks",
3
+ "version": "3.8.6",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "git+https://github.com/wormhole-foundation/connect-sdk.git"
7
+ },
8
+ "bugs": {
9
+ "url": "https://github.com/wormhole-foundation/connect-sdk/issues"
10
+ },
11
+ "homepage": "https://github.com/wormhole-foundation/connect-sdk#readme",
12
+ "directories": {
13
+ "test": "__tests__"
14
+ },
15
+ "license": "Apache-2.0",
16
+ "main": "./dist/cjs/index.js",
17
+ "types": "./dist/cjs/index.d.ts",
18
+ "module": "./dist/esm/index.js",
19
+ "author": "",
20
+ "description": "SDK for Stacks, used in conjunction with @wormhole-foundation/sdk",
21
+ "files": [
22
+ "dist/esm",
23
+ "dist/cjs"
24
+ ],
25
+ "keywords": [
26
+ "wormhole",
27
+ "sdk",
28
+ "typescript",
29
+ "connect",
30
+ "stacks"
31
+ ],
32
+ "engines": {
33
+ "node": ">=16"
34
+ },
35
+ "sideEffects": [
36
+ "./dist/cjs/address.js",
37
+ "./dist/esm/address.js"
38
+ ],
39
+ "scripts": {
40
+ "build:cjs": "tsc -p ./tsconfig.cjs.json && echo '{\"type\":\"commonjs\"}' > dist/cjs/package.json",
41
+ "build:esm": "tsc -p ./tsconfig.esm.json",
42
+ "build": "npm run build:esm && npm run build:cjs",
43
+ "rebuild": "npm run clean && npm run build",
44
+ "test": "jest --config ./jest.config.ts",
45
+ "clean": "rm -rf ./dist && rm -rf ./.turbo",
46
+ "lint": "npm run prettier && eslint --fix ./src --ext .ts",
47
+ "prettier": "prettier --write ./src"
48
+ },
49
+ "devDependencies": {
50
+ "nock": "^13.3.3"
51
+ },
52
+ "dependencies": {
53
+ "@stacks/network": "^7.0.2",
54
+ "@stacks/transactions": "^7.1.0",
55
+ "@wormhole-foundation/sdk-connect": "3.8.6"
56
+ },
57
+ "type": "module",
58
+ "typesVersions": {
59
+ "*": {
60
+ "*": [
61
+ "dist/cjs/index.d.ts"
62
+ ]
63
+ }
64
+ },
65
+ "exports": {
66
+ ".": {
67
+ "react-native": {
68
+ "import": "./dist/esm/index.js",
69
+ "require": "./dist/cjs/index.js",
70
+ "types": "./dist/cjs/index.d.ts",
71
+ "default": "./dist/cjs/index.js"
72
+ },
73
+ "import": {
74
+ "types": "./dist/esm/index.d.ts",
75
+ "default": "./dist/esm/index.js"
76
+ },
77
+ "require": {
78
+ "types": "./dist/cjs/index.d.ts",
79
+ "default": "./dist/cjs/index.js"
80
+ },
81
+ "default": {
82
+ "types": "./dist/cjs/index.d.ts",
83
+ "default": "./dist/cjs/index.js"
84
+ }
85
+ }
86
+ }
87
+ }