@hyperlane-xyz/sdk 1.5.0 → 1.5.1-beta0
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/app/MultiProtocolApp.d.ts +15 -8
- package/dist/app/MultiProtocolApp.d.ts.map +1 -1
- package/dist/app/MultiProtocolApp.js +22 -7
- package/dist/app/MultiProtocolApp.js.map +1 -1
- package/dist/consts/chainMetadata.d.ts +1 -0
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +29 -7
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts +1 -1
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/adapters/EvmCoreAdapter.d.ts +9 -3
- package/dist/core/adapters/EvmCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/EvmCoreAdapter.js +10 -13
- package/dist/core/adapters/EvmCoreAdapter.js.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.d.ts +11 -3
- package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.js +7 -2
- package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
- package/dist/core/adapters/types.d.ts +1 -2
- package/dist/core/adapters/types.d.ts.map +1 -1
- package/dist/gas/adapters/SealevelIgpAdapter.d.ts +20 -0
- package/dist/gas/adapters/SealevelIgpAdapter.d.ts.map +1 -0
- package/dist/gas/adapters/SealevelIgpAdapter.js +35 -0
- package/dist/gas/adapters/SealevelIgpAdapter.js.map +1 -0
- package/dist/gas/adapters/serialization.d.ts +38 -0
- package/dist/gas/adapters/serialization.d.ts.map +1 -0
- package/dist/gas/adapters/serialization.js +70 -0
- package/dist/gas/adapters/serialization.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -13
- package/dist/index.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts +9 -0
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +46 -7
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +31 -31
- package/dist/metadata/chainMetadataTypes.d.ts +2 -2
- package/dist/providers/MultiProtocolProvider.d.ts +4 -2
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
- package/dist/providers/MultiProtocolProvider.js +9 -2
- package/dist/providers/MultiProtocolProvider.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +0 -5
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +6 -17
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/router/MultiProtocolRouterApps.d.ts +2 -2
- package/dist/router/MultiProtocolRouterApps.d.ts.map +1 -1
- package/dist/router/MultiProtocolRouterApps.js +4 -4
- package/dist/router/MultiProtocolRouterApps.js.map +1 -1
- package/dist/router/adapters/EvmRouterAdapter.d.ts +19 -11
- package/dist/router/adapters/EvmRouterAdapter.d.ts.map +1 -1
- package/dist/router/adapters/EvmRouterAdapter.js +23 -21
- package/dist/router/adapters/EvmRouterAdapter.js.map +1 -1
- package/dist/router/adapters/SealevelRouterAdapter.d.ts +23 -11
- package/dist/router/adapters/SealevelRouterAdapter.d.ts.map +1 -1
- package/dist/router/adapters/SealevelRouterAdapter.js +22 -37
- package/dist/router/adapters/SealevelRouterAdapter.js.map +1 -1
- package/dist/router/adapters/types.d.ts +8 -9
- package/dist/router/adapters/types.d.ts.map +1 -1
- package/dist/{sealevel/serialization.d.ts → utils/sealevelSerialization.d.ts} +1 -1
- package/dist/utils/sealevelSerialization.d.ts.map +1 -0
- package/dist/{sealevel/serialization.js → utils/sealevelSerialization.js} +1 -2
- package/dist/{sealevel/serialization.js.map → utils/sealevelSerialization.js.map} +1 -1
- package/package.json +5 -4
- package/dist/router/adapters/SealevelRouterAdapter.test.d.ts +0 -2
- package/dist/router/adapters/SealevelRouterAdapter.test.d.ts.map +0 -1
- package/dist/router/adapters/SealevelRouterAdapter.test.js +0 -23
- package/dist/router/adapters/SealevelRouterAdapter.test.js.map +0 -1
- package/dist/sealevel/serialization.d.ts.map +0 -1
- package/dist/sealevel/tokenSerialization.d.ts +0 -53
- package/dist/sealevel/tokenSerialization.d.ts.map +0 -1
- package/dist/sealevel/tokenSerialization.js +0 -123
- package/dist/sealevel/tokenSerialization.js.map +0 -1
|
@@ -5,41 +5,43 @@ const core_1 = require("@hyperlane-xyz/core");
|
|
|
5
5
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
6
6
|
const MultiProtocolApp_1 = require("../../app/MultiProtocolApp");
|
|
7
7
|
class EvmRouterAdapter extends MultiProtocolApp_1.BaseEvmAdapter {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
constructor(chainName, multiProvider, addresses) {
|
|
9
|
+
super(chainName, multiProvider);
|
|
10
|
+
this.chainName = chainName;
|
|
11
|
+
this.multiProvider = multiProvider;
|
|
12
|
+
this.addresses = addresses;
|
|
10
13
|
}
|
|
11
|
-
|
|
12
|
-
return this.getConnectedContract(
|
|
14
|
+
interchainSecurityModule() {
|
|
15
|
+
return this.getConnectedContract().interchainSecurityModule();
|
|
13
16
|
}
|
|
14
|
-
|
|
15
|
-
return this.getConnectedContract(
|
|
17
|
+
owner() {
|
|
18
|
+
return this.getConnectedContract().owner();
|
|
16
19
|
}
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
remoteDomains() {
|
|
21
|
+
return this.getConnectedContract().domains();
|
|
22
|
+
}
|
|
23
|
+
async remoteRouter(remoteDomain) {
|
|
24
|
+
const routerAddressesAsBytes32 = await this.getConnectedContract().routers(remoteDomain);
|
|
19
25
|
return (0, utils_1.bytes32ToAddress)(routerAddressesAsBytes32);
|
|
20
26
|
}
|
|
21
|
-
async remoteRouters(
|
|
22
|
-
const domains = await this.remoteDomains(
|
|
23
|
-
const routers = await Promise.all(domains.map((d) => this.remoteRouter(
|
|
27
|
+
async remoteRouters() {
|
|
28
|
+
const domains = await this.remoteDomains();
|
|
29
|
+
const routers = await Promise.all(domains.map((d) => this.remoteRouter(d)));
|
|
24
30
|
return domains.map((d, i) => ({ domain: d, address: routers[i] }));
|
|
25
31
|
}
|
|
26
|
-
getConnectedContract(
|
|
27
|
-
|
|
28
|
-
const provider = this.multiProvider.getEthersV5Provider(chain);
|
|
29
|
-
return core_1.Router__factory.connect(address, provider);
|
|
32
|
+
getConnectedContract() {
|
|
33
|
+
return core_1.Router__factory.connect(this.addresses.router, this.getProvider());
|
|
30
34
|
}
|
|
31
35
|
}
|
|
32
36
|
exports.EvmRouterAdapter = EvmRouterAdapter;
|
|
33
37
|
class EvmGasRouterAdapter extends EvmRouterAdapter {
|
|
34
|
-
async quoteGasPayment(
|
|
38
|
+
async quoteGasPayment(destination) {
|
|
35
39
|
const destDomain = this.multiProvider.getDomainId(destination);
|
|
36
|
-
const amount = await this.getConnectedContract(
|
|
40
|
+
const amount = await this.getConnectedContract().quoteGasPayment(destDomain);
|
|
37
41
|
return amount.toString();
|
|
38
42
|
}
|
|
39
|
-
getConnectedContract(
|
|
40
|
-
|
|
41
|
-
const provider = this.multiProvider.getEthersV5Provider(chain);
|
|
42
|
-
return core_1.GasRouter__factory.connect(address, provider);
|
|
43
|
+
getConnectedContract() {
|
|
44
|
+
return core_1.GasRouter__factory.connect(this.addresses.router, this.getProvider());
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
exports.EvmGasRouterAdapter = EvmGasRouterAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmRouterAdapter.js","sourceRoot":"","sources":["../../../src/router/adapters/EvmRouterAdapter.ts"],"names":[],"mappings":";;;AAAA,8CAK6B;AAC7B,gDAAyE;AAEzE,iEAA4D;AAM5D,MAAa,
|
|
1
|
+
{"version":3,"file":"EvmRouterAdapter.js","sourceRoot":"","sources":["../../../src/router/adapters/EvmRouterAdapter.ts"],"names":[],"mappings":";;;AAAA,8CAK6B;AAC7B,gDAAyE;AAEzE,iEAA4D;AAM5D,MAAa,gBAAiB,SAAQ,iCAAc;IAClD,YACkB,SAAoB,EACpB,aAAyC,EACzC,SAA8B;QAE9C,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAJhB,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAA4B;QACzC,cAAS,GAAT,SAAS,CAAqB;IAGhD,CAAC;IAED,wBAAwB;QACtB,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,wBAAwB,EAAE,CAAC;IAChE,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;IAC7C,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,MAAM,wBAAwB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CACxE,YAAY,CACb,CAAC;QACF,OAAO,IAAA,wBAAgB,EAAC,wBAAwB,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAc,MAAM,OAAO,CAAC,GAAG,CAC1C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACzC,CAAC;QACF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,oBAAoB;QAClB,OAAO,sBAAe,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5E,CAAC;CACF;AAvCD,4CAuCC;AAED,MAAa,mBACX,SAAQ,gBAAgB;IAGxB,KAAK,CAAC,eAAe,CAAC,WAAsB;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC,eAAe,CAC9D,UAAU,CACX,CAAC;QACF,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEQ,oBAAoB;QAC3B,OAAO,yBAAkB,CAAC,OAAO,CAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,EACrB,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;IACJ,CAAC;CACF;AAlBD,kDAkBC"}
|
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
import { PublicKey } from '@solana/web3.js';
|
|
2
2
|
import { Address, Domain } from '@hyperlane-xyz/utils';
|
|
3
3
|
import { BaseSealevelAdapter } from '../../app/MultiProtocolApp';
|
|
4
|
-
import {
|
|
4
|
+
import { MultiProtocolProvider } from '../../providers/MultiProtocolProvider';
|
|
5
5
|
import { ChainName } from '../../types';
|
|
6
|
-
import { RouterAddress } from '../types';
|
|
7
6
|
import { IGasRouterAdapter, IRouterAdapter } from './types';
|
|
8
|
-
export declare class SealevelRouterAdapter
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
export declare class SealevelRouterAdapter extends BaseSealevelAdapter implements IRouterAdapter {
|
|
8
|
+
readonly chainName: ChainName;
|
|
9
|
+
readonly multiProvider: MultiProtocolProvider<any>;
|
|
10
|
+
readonly addresses: {
|
|
11
|
+
router: Address;
|
|
12
|
+
};
|
|
13
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider<any>, addresses: {
|
|
14
|
+
router: Address;
|
|
15
|
+
});
|
|
16
|
+
interchainSecurityModule(): Promise<Address>;
|
|
17
|
+
owner(): Promise<Address>;
|
|
18
|
+
remoteDomains(): Promise<Domain[]>;
|
|
19
|
+
remoteRouter(remoteDomain: Domain): Promise<Address>;
|
|
20
|
+
remoteRouters(): Promise<Array<{
|
|
14
21
|
domain: Domain;
|
|
15
22
|
address: Address;
|
|
16
23
|
}>>;
|
|
17
|
-
getRouterAccountInfo(
|
|
24
|
+
getRouterAccountInfo(): Promise<{
|
|
25
|
+
owner_pub_key?: PublicKey;
|
|
26
|
+
interchain_security_module?: Uint8Array;
|
|
27
|
+
interchain_security_module_pubkey?: PublicKey;
|
|
28
|
+
remote_router_pubkeys: Map<Domain, PublicKey>;
|
|
29
|
+
}>;
|
|
18
30
|
deriveMessageRecipientPda(routerAddress: Address | PublicKey): PublicKey;
|
|
19
31
|
}
|
|
20
|
-
export declare class SealevelGasRouterAdapter
|
|
21
|
-
quoteGasPayment(
|
|
32
|
+
export declare class SealevelGasRouterAdapter extends SealevelRouterAdapter implements IGasRouterAdapter {
|
|
33
|
+
quoteGasPayment(_destination: ChainName): Promise<string>;
|
|
22
34
|
}
|
|
23
35
|
//# sourceMappingURL=SealevelRouterAdapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelRouterAdapter.d.ts","sourceRoot":"","sources":["../../../src/router/adapters/SealevelRouterAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SealevelRouterAdapter.d.ts","sourceRoot":"","sources":["../../../src/router/adapters/SealevelRouterAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5D,qBAAa,qBACX,SAAQ,mBACR,YAAW,cAAc;aAGP,SAAS,EAAE,SAAS;aACpB,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC;aACzC,SAAS,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE;gBAF9B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,qBAAqB,CAAC,GAAG,CAAC,EACzC,SAAS,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE;IAK1C,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAO5C,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAOzB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlC,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASpD,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAS3E,oBAAoB,IAAI,OAAO,CAAC;QAC9B,aAAa,CAAC,EAAE,SAAS,CAAC;QAC1B,0BAA0B,CAAC,EAAE,UAAU,CAAC;QACxC,iCAAiC,CAAC,EAAE,SAAS,CAAC;QAC9C,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;KAC/C,CAAC;IAKF,yBAAyB,CAAC,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS;CAMzE;AAED,qBAAa,wBACX,SAAQ,qBACR,YAAW,iBAAiB;IAEtB,eAAe,CAAC,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;CAGhE"}
|
|
@@ -1,71 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SealevelGasRouterAdapter = exports.SealevelRouterAdapter = void 0;
|
|
4
|
-
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
5
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
6
|
-
const borsh_1 = require("borsh");
|
|
7
4
|
const MultiProtocolApp_1 = require("../../app/MultiProtocolApp");
|
|
8
|
-
const serialization_1 = require("../../sealevel/serialization");
|
|
9
|
-
const tokenSerialization_1 = require("../../sealevel/tokenSerialization");
|
|
10
5
|
class SealevelRouterAdapter extends MultiProtocolApp_1.BaseSealevelAdapter {
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
constructor(chainName, multiProvider, addresses) {
|
|
7
|
+
super(chainName, multiProvider);
|
|
8
|
+
this.chainName = chainName;
|
|
9
|
+
this.multiProvider = multiProvider;
|
|
10
|
+
this.addresses = addresses;
|
|
11
|
+
}
|
|
12
|
+
async interchainSecurityModule() {
|
|
13
|
+
const routerAccountInfo = await this.getRouterAccountInfo();
|
|
13
14
|
if (!routerAccountInfo.interchain_security_module_pubkey)
|
|
14
|
-
throw new Error(`No ism found for router on ${
|
|
15
|
+
throw new Error(`No ism found for router on ${this.chainName}`);
|
|
15
16
|
return routerAccountInfo.interchain_security_module_pubkey.toBase58();
|
|
16
17
|
}
|
|
17
|
-
async owner(
|
|
18
|
-
const routerAccountInfo = await this.getRouterAccountInfo(
|
|
18
|
+
async owner() {
|
|
19
|
+
const routerAccountInfo = await this.getRouterAccountInfo();
|
|
19
20
|
if (!routerAccountInfo.owner_pub_key)
|
|
20
|
-
throw new Error(`No owner found for router on ${
|
|
21
|
+
throw new Error(`No owner found for router on ${this.chainName}`);
|
|
21
22
|
return routerAccountInfo.owner_pub_key.toBase58();
|
|
22
23
|
}
|
|
23
|
-
async remoteDomains(
|
|
24
|
-
const routers = await this.remoteRouters(
|
|
24
|
+
async remoteDomains() {
|
|
25
|
+
const routers = await this.remoteRouters();
|
|
25
26
|
return routers.map((router) => router.domain);
|
|
26
27
|
}
|
|
27
|
-
async remoteRouter(
|
|
28
|
-
const routers = await this.remoteRouters(
|
|
28
|
+
async remoteRouter(remoteDomain) {
|
|
29
|
+
const routers = await this.remoteRouters();
|
|
29
30
|
const addr = routers.find((router) => router.domain === remoteDomain)?.address;
|
|
30
31
|
if (!addr)
|
|
31
32
|
throw new Error(`No router found for ${remoteDomain}`);
|
|
32
33
|
return addr;
|
|
33
34
|
}
|
|
34
|
-
async remoteRouters(
|
|
35
|
-
const routerAccountInfo = await this.getRouterAccountInfo(
|
|
35
|
+
async remoteRouters() {
|
|
36
|
+
const routerAccountInfo = await this.getRouterAccountInfo();
|
|
36
37
|
const domainToPubKey = routerAccountInfo.remote_router_pubkeys;
|
|
37
38
|
return Array.from(domainToPubKey.entries()).map(([domain, pubKey]) => ({
|
|
38
39
|
domain,
|
|
39
40
|
address: pubKey.toBase58(),
|
|
40
41
|
}));
|
|
41
42
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
async getRouterAccountInfo(chain) {
|
|
45
|
-
const address = this.multiProvider.getChainMetadata(chain).router;
|
|
46
|
-
const connection = this.multiProvider.getSolanaWeb3Provider(chain);
|
|
47
|
-
const msgRecipientPda = this.deriveMessageRecipientPda(address);
|
|
48
|
-
const accountInfo = await connection.getAccountInfo(msgRecipientPda);
|
|
49
|
-
if (!accountInfo)
|
|
50
|
-
throw new Error(`No account info found for ${msgRecipientPda.toBase58()}}`);
|
|
51
|
-
const accountData = (0, borsh_1.deserializeUnchecked)(tokenSerialization_1.SealevelHyperlaneTokenDataSchema, serialization_1.SealevelAccountDataWrapper, accountInfo.data);
|
|
52
|
-
return accountData.data;
|
|
43
|
+
getRouterAccountInfo() {
|
|
44
|
+
throw new Error('TODO getRouterAccountInfo not yet implemented');
|
|
53
45
|
}
|
|
54
46
|
// Should match https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/libraries/hyperlane-sealevel-token/src/processor.rs
|
|
55
47
|
deriveMessageRecipientPda(routerAddress) {
|
|
56
|
-
|
|
57
|
-
Buffer.from('hyperlane_message_recipient'),
|
|
58
|
-
Buffer.from('-'),
|
|
59
|
-
Buffer.from('handle'),
|
|
60
|
-
Buffer.from('-'),
|
|
61
|
-
Buffer.from('account_metas'),
|
|
62
|
-
], new web3_js_1.PublicKey(routerAddress));
|
|
63
|
-
return pda;
|
|
48
|
+
return super.derivePda(['hyperlane_message_recipient', '-', 'handle', '-', 'account_metas'], routerAddress);
|
|
64
49
|
}
|
|
65
50
|
}
|
|
66
51
|
exports.SealevelRouterAdapter = SealevelRouterAdapter;
|
|
67
52
|
class SealevelGasRouterAdapter extends SealevelRouterAdapter {
|
|
68
|
-
async quoteGasPayment(
|
|
53
|
+
async quoteGasPayment(_destination) {
|
|
69
54
|
throw new Error('Gas payments not yet supported for sealevel');
|
|
70
55
|
}
|
|
71
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelRouterAdapter.js","sourceRoot":"","sources":["../../../src/router/adapters/SealevelRouterAdapter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SealevelRouterAdapter.js","sourceRoot":"","sources":["../../../src/router/adapters/SealevelRouterAdapter.ts"],"names":[],"mappings":";;;AAIA,iEAAiE;AAMjE,MAAa,qBACX,SAAQ,sCAAmB;IAG3B,YACkB,SAAoB,EACpB,aAAyC,EACzC,SAA8B;QAE9C,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAJhB,cAAS,GAAT,SAAS,CAAW;QACpB,kBAAa,GAAb,aAAa,CAA4B;QACzC,cAAS,GAAT,SAAS,CAAqB;IAGhD,CAAC;IAED,KAAK,CAAC,wBAAwB;QAC5B,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,IAAI,CAAC,iBAAiB,CAAC,iCAAiC;YACtD,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAClE,OAAO,iBAAiB,CAAC,iCAAiC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,IAAI,CAAC,iBAAiB,CAAC,aAAa;YAClC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACpE,OAAO,iBAAiB,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,YAAoB;QACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CACvB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,YAAY,CAC3C,EAAE,OAAO,CAAC;QACX,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5D,MAAM,cAAc,GAAG,iBAAiB,CAAC,qBAAqB,CAAC;QAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,oBAAoB;QAMlB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,+IAA+I;IAC/I,yBAAyB,CAAC,aAAkC;QAC1D,OAAO,KAAK,CAAC,SAAS,CACpB,CAAC,6BAA6B,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,CAAC,EACpE,aAAa,CACd,CAAC;IACJ,CAAC;CACF;AAjED,sDAiEC;AAED,MAAa,wBACX,SAAQ,qBAAqB;IAG7B,KAAK,CAAC,eAAe,CAAC,YAAuB;QAC3C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;CACF;AAPD,4DAOC"}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import { Address, Domain } from '@hyperlane-xyz/utils';
|
|
2
2
|
import { BaseAppAdapter } from '../../app/MultiProtocolApp';
|
|
3
3
|
import { ChainName } from '../../types';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
remoteRouters: (originChain: ChainName) => Promise<Array<{
|
|
4
|
+
export interface IRouterAdapter extends BaseAppAdapter {
|
|
5
|
+
interchainSecurityModule(): Promise<Address>;
|
|
6
|
+
owner: () => Promise<Address>;
|
|
7
|
+
remoteDomains(): Promise<Domain[]>;
|
|
8
|
+
remoteRouter: (remoteDomain: Domain) => Promise<Address>;
|
|
9
|
+
remoteRouters: () => Promise<Array<{
|
|
11
10
|
domain: Domain;
|
|
12
11
|
address: Address;
|
|
13
12
|
}>>;
|
|
14
13
|
}
|
|
15
|
-
export interface IGasRouterAdapter
|
|
16
|
-
quoteGasPayment: (
|
|
14
|
+
export interface IGasRouterAdapter extends IRouterAdapter {
|
|
15
|
+
quoteGasPayment: (destination: ChainName) => Promise<string>;
|
|
17
16
|
}
|
|
18
17
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/router/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/router/adapters/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,aAAa,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,eAAe,EAAE,CAAC,WAAW,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sealevelSerialization.d.ts","sourceRoot":"","sources":["../../src/utils/sealevelSerialization.ts"],"names":[],"mappings":"AAAA,qBAAa,0BAA0B,CAAC,KAAK;aAGf,MAAM,EAAE,GAAG;IAFvC,WAAW,EAAG,MAAM,CAAC;IACrB,IAAI,EAAG,KAAK,CAAC;gBACe,MAAM,EAAE,GAAG;CAGxC;AAED,qBAAa,0BAA0B,CAAC,CAAC;aAIX,MAAM,EAAE,GAAG;IAHvC,WAAW,EAAG,OAAO,CAAC;IACtB,IAAI,EAAG,CAAC,CAAC;gBAEmB,MAAM,EAAE,GAAG;CAGxC;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;;;EAQ3D"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getSealevelAccountDataSchema = exports.SealevelAccountDataWrapper = exports.SealevelInstructionWrapper = void 0;
|
|
4
|
-
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
5
4
|
class SealevelInstructionWrapper {
|
|
6
5
|
constructor(fields) {
|
|
7
6
|
this.fields = fields;
|
|
@@ -27,4 +26,4 @@ function getSealevelAccountDataSchema(DataClass) {
|
|
|
27
26
|
};
|
|
28
27
|
}
|
|
29
28
|
exports.getSealevelAccountDataSchema = getSealevelAccountDataSchema;
|
|
30
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=sealevelSerialization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"sealevelSerialization.js","sourceRoot":"","sources":["../../src/utils/sealevelSerialization.ts"],"names":[],"mappings":";;;AAAA,MAAa,0BAA0B;IAGrC,YAA4B,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AAND,gEAMC;AAED,MAAa,0BAA0B;IAGrC,6EAA6E;IAC7E,YAA4B,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9B,CAAC;CACF;AAPD,gEAOC;AAED,SAAgB,4BAA4B,CAAI,SAAY;IAC1D,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE;YACN,CAAC,aAAa,EAAE,IAAI,CAAC;YACrB,CAAC,MAAM,EAAE,SAAS,CAAC;SACpB;KACF,CAAC;AACJ,CAAC;AARD,oEAQC"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperlane-xyz/sdk",
|
|
3
3
|
"description": "The official SDK for the Hyperlane Network",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.1-beta0",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@hyperlane-xyz/core": "1.5.
|
|
7
|
-
"@hyperlane-xyz/utils": "1.5.
|
|
6
|
+
"@hyperlane-xyz/core": "1.5.1-beta0",
|
|
7
|
+
"@hyperlane-xyz/utils": "1.5.1-beta0",
|
|
8
8
|
"@solana/web3.js": "^1.78.0",
|
|
9
9
|
"@types/coingecko-api": "^1.0.10",
|
|
10
10
|
"@types/debug": "^4.1.7",
|
|
@@ -57,5 +57,6 @@
|
|
|
57
57
|
"test:unit": "mocha --config .mocharc.json './src/**/*.test.ts'",
|
|
58
58
|
"test:hardhat": "hardhat test $(find ./src -name \"*.hardhat-test.ts\")"
|
|
59
59
|
},
|
|
60
|
-
"types": "dist/index.d.ts"
|
|
60
|
+
"types": "dist/index.d.ts",
|
|
61
|
+
"stableVersion": "1.5.0"
|
|
61
62
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelRouterAdapter.test.d.ts","sourceRoot":"","sources":["../../../src/router/adapters/SealevelRouterAdapter.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const borsh_1 = require("borsh");
|
|
4
|
-
const chai_1 = require("chai");
|
|
5
|
-
const serialization_1 = require("../../sealevel/serialization");
|
|
6
|
-
const tokenSerialization_1 = require("../../sealevel/tokenSerialization");
|
|
7
|
-
// Copied from the warp token router program on Solana devnet
|
|
8
|
-
const RAW_ACCOUNT_INFO = '01ff3a280e8466d26bc4e1a5d3d17e73f7b307c082156dd0ffbf8c5f9ae75506d6f14aed87b9d3a2bb5effdbdcd1af363555ff8b6c1311a93c495e6bc722284d2574fb0612012cbc3cc37a2d2e8aaa301fac7e032fbe5d3140f8a12d7445e7fc69f80f60105800000200000061000000a009010000000000c2570100e0ab000000000000020000006100000000000000000000000000000031b5234a896fbc4b3e2f7237592d054716762131c257010000000000000000000000000034a9af13c5555bad0783c220911b9ef59cfdbcef06ddf6e1d765a193d9cbe146ceeb79ac1cb485ed5f5b37913a8cf5857eff00a9e92839550965ffd4d64acaaf46d45df7318e5b4f57c90c487d60625d829b837b256d8b6f7c1f678a52ef123ddc35c248fcc1e1895e5b8c6d5e6dd381f8090a48fffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';
|
|
9
|
-
const OWNER_PUB_KEY = '41dRB2nrYY8Ymjctq4HNa3uF7gRG829pswAjbDtsj6vK';
|
|
10
|
-
describe('SealevelRouterAdapter', () => {
|
|
11
|
-
describe('account info', () => {
|
|
12
|
-
it('correctly deserializes router account info', () => {
|
|
13
|
-
const rawData = Buffer.from(RAW_ACCOUNT_INFO, 'hex');
|
|
14
|
-
const wrappedData = (0, borsh_1.deserializeUnchecked)(tokenSerialization_1.SealevelHyperlaneTokenDataSchema, serialization_1.SealevelAccountDataWrapper, rawData);
|
|
15
|
-
(0, chai_1.expect)(wrappedData.initialized).to.eql(1);
|
|
16
|
-
const data = wrappedData.data;
|
|
17
|
-
(0, chai_1.expect)(data.decimals).to.eql(6);
|
|
18
|
-
(0, chai_1.expect)(data.owner_pub_key?.toBase58()).to.eql(OWNER_PUB_KEY);
|
|
19
|
-
(0, chai_1.expect)(data.remote_router_pubkeys.size).to.eql(2);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=SealevelRouterAdapter.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SealevelRouterAdapter.test.js","sourceRoot":"","sources":["../../../src/router/adapters/SealevelRouterAdapter.test.ts"],"names":[],"mappings":";;AAAA,iCAA6C;AAC7C,+BAA8B;AAE9B,gEAA0E;AAC1E,0EAG2C;AAE3C,6DAA6D;AAC7D,MAAM,gBAAgB,GACpB,wyBAAwyB,CAAC;AAE3yB,MAAM,aAAa,GAAG,8CAA8C,CAAC;AAErE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,IAAA,4BAAoB,EACtC,qDAAgC,EAChC,0CAA0B,EAC1B,OAAO,CACR,CAAC;YACF,IAAA,aAAM,EAAC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAkC,CAAC;YAC5D,IAAA,aAAM,EAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,aAAM,EAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC7D,IAAA,aAAM,EAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../src/sealevel/serialization.ts"],"names":[],"mappings":"AACA,qBAAa,0BAA0B,CAAC,KAAK;aAGf,MAAM,EAAE,GAAG;IAFvC,WAAW,EAAG,MAAM,CAAC;IACrB,IAAI,EAAG,KAAK,CAAC;gBACe,MAAM,EAAE,GAAG;CAGxC;AAED,qBAAa,0BAA0B,CAAC,CAAC;aAIX,MAAM,EAAE,GAAG;IAHvC,WAAW,EAAG,OAAO,CAAC;IACtB,IAAI,EAAG,CAAC,CAAC;gBAEmB,MAAM,EAAE,GAAG;CAGxC;AAED,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;;;EAQ3D"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { PublicKey } from '@solana/web3.js';
|
|
2
|
-
import { Domain } from '@hyperlane-xyz/utils';
|
|
3
|
-
/**
|
|
4
|
-
* Hyperlane Token Borsh Schema
|
|
5
|
-
*/
|
|
6
|
-
export declare class SealevelHyperlaneTokenData {
|
|
7
|
-
readonly fields: any;
|
|
8
|
-
bump: number;
|
|
9
|
-
mailbox: Uint8Array;
|
|
10
|
-
mailbox_pubkey: PublicKey;
|
|
11
|
-
mailbox_process_authority: Uint8Array;
|
|
12
|
-
mailbox_process_authority_pubkey: PublicKey;
|
|
13
|
-
dispatch_authority_bump: number;
|
|
14
|
-
decimals: number;
|
|
15
|
-
remote_decimals: number;
|
|
16
|
-
owner?: Uint8Array;
|
|
17
|
-
owner_pub_key?: PublicKey;
|
|
18
|
-
interchain_security_module?: Uint8Array;
|
|
19
|
-
interchain_security_module_pubkey?: PublicKey;
|
|
20
|
-
interchain_gas_paymaster?: {
|
|
21
|
-
program_id: Uint8Array;
|
|
22
|
-
type: number;
|
|
23
|
-
account: Uint8Array;
|
|
24
|
-
};
|
|
25
|
-
interchain_gas_paymaster_pubkey?: PublicKey;
|
|
26
|
-
interchain_gas_paymaster_account_pubkey?: PublicKey;
|
|
27
|
-
destination_gas?: Map<Domain, bigint>;
|
|
28
|
-
remote_routers?: Map<Domain, Uint8Array>;
|
|
29
|
-
remote_router_pubkeys: Map<Domain, PublicKey>;
|
|
30
|
-
constructor(fields: any);
|
|
31
|
-
}
|
|
32
|
-
export declare const SealevelHyperlaneTokenDataSchema: Map<any, any>;
|
|
33
|
-
/**
|
|
34
|
-
* Transfer Remote Borsh Schema
|
|
35
|
-
*/
|
|
36
|
-
export declare enum SealevelHypTokenInstruction {
|
|
37
|
-
Init = 0,
|
|
38
|
-
TransferRemote = 1,
|
|
39
|
-
EnrollRemoteRouter = 2,
|
|
40
|
-
EnrollRemoteRouters = 3,
|
|
41
|
-
SetInterchainSecurityModule = 4,
|
|
42
|
-
TransferOwnership = 5
|
|
43
|
-
}
|
|
44
|
-
export declare class SealevelTransferRemoteInstruction {
|
|
45
|
-
readonly fields: any;
|
|
46
|
-
destination_domain: number;
|
|
47
|
-
recipient: Uint8Array;
|
|
48
|
-
recipient_pubkey: PublicKey;
|
|
49
|
-
amount_or_id: number;
|
|
50
|
-
constructor(fields: any);
|
|
51
|
-
}
|
|
52
|
-
export declare const SealevelTransferRemoteSchema: Map<any, any>;
|
|
53
|
-
//# sourceMappingURL=tokenSerialization.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenSerialization.d.ts","sourceRoot":"","sources":["../../src/sealevel/tokenSerialization.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAY9C;;GAEG;AAEH,qBAAa,0BAA0B;aAkCT,MAAM,EAAE,GAAG;IAhCvC,IAAI,EAAG,MAAM,CAAC;IAEd,OAAO,EAAG,UAAU,CAAC;IACrB,cAAc,EAAG,SAAS,CAAC;IAE3B,yBAAyB,EAAG,UAAU,CAAC;IACvC,gCAAgC,EAAG,SAAS,CAAC;IAE7C,uBAAuB,EAAG,MAAM,CAAC;IAEjC,QAAQ,EAAG,MAAM,CAAC;IAElB,eAAe,EAAG,MAAM,CAAC;IAEzB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,0BAA0B,CAAC,EAAE,UAAU,CAAC;IACxC,iCAAiC,CAAC,EAAE,SAAS,CAAC;IAE9C,wBAAwB,CAAC,EAAE;QACzB,UAAU,EAAE,UAAU,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;IACF,+BAA+B,CAAC,EAAE,SAAS,CAAC;IAC5C,uCAAuC,CAAC,EAAE,SAAS,CAAC;IAEpD,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACzC,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAClB,MAAM,EAAE,GAAG;CAuBxC;AAED,eAAO,MAAM,gCAAgC,eAqC3C,CAAC;AAEH;;GAEG;AAGH,oBAAY,2BAA2B;IACrC,IAAI,IAAA;IACJ,cAAc,IAAA;IACd,kBAAkB,IAAA;IAClB,mBAAmB,IAAA;IACnB,2BAA2B,IAAA;IAC3B,iBAAiB,IAAA;CAClB;AAED,qBAAa,iCAAiC;aAKhB,MAAM,EAAE,GAAG;IAJvC,kBAAkB,EAAG,MAAM,CAAC;IAC5B,SAAS,EAAG,UAAU,CAAC;IACvB,gBAAgB,EAAG,SAAS,CAAC;IAC7B,YAAY,EAAG,MAAM,CAAC;gBACM,MAAM,EAAE,GAAG;CAIxC;AAED,eAAO,MAAM,4BAA4B,eAsBvC,CAAC"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SealevelTransferRemoteSchema = exports.SealevelTransferRemoteInstruction = exports.SealevelHypTokenInstruction = exports.SealevelHyperlaneTokenDataSchema = exports.SealevelHyperlaneTokenData = void 0;
|
|
4
|
-
/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
|
|
5
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
6
|
-
const serialization_1 = require("./serialization");
|
|
7
|
-
// TODO move this code to the token package
|
|
8
|
-
// after we've defined more accurate data schemas for Routers.
|
|
9
|
-
// Currently the RouterAdapters use this schema as a placeholder
|
|
10
|
-
/**
|
|
11
|
-
* Hyperlane Token Borsh Schema
|
|
12
|
-
*/
|
|
13
|
-
// Should match https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/libraries/hyperlane-sealevel-token/src/accounts.rs#L25C12-L25C26
|
|
14
|
-
class SealevelHyperlaneTokenData {
|
|
15
|
-
constructor(fields) {
|
|
16
|
-
this.fields = fields;
|
|
17
|
-
Object.assign(this, fields);
|
|
18
|
-
this.mailbox_pubkey = new web3_js_1.PublicKey(this.mailbox);
|
|
19
|
-
this.mailbox_pubkey = new web3_js_1.PublicKey(this.mailbox_process_authority);
|
|
20
|
-
this.owner_pub_key = this.owner ? new web3_js_1.PublicKey(this.owner) : undefined;
|
|
21
|
-
this.interchain_security_module_pubkey = this.interchain_security_module
|
|
22
|
-
? new web3_js_1.PublicKey(this.interchain_security_module)
|
|
23
|
-
: undefined;
|
|
24
|
-
this.interchain_gas_paymaster_pubkey = this.interchain_gas_paymaster
|
|
25
|
-
?.program_id
|
|
26
|
-
? new web3_js_1.PublicKey(this.interchain_gas_paymaster.program_id)
|
|
27
|
-
: undefined;
|
|
28
|
-
this.interchain_gas_paymaster_account_pubkey = this.interchain_gas_paymaster
|
|
29
|
-
?.account
|
|
30
|
-
? new web3_js_1.PublicKey(this.interchain_gas_paymaster.account)
|
|
31
|
-
: undefined;
|
|
32
|
-
this.remote_router_pubkeys = new Map();
|
|
33
|
-
if (this.remote_routers) {
|
|
34
|
-
for (const [k, v] of this.remote_routers.entries()) {
|
|
35
|
-
this.remote_router_pubkeys.set(k, new web3_js_1.PublicKey(v));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.SealevelHyperlaneTokenData = SealevelHyperlaneTokenData;
|
|
41
|
-
exports.SealevelHyperlaneTokenDataSchema = new Map([
|
|
42
|
-
[
|
|
43
|
-
serialization_1.SealevelAccountDataWrapper,
|
|
44
|
-
(0, serialization_1.getSealevelAccountDataSchema)(SealevelHyperlaneTokenData),
|
|
45
|
-
],
|
|
46
|
-
[
|
|
47
|
-
SealevelHyperlaneTokenData,
|
|
48
|
-
{
|
|
49
|
-
kind: 'struct',
|
|
50
|
-
fields: [
|
|
51
|
-
['bump', 'u8'],
|
|
52
|
-
['mailbox', [32]],
|
|
53
|
-
['mailbox_process_authority', [32]],
|
|
54
|
-
['dispatch_authority_bump', 'u8'],
|
|
55
|
-
['decimals', 'u8'],
|
|
56
|
-
['remote_decimals', 'u8'],
|
|
57
|
-
['owner', { kind: 'option', type: [32] }],
|
|
58
|
-
['interchain_security_module', { kind: 'option', type: [32] }],
|
|
59
|
-
[
|
|
60
|
-
'interchain_gas_paymaster',
|
|
61
|
-
{
|
|
62
|
-
kind: 'option',
|
|
63
|
-
type: {
|
|
64
|
-
kind: 'struct',
|
|
65
|
-
fields: [
|
|
66
|
-
['program_id', [32]],
|
|
67
|
-
['type', 'u8'],
|
|
68
|
-
['account', [32]],
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
['destination_gas', { kind: 'map', key: 'u32', value: 'u64' }],
|
|
74
|
-
['remote_routers', { kind: 'map', key: 'u32', value: [32] }],
|
|
75
|
-
],
|
|
76
|
-
},
|
|
77
|
-
],
|
|
78
|
-
]);
|
|
79
|
-
/**
|
|
80
|
-
* Transfer Remote Borsh Schema
|
|
81
|
-
*/
|
|
82
|
-
// Should match Instruction in https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/rust/sealevel/libraries/hyperlane-sealevel-token/src/instruction.rs
|
|
83
|
-
var SealevelHypTokenInstruction;
|
|
84
|
-
(function (SealevelHypTokenInstruction) {
|
|
85
|
-
SealevelHypTokenInstruction[SealevelHypTokenInstruction["Init"] = 0] = "Init";
|
|
86
|
-
SealevelHypTokenInstruction[SealevelHypTokenInstruction["TransferRemote"] = 1] = "TransferRemote";
|
|
87
|
-
SealevelHypTokenInstruction[SealevelHypTokenInstruction["EnrollRemoteRouter"] = 2] = "EnrollRemoteRouter";
|
|
88
|
-
SealevelHypTokenInstruction[SealevelHypTokenInstruction["EnrollRemoteRouters"] = 3] = "EnrollRemoteRouters";
|
|
89
|
-
SealevelHypTokenInstruction[SealevelHypTokenInstruction["SetInterchainSecurityModule"] = 4] = "SetInterchainSecurityModule";
|
|
90
|
-
SealevelHypTokenInstruction[SealevelHypTokenInstruction["TransferOwnership"] = 5] = "TransferOwnership";
|
|
91
|
-
})(SealevelHypTokenInstruction || (exports.SealevelHypTokenInstruction = SealevelHypTokenInstruction = {}));
|
|
92
|
-
class SealevelTransferRemoteInstruction {
|
|
93
|
-
constructor(fields) {
|
|
94
|
-
this.fields = fields;
|
|
95
|
-
Object.assign(this, fields);
|
|
96
|
-
this.recipient_pubkey = new web3_js_1.PublicKey(this.recipient);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
exports.SealevelTransferRemoteInstruction = SealevelTransferRemoteInstruction;
|
|
100
|
-
exports.SealevelTransferRemoteSchema = new Map([
|
|
101
|
-
[
|
|
102
|
-
serialization_1.SealevelInstructionWrapper,
|
|
103
|
-
{
|
|
104
|
-
kind: 'struct',
|
|
105
|
-
fields: [
|
|
106
|
-
['instruction', 'u8'],
|
|
107
|
-
['data', SealevelTransferRemoteInstruction],
|
|
108
|
-
],
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
[
|
|
112
|
-
SealevelTransferRemoteInstruction,
|
|
113
|
-
{
|
|
114
|
-
kind: 'struct',
|
|
115
|
-
fields: [
|
|
116
|
-
['destination_domain', 'u32'],
|
|
117
|
-
['recipient', [32]],
|
|
118
|
-
['amount_or_id', 'u256'],
|
|
119
|
-
],
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
]);
|
|
123
|
-
//# sourceMappingURL=tokenSerialization.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenSerialization.js","sourceRoot":"","sources":["../../src/sealevel/tokenSerialization.ts"],"names":[],"mappings":"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"}
|