@hyperlane-xyz/radix-sdk 18.0.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.
Files changed (46) hide show
  1. package/README.md +43 -0
  2. package/dist/core/populate.d.ts +87 -0
  3. package/dist/core/populate.d.ts.map +1 -0
  4. package/dist/core/populate.js +94 -0
  5. package/dist/core/populate.js.map +1 -0
  6. package/dist/core/query.d.ts +62 -0
  7. package/dist/core/query.d.ts.map +1 -0
  8. package/dist/core/query.js +156 -0
  9. package/dist/core/query.js.map +1 -0
  10. package/dist/core/tx.d.ts +73 -0
  11. package/dist/core/tx.d.ts.map +1 -0
  12. package/dist/core/tx.js +148 -0
  13. package/dist/core/tx.js.map +1 -0
  14. package/dist/index.d.ts +43 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +83 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/utils/base.d.ts +53 -0
  19. package/dist/utils/base.d.ts.map +1 -0
  20. package/dist/utils/base.js +250 -0
  21. package/dist/utils/base.js.map +1 -0
  22. package/dist/utils/signer.d.ts +16 -0
  23. package/dist/utils/signer.d.ts.map +1 -0
  24. package/dist/utils/signer.js +65 -0
  25. package/dist/utils/signer.js.map +1 -0
  26. package/dist/utils/types.d.ts +68 -0
  27. package/dist/utils/types.d.ts.map +1 -0
  28. package/dist/utils/types.js +11 -0
  29. package/dist/utils/types.js.map +1 -0
  30. package/dist/utils/utils.d.ts +6 -0
  31. package/dist/utils/utils.d.ts.map +1 -0
  32. package/dist/utils/utils.js +33 -0
  33. package/dist/utils/utils.js.map +1 -0
  34. package/dist/warp/populate.d.ts +60 -0
  35. package/dist/warp/populate.d.ts.map +1 -0
  36. package/dist/warp/populate.js +75 -0
  37. package/dist/warp/populate.js.map +1 -0
  38. package/dist/warp/query.d.ts +43 -0
  39. package/dist/warp/query.d.ts.map +1 -0
  40. package/dist/warp/query.js +155 -0
  41. package/dist/warp/query.js.map +1 -0
  42. package/dist/warp/tx.d.ts +54 -0
  43. package/dist/warp/tx.d.ts.map +1 -0
  44. package/dist/warp/tx.js +82 -0
  45. package/dist/warp/tx.js.map +1 -0
  46. package/package.json +55 -0
@@ -0,0 +1,65 @@
1
+ import { RadixEngineToolkit, SimpleTransactionBuilder, TransactionBuilder, generateRandomNonce, } from '@radixdlt/radix-engine-toolkit';
2
+ export class RadixSigner {
3
+ networkId;
4
+ gateway;
5
+ base;
6
+ account;
7
+ constructor(networkId, gateway, base, account) {
8
+ this.networkId = networkId;
9
+ this.gateway = gateway;
10
+ this.base = base;
11
+ this.account = account;
12
+ }
13
+ async signAndBroadcast(manifest) {
14
+ // transaction builder from official example:
15
+ // https://github.com/radixdlt/typescript-radix-engine-toolkit?tab=readme-ov-file#constructing-transactions
16
+ const constructionMetadata = await this.gateway.transaction.innerClient.transactionConstruction();
17
+ const transactionHeader = {
18
+ networkId: this.networkId,
19
+ startEpochInclusive: constructionMetadata.ledger_state.epoch,
20
+ endEpochExclusive: constructionMetadata.ledger_state.epoch + 2,
21
+ nonce: generateRandomNonce(),
22
+ notaryPublicKey: this.account.publicKey,
23
+ notaryIsSignatory: true,
24
+ tipPercentage: 0,
25
+ };
26
+ const builder = await TransactionBuilder.new();
27
+ const transaction = await builder
28
+ .header(transactionHeader)
29
+ .manifest(manifest)
30
+ .sign(this.signIntent)
31
+ .notarize(this.notarizeIntent);
32
+ const compiledNotarizedTransaction = await RadixEngineToolkit.NotarizedTransaction.compile(transaction);
33
+ const intentHashTransactionId = await RadixEngineToolkit.NotarizedTransaction.intentHash(transaction);
34
+ await this.gateway.transaction.innerClient.transactionSubmit({
35
+ transactionSubmitRequest: {
36
+ notarized_transaction_hex: Buffer.from(compiledNotarizedTransaction).toString('hex'),
37
+ },
38
+ });
39
+ await this.base.pollForCommit(intentHashTransactionId.id);
40
+ return intentHashTransactionId;
41
+ }
42
+ async getTestnetXrd() {
43
+ const constructionMetadata = await this.gateway.transaction.innerClient.transactionConstruction();
44
+ const freeXrdForAccountTransaction = await SimpleTransactionBuilder.freeXrdFromFaucet({
45
+ networkId: this.networkId,
46
+ toAccount: this.account.address,
47
+ validFromEpoch: constructionMetadata.ledger_state.epoch,
48
+ });
49
+ const intentHashTransactionId = freeXrdForAccountTransaction.transactionId.id;
50
+ await this.gateway.transaction.innerClient.transactionSubmit({
51
+ transactionSubmitRequest: {
52
+ notarized_transaction_hex: freeXrdForAccountTransaction.toHex(),
53
+ },
54
+ });
55
+ await this.base.pollForCommit(intentHashTransactionId);
56
+ return intentHashTransactionId;
57
+ }
58
+ signIntent = (hashToSign) => {
59
+ return this.account.privateKey.signToSignatureWithPublicKey(hashToSign);
60
+ };
61
+ notarizeIntent = (hashToSign) => {
62
+ return this.account.privateKey.signToSignature(hashToSign);
63
+ };
64
+ }
65
+ //# sourceMappingURL=signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../src/utils/signer.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,kBAAkB,EAGlB,wBAAwB,EACxB,kBAAkB,EAIlB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AAKxC,MAAM,OAAO,WAAW;IACZ,SAAS,CAAS;IAClB,OAAO,CAAmB;IAC1B,IAAI,CAAY;IAChB,OAAO,CAAU;IAE3B,YACE,SAAiB,EACjB,OAAyB,EACzB,IAAe,EACf,OAAgB;QAEhB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAC3B,QAA6B;QAE7B,6CAA6C;QAC7C,2GAA2G;QAC3G,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;QAEvE,MAAM,iBAAiB,GAAsB;YAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,mBAAmB,EAAE,oBAAoB,CAAC,YAAY,CAAC,KAAK;YAC5D,iBAAiB,EAAE,oBAAoB,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC;YAC9D,KAAK,EAAE,mBAAmB,EAAE;YAC5B,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACvC,iBAAiB,EAAE,IAAI;YACvB,aAAa,EAAE,CAAC;SACjB,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAyB,MAAM,OAAO;aACpD,MAAM,CAAC,iBAAiB,CAAC;aACzB,QAAQ,CAAC,QAAQ,CAAC;aAClB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;aACrB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEjC,MAAM,4BAA4B,GAChC,MAAM,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAErE,MAAM,uBAAuB,GAC3B,MAAM,kBAAkB,CAAC,oBAAoB,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAExE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC;YAC3D,wBAAwB,EAAE;gBACxB,yBAAyB,EAAE,MAAM,CAAC,IAAI,CACpC,4BAA4B,CAC7B,CAAC,QAAQ,CAAC,KAAK,CAAC;aAClB;SACF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAE1D,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,oBAAoB,GACxB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC;QAEvE,MAAM,4BAA4B,GAChC,MAAM,wBAAwB,CAAC,iBAAiB,CAAC;YAC/C,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC/B,cAAc,EAAE,oBAAoB,CAAC,YAAY,CAAC,KAAK;SACxD,CAAC,CAAC;QAEL,MAAM,uBAAuB,GAC3B,4BAA4B,CAAC,aAAa,CAAC,EAAE,CAAC;QAEhD,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,iBAAiB,CAAC;YAC3D,wBAAwB,EAAE;gBACxB,yBAAyB,EAAE,4BAA4B,CAAC,KAAK,EAAE;aAChE;SACF,CAAC,CAAC;QACH,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC;QAEvD,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEO,UAAU,GAAG,CAAC,UAAsB,EAA0B,EAAE;QACtE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC1E,CAAC,CAAC;IAEM,cAAc,GAAG,CAAC,UAAsB,EAAa,EAAE;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC,CAAC;CACH"}
@@ -0,0 +1,68 @@
1
+ import { PrivateKey, PublicKey } from '@radixdlt/radix-engine-toolkit';
2
+ export declare enum INSTRUCTIONS {
3
+ LOCK_FEE = "lock_fee",
4
+ INSTANTIATE = "instantiate",
5
+ WITHDRAW = "withdraw",
6
+ TRY_DEPOSIT_BATCH_OR_ABORT = "try_deposit_batch_or_abort",
7
+ TRY_DEPOSIT_OR_ABORT = "try_deposit_or_abort",
8
+ CREATE_PROOF_OF_AMOUNT = "create_proof_of_amount"
9
+ }
10
+ export type Account = {
11
+ privateKey: PrivateKey;
12
+ publicKey: PublicKey;
13
+ address: string;
14
+ };
15
+ export interface RadixSDKOptions {
16
+ networkId?: number;
17
+ gasMultiplier?: number;
18
+ }
19
+ export interface MultisigIsmReq {
20
+ validators: string[];
21
+ threshold: number;
22
+ }
23
+ export type MultisigIsms = 'MerkleRootMultisigIsm' | 'MessageIdMultisigIsm' | 'NoopIsm';
24
+ export type Isms = 'MerkleRootMultisigIsm' | 'MessageIdMultisigIsm' | 'RoutingIsm' | 'NoopIsm';
25
+ export interface EntityField {
26
+ field_name: string;
27
+ type_name: string;
28
+ variant_name?: string;
29
+ value?: any;
30
+ elements?: any[];
31
+ fields?: EntityField[];
32
+ hex?: string;
33
+ }
34
+ export interface EntityDetails {
35
+ blueprint_name: string;
36
+ state: {
37
+ fields: EntityField[];
38
+ };
39
+ role_assignments: {
40
+ owner: {
41
+ rule: {
42
+ access_rule: {
43
+ proof_rule: {
44
+ requirement: {
45
+ resource: string;
46
+ };
47
+ };
48
+ };
49
+ };
50
+ };
51
+ };
52
+ }
53
+ export interface Receipt {
54
+ output: {
55
+ programmatic_json: {
56
+ entries: {
57
+ key: {
58
+ value: any;
59
+ };
60
+ value: {
61
+ value: any;
62
+ };
63
+ }[];
64
+ };
65
+ }[];
66
+ error_message?: string;
67
+ }
68
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAGvE,oBAAY,YAAY;IACtB,QAAQ,aAAa;IACrB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;IACrB,0BAA0B,+BAA+B;IACzD,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;CAClD;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GACpB,uBAAuB,GACvB,sBAAsB,GACtB,SAAS,CAAC;AAEd,MAAM,MAAM,IAAI,GACZ,uBAAuB,GACvB,sBAAsB,GACtB,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE;QACL,MAAM,EAAE,WAAW,EAAE,CAAC;KACvB,CAAC;IACF,gBAAgB,EAAE;QAChB,KAAK,EAAE;YACL,IAAI,EAAE;gBACJ,WAAW,EAAE;oBACX,UAAU,EAAE;wBACV,WAAW,EAAE;4BACX,QAAQ,EAAE,MAAM,CAAC;yBAClB,CAAC;qBACH,CAAC;iBACH,CAAC;aACH,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE;QACN,iBAAiB,EAAE;YACjB,OAAO,EAAE;gBACP,GAAG,EAAE;oBACH,KAAK,EAAE,GAAG,CAAC;iBACZ,CAAC;gBACF,KAAK,EAAE;oBACL,KAAK,EAAE,GAAG,CAAC;iBACZ,CAAC;aACH,EAAE,CAAC;SACL,CAAC;KACH,EAAE,CAAC;IACJ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,11 @@
1
+ // https://docs.radixdlt.com/docs/manifest-instructions
2
+ export var INSTRUCTIONS;
3
+ (function (INSTRUCTIONS) {
4
+ INSTRUCTIONS["LOCK_FEE"] = "lock_fee";
5
+ INSTRUCTIONS["INSTANTIATE"] = "instantiate";
6
+ INSTRUCTIONS["WITHDRAW"] = "withdraw";
7
+ INSTRUCTIONS["TRY_DEPOSIT_BATCH_OR_ABORT"] = "try_deposit_batch_or_abort";
8
+ INSTRUCTIONS["TRY_DEPOSIT_OR_ABORT"] = "try_deposit_or_abort";
9
+ INSTRUCTIONS["CREATE_PROOF_OF_AMOUNT"] = "create_proof_of_amount";
10
+ })(INSTRUCTIONS || (INSTRUCTIONS = {}));
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAEA,uDAAuD;AACvD,MAAM,CAAN,IAAY,YAOX;AAPD,WAAY,YAAY;IACtB,qCAAqB,CAAA;IACrB,2CAA2B,CAAA;IAC3B,qCAAqB,CAAA;IACrB,yEAAyD,CAAA;IACzD,6DAA6C,CAAA;IAC7C,iEAAiD,CAAA;AACnD,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB"}
@@ -0,0 +1,6 @@
1
+ import { Value } from '@radixdlt/radix-engine-toolkit';
2
+ import { Account } from './types.js';
3
+ export declare const bytes: (hex: string) => Value;
4
+ export declare const getAccountPrefix: (networkId: number) => string;
5
+ export declare const generateNewEd25519VirtualAccount: (privateKey: string, networkId: number) => Promise<Account>;
6
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAIN,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,eAAO,MAAM,KAAK,QAAS,MAAM,KAAG,KAOnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,cAAe,MAAM,WAmBjD,CAAC;AAEF,eAAO,MAAM,gCAAgC,eAC/B,MAAM,aACP,MAAM,KAChB,QAAQ,OAAO,CAcjB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Convert, LTSRadixEngineToolkit, PrivateKey, ValueKind, array, u8, } from '@radixdlt/radix-engine-toolkit';
2
+ export const bytes = (hex) => {
3
+ return array(ValueKind.U8, ...Array.from(Convert.HexString.toUint8Array(hex).values()).map((item) => u8(item)));
4
+ };
5
+ export const getAccountPrefix = (networkId) => {
6
+ // https://docs.radixdlt.com/docs/concepts-addresses#network-specifiers
7
+ let prefix = 'account_';
8
+ switch (networkId) {
9
+ case 1:
10
+ prefix += 'rdx';
11
+ break;
12
+ case 2:
13
+ prefix += 'tdx_2_';
14
+ break;
15
+ case 242:
16
+ prefix += 'sim';
17
+ break;
18
+ default:
19
+ prefix += `tdx_${networkId.toString(16)}_`;
20
+ }
21
+ return prefix;
22
+ };
23
+ export const generateNewEd25519VirtualAccount = async (privateKey, networkId) => {
24
+ const pk = new PrivateKey.Ed25519(new Uint8Array(Buffer.from(privateKey, 'hex')));
25
+ const publicKey = pk.publicKey();
26
+ const address = await LTSRadixEngineToolkit.Derive.virtualAccountAddress(publicKey, networkId);
27
+ return {
28
+ privateKey: pk,
29
+ publicKey,
30
+ address,
31
+ };
32
+ };
33
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,qBAAqB,EACrB,UAAU,EAEV,SAAS,EACT,KAAK,EACL,EAAE,GACH,MAAM,gCAAgC,CAAC;AAIxC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAW,EAAS,EAAE;IAC1C,OAAO,KAAK,CACV,SAAS,CAAC,EAAE,EACZ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvE,EAAE,CAAC,IAAI,CAAC,CACT,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,EAAE;IACpD,uEAAuE;IACvE,IAAI,MAAM,GAAG,UAAU,CAAC;IAExB,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM;QACR,KAAK,CAAC;YACJ,MAAM,IAAI,QAAQ,CAAC;YACnB,MAAM;QACR,KAAK,GAAG;YACN,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM;QACR;YACE,MAAM,IAAI,OAAO,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC;IAC/C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,EACnD,UAAkB,EAClB,SAAiB,EACC,EAAE;IACpB,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,OAAO,CAC/B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAC/C,CAAC;IACF,MAAM,SAAS,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,qBAAqB,CACtE,SAAS,EACT,SAAS,CACV,CAAC;IACF,OAAO;QACL,UAAU,EAAE,EAAE;QACd,SAAS;QACT,OAAO;KACR,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { RadixBase } from '../utils/base.js';
3
+ import { RadixWarpQuery } from './query.js';
4
+ export declare class RadixWarpPopulate {
5
+ protected gateway: GatewayApiClient;
6
+ protected base: RadixBase;
7
+ protected query: RadixWarpQuery;
8
+ protected packageAddress: string;
9
+ constructor(gateway: GatewayApiClient, base: RadixBase, query: RadixWarpQuery, packageAddress: string);
10
+ createCollateralToken({ from_address, mailbox, origin_denom, }: {
11
+ from_address: string;
12
+ mailbox: string;
13
+ origin_denom: string;
14
+ }): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
15
+ createSyntheticToken({ from_address, mailbox, name, symbol, description, divisibility, }: {
16
+ from_address: string;
17
+ mailbox: string;
18
+ name: string;
19
+ symbol: string;
20
+ description: string;
21
+ divisibility: number;
22
+ }): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
23
+ setTokenOwner({ from_address, token, new_owner, }: {
24
+ from_address: string;
25
+ token: string;
26
+ new_owner: string;
27
+ }): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
28
+ setTokenIsm({ from_address, token, ism, }: {
29
+ from_address: string;
30
+ token: string;
31
+ ism: string;
32
+ }): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
33
+ enrollRemoteRouter({ from_address, token, receiver_domain, receiver_address, gas, }: {
34
+ from_address: string;
35
+ token: string;
36
+ receiver_domain: number;
37
+ receiver_address: string;
38
+ gas: string;
39
+ }): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
40
+ unenrollRemoteRouter({ from_address, token, receiver_domain, }: {
41
+ from_address: string;
42
+ token: string;
43
+ receiver_domain: number;
44
+ }): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
45
+ remoteTransfer({ from_address, token, destination_domain, recipient, amount, max_fee, }: {
46
+ from_address: string;
47
+ token: string;
48
+ destination_domain: number;
49
+ recipient: string;
50
+ amount: string;
51
+ custom_hook_id: string;
52
+ gas_limit: string;
53
+ custom_hook_metadata: string;
54
+ max_fee: {
55
+ denom: string;
56
+ amount: string;
57
+ };
58
+ }): Promise<import("@radixdlt/radix-engine-toolkit").TransactionManifest>;
59
+ }
60
+ //# sourceMappingURL=populate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate.d.ts","sourceRoot":"","sources":["../../src/warp/populate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAmBrE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,qBAAa,iBAAiB;IAC5B,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAG/B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,SAAS,EACf,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,MAAM;IAQjB,qBAAqB,CAAC,EAC3B,YAAY,EACZ,OAAO,EACP,YAAY,GACb,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB;IAUM,oBAAoB,CAAC,EAC1B,YAAY,EACZ,OAAO,EACP,IAAI,EACJ,MAAM,EACN,WAAW,EACX,YAAY,GACb,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB;IAmBY,aAAa,CAAC,EACzB,YAAY,EACZ,KAAK,EACL,SAAS,GACV,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB;IAeY,WAAW,CAAC,EACvB,YAAY,EACZ,KAAK,EACL,GAAG,GACJ,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACb;IASY,kBAAkB,CAAC,EAC9B,YAAY,EACZ,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,GAAG,GACJ,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC;KACb;IASY,oBAAoB,CAAC,EAChC,YAAY,EACZ,KAAK,EACL,eAAe,GAChB,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;KACzB;IASY,cAAc,CAAC,EAC1B,YAAY,EACZ,KAAK,EACL,kBAAkB,EAClB,SAAS,EACT,MAAM,EACN,OAAO,GACR,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C;CA2CF"}
@@ -0,0 +1,75 @@
1
+ import { ManifestBuilder, ValueKind, address, array, bucket, decimal, enumeration, expression, str, u8, u32, } from '@radixdlt/radix-engine-toolkit';
2
+ import { BigNumber } from 'bignumber.js';
3
+ import { Decimal } from 'decimal.js';
4
+ import { assert, strip0x } from '@hyperlane-xyz/utils';
5
+ import { INSTRUCTIONS } from '../utils/types.js';
6
+ import { bytes } from '../utils/utils.js';
7
+ export class RadixWarpPopulate {
8
+ gateway;
9
+ base;
10
+ query;
11
+ packageAddress;
12
+ constructor(gateway, base, query, packageAddress) {
13
+ this.gateway = gateway;
14
+ this.base = base;
15
+ this.query = query;
16
+ this.packageAddress = packageAddress;
17
+ }
18
+ createCollateralToken({ from_address, mailbox, origin_denom, }) {
19
+ return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'HypToken', INSTRUCTIONS.INSTANTIATE, [enumeration(0, address(origin_denom)), address(mailbox)]);
20
+ }
21
+ createSyntheticToken({ from_address, mailbox, name, symbol, description, divisibility, }) {
22
+ return this.base.createCallFunctionManifest(from_address, this.packageAddress, 'HypToken', INSTRUCTIONS.INSTANTIATE, [
23
+ enumeration(1, str(name), str(symbol), str(description), u8(divisibility)),
24
+ address(mailbox),
25
+ ]);
26
+ }
27
+ async setTokenOwner({ from_address, token, new_owner, }) {
28
+ const details = await this.gateway.state.getEntityDetailsVaultAggregated(token);
29
+ const resource = details.details.role_assignments.owner
30
+ .rule.access_rule.proof_rule.requirement.resource;
31
+ return this.base.transfer({
32
+ from_address,
33
+ to_address: new_owner,
34
+ resource_address: resource,
35
+ amount: '1',
36
+ });
37
+ }
38
+ async setTokenIsm({ from_address, token, ism, }) {
39
+ return this.base.createCallMethodManifestWithOwner(from_address, token, 'set_ism', [enumeration(1, address(ism))]);
40
+ }
41
+ async enrollRemoteRouter({ from_address, token, receiver_domain, receiver_address, gas, }) {
42
+ return this.base.createCallMethodManifestWithOwner(from_address, token, 'enroll_remote_router', [u32(receiver_domain), bytes(strip0x(receiver_address)), decimal(gas)]);
43
+ }
44
+ async unenrollRemoteRouter({ from_address, token, receiver_domain, }) {
45
+ return this.base.createCallMethodManifestWithOwner(from_address, token, 'unroll_remote_router', [u32(receiver_domain)]);
46
+ }
47
+ async remoteTransfer({ from_address, token, destination_domain, recipient, amount, max_fee, }) {
48
+ const { origin_denom, divisibility } = await this.query.getToken({ token });
49
+ const tokenAmount = new Decimal(new BigNumber(amount)
50
+ .dividedBy(new BigNumber(10).pow(divisibility))
51
+ .toFixed(divisibility));
52
+ assert(origin_denom, `no origin_denom found on token ${token}`);
53
+ return new ManifestBuilder()
54
+ .callMethod(from_address, INSTRUCTIONS.WITHDRAW, [
55
+ address(origin_denom),
56
+ decimal(tokenAmount),
57
+ ])
58
+ .callMethod(from_address, INSTRUCTIONS.WITHDRAW, [
59
+ address(max_fee.denom),
60
+ decimal(max_fee.amount),
61
+ ])
62
+ .takeFromWorktop(origin_denom, tokenAmount, (builder1, bucketId1) => builder1.takeFromWorktop(max_fee.denom, new Decimal(max_fee.amount), (builder2, bucketId2) => builder2
63
+ .callMethod(token, 'transfer_remote', [
64
+ u32(destination_domain),
65
+ bytes(recipient),
66
+ bucket(bucketId1),
67
+ array(ValueKind.Bucket, bucket(bucketId2)),
68
+ enumeration(0),
69
+ enumeration(0),
70
+ ])
71
+ .callMethod(from_address, INSTRUCTIONS.TRY_DEPOSIT_BATCH_OR_ABORT, [expression('EntireWorktop'), enumeration(0)])))
72
+ .build();
73
+ }
74
+ }
75
+ //# sourceMappingURL=populate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"populate.js","sourceRoot":"","sources":["../../src/warp/populate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { GatewayApiClient } from '@radixdlt/babylon-gateway-api-sdk';
2
+ import { RadixBase } from '../utils/base.js';
3
+ export declare class RadixWarpQuery {
4
+ protected networkId: number;
5
+ protected gateway: GatewayApiClient;
6
+ protected base: RadixBase;
7
+ constructor(networkId: number, gateway: GatewayApiClient, base: RadixBase);
8
+ getToken({ token }: {
9
+ token: string;
10
+ }): Promise<{
11
+ address: string;
12
+ owner: string;
13
+ token_type: 'Collateral' | 'Synthetic';
14
+ mailbox: string;
15
+ ism: string;
16
+ origin_denom: string;
17
+ name: string;
18
+ symbol: string;
19
+ description: string;
20
+ divisibility: number;
21
+ }>;
22
+ getRemoteRouters({ token }: {
23
+ token: string;
24
+ }): Promise<{
25
+ address: string;
26
+ remote_routers: {
27
+ receiver_domain: string;
28
+ receiver_contract: string;
29
+ gas: string;
30
+ }[];
31
+ }>;
32
+ getBridgedSupply({ token }: {
33
+ token: string;
34
+ }): Promise<bigint>;
35
+ quoteRemoteTransfer({ token, destination_domain, }: {
36
+ token: string;
37
+ destination_domain: number;
38
+ }): Promise<{
39
+ resource: string;
40
+ amount: bigint;
41
+ }>;
42
+ }
43
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/warp/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAUrE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,qBAAa,cAAc;IACzB,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;gBAEd,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS;IAM5D,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAC3D,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,YAAY,GAAG,WAAW,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IA0EW,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QACnE,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE;YACd,eAAe,EAAE,MAAM,CAAC;YACxB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,GAAG,EAAE,MAAM,CAAC;SACb,EAAE,CAAC;KACL,CAAC;IA2DW,gBAAgB,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB/D,mBAAmB,CAAC,EAC/B,KAAK,EACL,kBAAkB,GACnB,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CA0DlD"}
@@ -0,0 +1,155 @@
1
+ import { PrivateKey, generateRandomNonce, } from '@radixdlt/radix-engine-toolkit';
2
+ import { BigNumber } from 'bignumber.js';
3
+ import { utils } from 'ethers';
4
+ import { assert } from '@hyperlane-xyz/utils';
5
+ export class RadixWarpQuery {
6
+ networkId;
7
+ gateway;
8
+ base;
9
+ constructor(networkId, gateway, base) {
10
+ this.networkId = networkId;
11
+ this.gateway = gateway;
12
+ this.base = base;
13
+ }
14
+ async getToken({ token }) {
15
+ const details = await this.gateway.state.getEntityDetailsVaultAggregated(token);
16
+ assert(details.details.blueprint_name === 'HypToken', `Expected contract at address ${token} to be "HypToken" but got ${details.details.blueprint_name}`);
17
+ const ownerResource = details.details.role_assignments
18
+ .owner.rule.access_rule.proof_rule.requirement.resource;
19
+ const { items } = await this.gateway.extensions.getResourceHolders(ownerResource);
20
+ const resourceHolders = [
21
+ ...new Set(items.map((item) => item.holder_address)),
22
+ ];
23
+ assert(resourceHolders.length === 1, `expected token holders of resource ${ownerResource} to be one, found ${resourceHolders.length} holders instead`);
24
+ const fields = details.details.state.fields;
25
+ const token_type = fields.find((f) => f.field_name === 'token_type')?.variant_name ?? '';
26
+ assert(token_type === 'Collateral' || token_type === 'Synthetic', `unknown token type: ${token_type}`);
27
+ const ismFields = fields.find((f) => f.field_name === 'ism')?.fields ?? [];
28
+ const tokenTypeFields = fields.find((f) => f.field_name === 'token_type')?.fields ?? [];
29
+ let origin_denom;
30
+ let metadata = {
31
+ name: '',
32
+ symbol: '',
33
+ description: '',
34
+ divisibility: 0,
35
+ };
36
+ if (token_type === 'Collateral') {
37
+ origin_denom =
38
+ tokenTypeFields.find((t) => t.type_name === 'ResourceAddress')?.value ??
39
+ '';
40
+ metadata = await this.base.getMetadata({ resource: origin_denom });
41
+ }
42
+ else if (token_type === 'Synthetic') {
43
+ origin_denom =
44
+ (fields.find((f) => f.field_name === 'resource_manager')?.fields ?? []).find((r) => r.type_name === 'ResourceAddress')?.value ?? '';
45
+ metadata = await this.base.getMetadata({ resource: origin_denom });
46
+ }
47
+ const result = {
48
+ address: token,
49
+ owner: resourceHolders[0],
50
+ token_type: token_type,
51
+ mailbox: fields.find((f) => f.field_name === 'mailbox')?.value ?? '',
52
+ ism: ismFields[0]?.value ?? '',
53
+ origin_denom,
54
+ ...metadata,
55
+ };
56
+ return result;
57
+ }
58
+ async getRemoteRouters({ token }) {
59
+ const details = await this.gateway.state.getEntityDetailsVaultAggregated(token);
60
+ assert(details.details.blueprint_name === 'HypToken', `Expected contract at address ${token} to be "HypToken" but got ${details.details.blueprint_name}`);
61
+ const fields = details.details.state.fields;
62
+ const enrolledRoutersKeyValueStore = fields.find((f) => f.field_name === 'enrolled_routers')?.value ?? '';
63
+ assert(enrolledRoutersKeyValueStore, `found no enrolled routers on token ${token}`);
64
+ const remote_routers = [];
65
+ const { items } = await this.gateway.state.innerClient.keyValueStoreKeys({
66
+ stateKeyValueStoreKeysRequest: {
67
+ key_value_store_address: enrolledRoutersKeyValueStore,
68
+ },
69
+ });
70
+ for (const { key } of items) {
71
+ const { entries } = await this.gateway.state.innerClient.keyValueStoreData({
72
+ stateKeyValueStoreDataRequest: {
73
+ key_value_store_address: enrolledRoutersKeyValueStore,
74
+ keys: [
75
+ {
76
+ key_hex: key.raw_hex,
77
+ },
78
+ ],
79
+ },
80
+ });
81
+ const routerFields = entries[0].value.programmatic_json?.fields ?? [];
82
+ remote_routers.push({
83
+ receiver_domain: routerFields.find((r) => r.field_name === 'domain')?.value ?? '',
84
+ receiver_contract: routerFields.find((r) => r.field_name === 'recipient')?.hex ?? '',
85
+ gas: routerFields.find((r) => r.field_name === 'gas')?.value ?? '',
86
+ });
87
+ }
88
+ const result = {
89
+ address: token,
90
+ remote_routers,
91
+ };
92
+ return result;
93
+ }
94
+ async getBridgedSupply({ token }) {
95
+ const { token_type, origin_denom } = await this.getToken({ token });
96
+ switch (token_type) {
97
+ case 'Collateral': {
98
+ // if the token is collateral we get the token contract balance
99
+ // of the origin denom
100
+ return this.base.getBalance({ address: token, resource: origin_denom });
101
+ }
102
+ case 'Synthetic': {
103
+ // if the token is synthetic we get the total supply of the synthetic
104
+ // resource
105
+ return this.base.getTotalSupply({ resource: origin_denom });
106
+ }
107
+ default: {
108
+ throw new Error(`unknown token type: ${token_type}`);
109
+ }
110
+ }
111
+ }
112
+ async quoteRemoteTransfer({ token, destination_domain, }) {
113
+ const pk = new PrivateKey.Ed25519(new Uint8Array(utils.randomBytes(32)));
114
+ const constructionMetadata = await this.gateway.transaction.innerClient.transactionConstruction();
115
+ const response = await this.gateway.transaction.innerClient.transactionPreview({
116
+ transactionPreviewRequest: {
117
+ manifest: `
118
+ CALL_METHOD
119
+ Address("${token}")
120
+ "quote_remote_transfer"
121
+ ${destination_domain}u32
122
+ Bytes("0000000000000000000000000000000000000000000000000000000000000000")
123
+ Decimal("0")
124
+ ;
125
+ `,
126
+ nonce: generateRandomNonce(),
127
+ signer_public_keys: [
128
+ {
129
+ key_type: 'EddsaEd25519',
130
+ key_hex: pk.publicKeyHex(),
131
+ },
132
+ ],
133
+ flags: {
134
+ use_free_credit: true,
135
+ },
136
+ start_epoch_inclusive: constructionMetadata.ledger_state.epoch,
137
+ end_epoch_exclusive: constructionMetadata.ledger_state.epoch + 2,
138
+ },
139
+ });
140
+ assert(!response.receipt.error_message, `${response.receipt.error_message}`);
141
+ const output = response.receipt.output;
142
+ assert(output.length, `found no output for quote_remote_transfer method`);
143
+ const entries = output[0].programmatic_json.entries;
144
+ assert(entries.length > 0, `quote_remote_transfer returned no resources`);
145
+ assert(entries.length < 2, `quote_remote_transfer returned multiple resources`);
146
+ return {
147
+ resource: entries[0].key.value,
148
+ amount: BigInt(new BigNumber(entries[0].value.value)
149
+ .times(new BigNumber(10).pow(18))
150
+ .integerValue(BigNumber.ROUND_FLOOR)
151
+ .toFixed(0)),
152
+ };
153
+ }
154
+ }
155
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/warp/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { RadixBase } from '../utils/base.js';
2
+ import { RadixSigner } from '../utils/signer.js';
3
+ import { Account } from '../utils/types.js';
4
+ import { RadixWarpPopulate } from './populate.js';
5
+ export declare class RadixWarpTx {
6
+ private account;
7
+ protected base: RadixBase;
8
+ protected populate: RadixWarpPopulate;
9
+ protected signer: RadixSigner;
10
+ constructor(account: Account, base: RadixBase, signer: RadixSigner, populate: RadixWarpPopulate);
11
+ createCollateralToken({ mailbox, origin_denom, }: {
12
+ mailbox: string;
13
+ origin_denom: string;
14
+ }): Promise<string>;
15
+ createSyntheticToken({ mailbox, name, symbol, description, divisibility, }: {
16
+ mailbox: string;
17
+ name: string;
18
+ symbol: string;
19
+ description: string;
20
+ divisibility: number;
21
+ }): Promise<string>;
22
+ setTokenOwner({ token, new_owner, }: {
23
+ token: string;
24
+ new_owner: string;
25
+ }): Promise<void>;
26
+ setTokenIsm({ token, ism }: {
27
+ token: string;
28
+ ism: string;
29
+ }): Promise<void>;
30
+ enrollRemoteRouter({ token, receiver_domain, receiver_address, gas, }: {
31
+ token: string;
32
+ receiver_domain: number;
33
+ receiver_address: string;
34
+ gas: string;
35
+ }): Promise<void>;
36
+ unenrollRemoteRouter({ token, receiver_domain, }: {
37
+ token: string;
38
+ receiver_domain: number;
39
+ }): Promise<void>;
40
+ remoteTransfer({ token, destination_domain, recipient, amount, custom_hook_id, gas_limit, custom_hook_metadata, max_fee, }: {
41
+ token: string;
42
+ destination_domain: number;
43
+ recipient: string;
44
+ amount: string;
45
+ custom_hook_id: string;
46
+ gas_limit: string;
47
+ custom_hook_metadata: string;
48
+ max_fee: {
49
+ denom: string;
50
+ amount: string;
51
+ };
52
+ }): Promise<void>;
53
+ }
54
+ //# sourceMappingURL=tx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../src/warp/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAU;IAEzB,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACtC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC;gBAG5B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,WAAW,EACnB,QAAQ,EAAE,iBAAiB;IAQhB,qBAAqB,CAAC,EACjC,OAAO,EACP,YAAY,GACb,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;KACtB;IAaY,oBAAoB,CAAC,EAChC,OAAO,EACP,IAAI,EACJ,MAAM,EACN,WAAW,EACX,YAAY,GACb,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB;IAgBY,aAAa,CAAC,EACzB,KAAK,EACL,SAAS,GACV,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;KACnB;IAUY,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAU1D,kBAAkB,CAAC,EAC9B,KAAK,EACL,eAAe,EACf,gBAAgB,EAChB,GAAG,GACJ,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,GAAG,EAAE,MAAM,CAAC;KACb;IAYY,oBAAoB,CAAC,EAChC,KAAK,EACL,eAAe,GAChB,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;KACzB;IAUY,cAAc,CAAC,EAC1B,KAAK,EACL,kBAAkB,EAClB,SAAS,EACT,MAAM,EACN,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,OAAO,GACR,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,kBAAkB,EAAE,MAAM,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C;CAeF"}