@agoric/orchestration 0.1.1-dev-6d71e87.0 → 0.1.1-dev-b9091ce.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +16 -16
- package/src/exos/ibc-packet.d.ts +35 -8
- package/src/exos/ibc-packet.d.ts.map +1 -1
- package/src/exos/ibc-packet.js +40 -9
- package/src/exos/packet-tools.d.ts +2 -1
- package/src/exos/packet-tools.d.ts.map +1 -1
- package/src/exos/packet-tools.js +14 -1
- package/tools/ibc-mocks.d.ts +49 -10
- package/tools/ibc-mocks.d.ts.map +1 -1
- package/tools/ibc-mocks.ts +126 -50
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agoric/orchestration",
|
|
3
|
-
"version": "0.1.1-dev-
|
|
3
|
+
"version": "0.1.1-dev-b9091ce.0+b9091ce",
|
|
4
4
|
"description": "Chain abstraction for Agoric's orchestration clients",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -33,19 +33,19 @@
|
|
|
33
33
|
},
|
|
34
34
|
"homepage": "https://github.com/Agoric/agoric-sdk#readme",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@agoric/async-flow": "0.1.1-dev-
|
|
37
|
-
"@agoric/cosmic-proto": "0.4.1-dev-
|
|
38
|
-
"@agoric/ertp": "0.16.3-dev-
|
|
39
|
-
"@agoric/internal": "0.3.3-dev-
|
|
40
|
-
"@agoric/network": "0.1.1-dev-
|
|
41
|
-
"@agoric/notifier": "0.6.3-dev-
|
|
42
|
-
"@agoric/store": "0.9.3-dev-
|
|
43
|
-
"@agoric/time": "0.3.3-dev-
|
|
44
|
-
"@agoric/vat-data": "0.5.3-dev-
|
|
45
|
-
"@agoric/vats": "0.15.2-dev-
|
|
46
|
-
"@agoric/vow": "0.1.1-dev-
|
|
47
|
-
"@agoric/zoe": "0.26.3-dev-
|
|
48
|
-
"@agoric/zone": "0.2.3-dev-
|
|
36
|
+
"@agoric/async-flow": "0.1.1-dev-b9091ce.0+b9091ce",
|
|
37
|
+
"@agoric/cosmic-proto": "0.4.1-dev-b9091ce.0+b9091ce",
|
|
38
|
+
"@agoric/ertp": "0.16.3-dev-b9091ce.0+b9091ce",
|
|
39
|
+
"@agoric/internal": "0.3.3-dev-b9091ce.0+b9091ce",
|
|
40
|
+
"@agoric/network": "0.1.1-dev-b9091ce.0+b9091ce",
|
|
41
|
+
"@agoric/notifier": "0.6.3-dev-b9091ce.0+b9091ce",
|
|
42
|
+
"@agoric/store": "0.9.3-dev-b9091ce.0+b9091ce",
|
|
43
|
+
"@agoric/time": "0.3.3-dev-b9091ce.0+b9091ce",
|
|
44
|
+
"@agoric/vat-data": "0.5.3-dev-b9091ce.0+b9091ce",
|
|
45
|
+
"@agoric/vats": "0.15.2-dev-b9091ce.0+b9091ce",
|
|
46
|
+
"@agoric/vow": "0.1.1-dev-b9091ce.0+b9091ce",
|
|
47
|
+
"@agoric/zoe": "0.26.3-dev-b9091ce.0+b9091ce",
|
|
48
|
+
"@agoric/zone": "0.2.3-dev-b9091ce.0+b9091ce",
|
|
49
49
|
"@cosmjs/encoding": "^0.32.4",
|
|
50
50
|
"@endo/base64": "^1.0.9",
|
|
51
51
|
"@endo/errors": "^1.2.10",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"bs58": "^6.0.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@agoric/swingset-liveslots": "0.10.3-dev-
|
|
59
|
+
"@agoric/swingset-liveslots": "0.10.3-dev-b9091ce.0+b9091ce",
|
|
60
60
|
"@chain-registry/client": "^1.47.4",
|
|
61
61
|
"@cosmjs/amino": "^0.33.0",
|
|
62
62
|
"@cosmjs/proto-signing": "^0.33.0",
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"typeCoverage": {
|
|
100
100
|
"atLeast": 97.7
|
|
101
101
|
},
|
|
102
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "b9091ce4718c00fc3981445b2d76afb1c0134540"
|
|
103
103
|
}
|
package/src/exos/ibc-packet.d.ts
CHANGED
|
@@ -8,7 +8,13 @@ export function prepareIBCTransferSender(zone: import("@agoric/base-zone").Zone,
|
|
|
8
8
|
'@type': "/ibc.applications.transfer.v1.MsgTransfer";
|
|
9
9
|
}) => import("@endo/exo").GuardedKit<{
|
|
10
10
|
public: {
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* @param {Vow<
|
|
13
|
+
* IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>
|
|
14
|
+
* >} match
|
|
15
|
+
* @param {PacketOptions} opts
|
|
16
|
+
*/
|
|
17
|
+
sendPacket(match: Vow<IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket">>, opts: PacketOptions): Vow<{
|
|
12
18
|
eventPattern: import("@endo/patterns").Matcher;
|
|
13
19
|
resultV: Vow<void>;
|
|
14
20
|
}>;
|
|
@@ -24,9 +30,17 @@ export function prepareIBCTransferSender(zone: import("@agoric/base-zone").Zone,
|
|
|
24
30
|
* >
|
|
25
31
|
* >,
|
|
26
32
|
* ]} response
|
|
27
|
-
* @param {
|
|
33
|
+
* @param {{
|
|
34
|
+
* opts: PacketOptions;
|
|
35
|
+
* match: Vow<
|
|
36
|
+
* IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>
|
|
37
|
+
* >;
|
|
38
|
+
* }} ctx
|
|
28
39
|
*/
|
|
29
|
-
onFulfilled([{ sequence }]: [JsonSafe<ResponseTo<TypedJson<"/ibc.applications.transfer.v1.MsgTransfer">>>], ctx:
|
|
40
|
+
onFulfilled([{ sequence }]: [JsonSafe<ResponseTo<TypedJson<"/ibc.applications.transfer.v1.MsgTransfer">>>], ctx: {
|
|
41
|
+
opts: PacketOptions;
|
|
42
|
+
match: Vow<IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket">>;
|
|
43
|
+
}): {
|
|
30
44
|
eventPattern: import("@endo/patterns").Matcher;
|
|
31
45
|
resultV: Vow<void>;
|
|
32
46
|
};
|
|
@@ -35,12 +49,18 @@ export function prepareIBCTransferSender(zone: import("@agoric/base-zone").Zone,
|
|
|
35
49
|
onFulfilled(ackData: any): void;
|
|
36
50
|
};
|
|
37
51
|
}>>) => import("@endo/exo").Guarded<{
|
|
38
|
-
|
|
52
|
+
/**
|
|
53
|
+
* @param {Vow<
|
|
54
|
+
* IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>
|
|
55
|
+
* >} match
|
|
56
|
+
* @param {PacketOptions} opts
|
|
57
|
+
*/
|
|
58
|
+
sendPacket(match: Vow<IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket">>, opts: PacketOptions): Vow<{
|
|
39
59
|
eventPattern: import("@endo/patterns").Matcher;
|
|
40
60
|
resultV: Vow<void>;
|
|
41
61
|
}>;
|
|
42
62
|
}>;
|
|
43
|
-
export function prepareIBCReplyKit(zone: import("@agoric/base-zone").Zone, vowTools: VowTools): (replyPacketPattern: Pattern, matchV: Vow<
|
|
63
|
+
export function prepareIBCReplyKit(zone: import("@agoric/base-zone").Zone, vowTools: VowTools): <E extends IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket"> = IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket">>(replyPacketPattern: Pattern, matchV: Vow<E>, opts: PacketOptions) => {
|
|
44
64
|
eventPattern: import("@endo/patterns").Matcher;
|
|
45
65
|
resultV: Vow<string>;
|
|
46
66
|
};
|
|
@@ -50,12 +70,18 @@ export function prepareIBCTools(zone: import("@agoric/base-zone").Zone, vowTools
|
|
|
50
70
|
}, transferMsg: import("@agoric/cosmic-proto/ibc/applications/transfer/v1/tx.js").MsgTransfer & {
|
|
51
71
|
'@type': "/ibc.applications.transfer.v1.MsgTransfer";
|
|
52
72
|
}) => import("@endo/exo").Guarded<{
|
|
53
|
-
|
|
73
|
+
/**
|
|
74
|
+
* @param {Vow<
|
|
75
|
+
* IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>
|
|
76
|
+
* >} match
|
|
77
|
+
* @param {PacketOptions} opts
|
|
78
|
+
*/
|
|
79
|
+
sendPacket(match: Vow<IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket">>, opts: PacketOptions): Vow<{
|
|
54
80
|
eventPattern: import("@endo/patterns").Matcher;
|
|
55
81
|
resultV: Vow<void>;
|
|
56
82
|
}>;
|
|
57
83
|
}>;
|
|
58
|
-
makeIBCReplyKit: (replyPacketPattern: Pattern, matchV: Vow<
|
|
84
|
+
makeIBCReplyKit: <E extends IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket"> = IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket">>(replyPacketPattern: Pattern, matchV: Vow<E>, opts: PacketOptions) => {
|
|
59
85
|
eventPattern: import("@endo/patterns").Matcher;
|
|
60
86
|
resultV: Vow<string>;
|
|
61
87
|
};
|
|
@@ -63,10 +89,11 @@ export function prepareIBCTools(zone: import("@agoric/base-zone").Zone, vowTools
|
|
|
63
89
|
export type MakeIBCReplyKit = ReturnType<typeof prepareIBCReplyKit>;
|
|
64
90
|
import type { Pattern } from '@endo/patterns';
|
|
65
91
|
import type { VowTools } from '@agoric/vow';
|
|
92
|
+
import type { IBCEvent } from '@agoric/vats';
|
|
66
93
|
import type { Vow } from '@agoric/vow';
|
|
94
|
+
import type { PacketOptions } from './packet-tools.js';
|
|
67
95
|
import type { LocalChainAccount } from '@agoric/vats/src/localchain.js';
|
|
68
96
|
import type { TypedJson } from '@agoric/cosmic-proto';
|
|
69
97
|
import type { ResponseTo } from '@agoric/cosmic-proto';
|
|
70
98
|
import type { JsonSafe } from '@agoric/cosmic-proto';
|
|
71
|
-
import type { PacketOptions } from './packet-tools.js';
|
|
72
99
|
//# sourceMappingURL=ibc-packet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibc-packet.d.ts","sourceRoot":"","sources":["ibc-packet.js"],"names":[],"mappings":"AAMA,4CAA6C,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ibc-packet.d.ts","sourceRoot":"","sources":["ibc-packet.js"],"names":[],"mappings":"AAMA,4CAA6C,MAAM,CAAC;AAsB7C,gDAHI,GAAG,GACD,OAAO,CAgCnB;AAOM,+CAHI,OAAO,mBAAmB,EAAE,IAAI,8BAChC,QAAQ,GAAG;IAAE,eAAe,EAAE,eAAe,CAAA;CAAE,IA0GhD,GAAG,MAFA,UAAU;eAtFH,iBAAiB,CAAC,WAAW,CAAC;;;;;QAU1C;;;;;WAKG;0BAJQ,IACV,SAAa,uBAAuB,CAAC,GAAG,SAAS,eAAe,CAAC,CAC9D,QACO,aAAa;;;;;;QAYxB;;;;;;;;;;;;;;;;WAgBG;oCAbQ,CACV,SACA,WACA,UAAkB,2CAA2C,CAAC,CACvD,CACF,CACF,OACO;YACN,IAAI,EAAE,aAAa,CAAC;YACpB,KAAK,EAAE,IACX,SAAe,uBAAuB,CAAC,GAAG,SAAS,eAAe,CAAC,CAC9D,CAAC;SACH;;;;;;;;GA+CK;IA9ET;;;;;OAKG;sBAJQ,IACV,SAAa,uBAAuB,CAAC,GAAG,SAAS,eAAe,CAAC,CAC9D,QACO,aAAa;;;;GA2E/B;AAaM,yCAHI,OAAO,mBAAmB,EAAE,IAAI,YAChC,QAAQ,IAqC6D,CAAC,SAAjE,SAAS,uBAAuB,CAAC,GAAG,SAAS,eAAe,CAAE,sFACjE,OAAO,UACP,IAAI,CAAC,CAAC,QACN,aAAa;;;EAmBzB;AAQM,sCAHI,OAAO,mBAAmB,EAAE,IAAI,YAChC,QAAQ;;mBArKC,iBAAiB,CAAC,WAAW,CAAC;;;;QAU1C;;;;;WAKG;0BAJQ,IACV,SAAa,uBAAuB,CAAC,GAAG,SAAS,eAAe,CAAC,CAC9D,QACO,aAAa;;;;;sBA2HgD,CAAC,SAAjE,SAAS,uBAAuB,CAAC,GAAG,SAAS,eAAe,CAAE,sFACjE,OAAO,UACP,IAAI,CAAC,CAAC,QACN,aAAa;;;;EAkCzB;8BAba,UAAU,CAAC,OAAO,kBAAkB,CAAC;6BAvOpB,gBAAgB;8BAEf,aAAa;8BACP,cAAc;yBADpB,aAAa;mCAGb,mBAAmB;uCADf,gCAAgC;+BAHlB,sBAAsB;gCAAtB,sBAAsB;8BAAtB,sBAAsB"}
|
package/src/exos/ibc-packet.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { makeTracer } from '@agoric/internal';
|
|
2
2
|
import { base64ToBytes, Shape as NetworkShape } from '@agoric/network';
|
|
3
3
|
import { M } from '@endo/patterns';
|
|
4
4
|
import { E } from '@endo/far';
|
|
@@ -12,6 +12,7 @@ const trace = makeTracer('IBCP');
|
|
|
12
12
|
* @import {Key, Pattern} from '@endo/patterns';
|
|
13
13
|
* @import {JsonSafe, TypedJson, ResponseTo} from '@agoric/cosmic-proto';
|
|
14
14
|
* @import {Vow, VowTools} from '@agoric/vow';
|
|
15
|
+
* @import {IBCEvent, IBCPacket} from '@agoric/vats';
|
|
15
16
|
* @import {LocalChainAccount} from '@agoric/vats/src/localchain.js';
|
|
16
17
|
* @import {PacketOptions} from './packet-tools.js';
|
|
17
18
|
*/
|
|
@@ -88,6 +89,12 @@ export const prepareIBCTransferSender = (zone, { watch, makeIBCReplyKit }) => {
|
|
|
88
89
|
}),
|
|
89
90
|
{
|
|
90
91
|
public: {
|
|
92
|
+
/**
|
|
93
|
+
* @param {Vow<
|
|
94
|
+
* IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>
|
|
95
|
+
* >} match
|
|
96
|
+
* @param {PacketOptions} opts
|
|
97
|
+
*/
|
|
91
98
|
sendPacket(match, opts) {
|
|
92
99
|
const { txExecutor, transferMsg } = this.state;
|
|
93
100
|
return watch(
|
|
@@ -108,10 +115,15 @@ export const prepareIBCTransferSender = (zone, { watch, makeIBCReplyKit }) => {
|
|
|
108
115
|
* >
|
|
109
116
|
* >,
|
|
110
117
|
* ]} response
|
|
111
|
-
* @param {
|
|
118
|
+
* @param {{
|
|
119
|
+
* opts: PacketOptions;
|
|
120
|
+
* match: Vow<
|
|
121
|
+
* IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>
|
|
122
|
+
* >;
|
|
123
|
+
* }} ctx
|
|
112
124
|
*/
|
|
113
125
|
onFulfilled([{ sequence }], ctx) {
|
|
114
|
-
const { match } = ctx;
|
|
126
|
+
const { match, opts } = ctx;
|
|
115
127
|
const { transferMsg } = this.state;
|
|
116
128
|
|
|
117
129
|
// sequence + sourceChannel uniquely identifies a transfer.
|
|
@@ -128,7 +140,7 @@ export const prepareIBCTransferSender = (zone, { watch, makeIBCReplyKit }) => {
|
|
|
128
140
|
const { resultV: ackDataV, ...rest } = makeIBCReplyKit(
|
|
129
141
|
replyPacketPattern,
|
|
130
142
|
match,
|
|
131
|
-
|
|
143
|
+
{ opName: 'transfer', ...opts },
|
|
132
144
|
);
|
|
133
145
|
const resultV = watch(ackDataV, this.facets.verifyTransferSuccess);
|
|
134
146
|
return harden({ resultV, ...rest });
|
|
@@ -160,6 +172,12 @@ export const prepareIBCTransferSender = (zone, { watch, makeIBCReplyKit }) => {
|
|
|
160
172
|
harden(prepareIBCTransferSender);
|
|
161
173
|
|
|
162
174
|
/**
|
|
175
|
+
* `makeIBCReplyKit` creates a pattern for `acknowledgementPacket` and
|
|
176
|
+
* `timeoutPacket` {@link IBCEvent}s using the provided {@link IBCPacket}
|
|
177
|
+
* pattern.
|
|
178
|
+
*
|
|
179
|
+
* Returns a vow that settles when a match is found.
|
|
180
|
+
*
|
|
163
181
|
* @param {import('@agoric/base-zone').Zone} zone
|
|
164
182
|
* @param {VowTools} vowTools
|
|
165
183
|
*/
|
|
@@ -168,14 +186,26 @@ export const prepareIBCReplyKit = (zone, vowTools) => {
|
|
|
168
186
|
const ibcWatcher = zone.exo(
|
|
169
187
|
'ibcResultWatcher',
|
|
170
188
|
M.interface('processIBCWatcher', {
|
|
171
|
-
onFulfilled: M.call(
|
|
189
|
+
onFulfilled: M.call(
|
|
190
|
+
M.splitRecord({ event: M.string() }, { acknowledgement: M.string() }),
|
|
191
|
+
M.splitRecord({}, { opName: M.string(), timeout: M.record() }),
|
|
192
|
+
).returns(Vow$(M.string())),
|
|
172
193
|
}),
|
|
173
194
|
{
|
|
174
|
-
|
|
175
|
-
|
|
195
|
+
/**
|
|
196
|
+
* @param {IBCEvent<'acknowledgementPacket'>
|
|
197
|
+
* | IBCEvent<'timeoutPacket'>} ibcEvent
|
|
198
|
+
* @param {PacketOptions} ctx
|
|
199
|
+
*/
|
|
200
|
+
onFulfilled(ibcEvent, { opName = 'unknown' }) {
|
|
201
|
+
const { event } = ibcEvent;
|
|
176
202
|
switch (event) {
|
|
177
|
-
case 'acknowledgementPacket':
|
|
203
|
+
case 'acknowledgementPacket': {
|
|
204
|
+
const { acknowledgement } = ibcEvent;
|
|
205
|
+
acknowledgement ||
|
|
206
|
+
Fail`acknowledgementPacket missing 'acknowledgement'`;
|
|
178
207
|
return base64ToBytes(acknowledgement);
|
|
208
|
+
}
|
|
179
209
|
case 'timeoutPacket':
|
|
180
210
|
throw Fail`${bare(opName)} operation received timeout packet`;
|
|
181
211
|
default:
|
|
@@ -186,8 +216,9 @@ export const prepareIBCReplyKit = (zone, vowTools) => {
|
|
|
186
216
|
);
|
|
187
217
|
|
|
188
218
|
/**
|
|
219
|
+
* @template {IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>} [E=IBCEvent<'acknowledgementPacket'>| IBCEvent<'timeoutPacket'>]
|
|
189
220
|
* @param {Pattern} replyPacketPattern
|
|
190
|
-
* @param {Vow<
|
|
221
|
+
* @param {Vow<E>} matchV
|
|
191
222
|
* @param {PacketOptions} opts
|
|
192
223
|
*/
|
|
193
224
|
const makeIBCReplyKit = (replyPacketPattern, matchV, opts) => {
|
|
@@ -29,7 +29,7 @@ export type MatchEvent = (pattern: EVow<Pattern>) => Vow<{
|
|
|
29
29
|
match: Vow<any>;
|
|
30
30
|
}>;
|
|
31
31
|
export type PacketSender = {
|
|
32
|
-
sendPacket: (opts: PacketOptions) => Vow<{
|
|
32
|
+
sendPacket: (match: Vow<IBCEvent<"acknowledgementPacket"> | IBCEvent<"timeoutPacket">>, opts: PacketOptions) => Vow<{
|
|
33
33
|
eventPattern: Pattern;
|
|
34
34
|
resultV: Vow<any>;
|
|
35
35
|
}>;
|
|
@@ -48,4 +48,5 @@ import type { EVow } from '@agoric/vow';
|
|
|
48
48
|
import type { VowResolver } from '@agoric/vow';
|
|
49
49
|
import type { Vow } from '@agoric/vow';
|
|
50
50
|
import type { Remote } from '@agoric/vow';
|
|
51
|
+
import type { IBCEvent } from '@agoric/vats';
|
|
51
52
|
//# sourceMappingURL=packet-tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet-tools.d.ts","sourceRoot":"","sources":["packet-tools.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"packet-tools.d.ts","sourceRoot":"","sources":["packet-tools.js"],"names":[],"mappings":"AAgEO,yCAHI,OAAO,mBAAmB,EAAE,IAAI,YAChC,QAAQ;;;;;;;;IAiFX;;OAEG;8BADQ,IAAI,CAAC,SAAS,CAAC;;;;8BApHvB,KAAK,OAAO,CAAC,GACX,IAAI;QAAE,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC;QAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAA;KAAE,CAAC;IAuIzD;;;;OAIG;qCAHQ,OAAO,YAAY,CAAC,SACpB,aAAa,GACX,IAAI,GAAG,CAAC;GAqN5B;mCAhWU,KAAK,OAAO,CAAC,KACX,IAAI;IAAE,QAAQ,EAAE,YAAY,GAAG,CAAC,CAAC;IAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAA;CAAE,CAAC;;gBAKnD,CACT,KAAK,EAAE,IAAI,SAAS,uBAAuB,CAAC,GAAG,SAAS,eAAe,CAAC,CAAC,EACzE,IAAI,EAAE,aAAa,KAChB,IAAI;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,IAAI,GAAG,CAAC,CAAA;KAAE,CAAC;;;;;;4BAU5C,IAAI,CAChB,OAAW,eAAe,EAAE,qBAAqB,EACjD,eAAmB,GAAG,kBAAkB,CACrC;0BA8US,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;8BA5WZ,aAAa;6BAD9C,gBAAgB;+BAIM,mCAAmC;wCAAnC,mCAAmC;0BAHxB,aAAa;iCAAb,aAAa;yBAAb,aAAa;4BAAb,aAAa;8BAE1B,cAAc"}
|
package/src/exos/packet-tools.js
CHANGED
|
@@ -20,7 +20,7 @@ const just = obj => {
|
|
|
20
20
|
* @import {Pattern} from '@endo/patterns';
|
|
21
21
|
* @import {EVow, Remote, Vow, VowResolver, VowTools} from '@agoric/vow';
|
|
22
22
|
* @import {LocalChainAccount} from '@agoric/vats/src/localchain.js';
|
|
23
|
-
* @import {VTransferIBCEvent} from '@agoric/vats';
|
|
23
|
+
* @import {IBCEvent, VTransferIBCEvent} from '@agoric/vats';
|
|
24
24
|
* @import {TargetApp, TargetRegistration} from '@agoric/vats/src/bridge-target.js';
|
|
25
25
|
*/
|
|
26
26
|
|
|
@@ -33,6 +33,7 @@ const just = obj => {
|
|
|
33
33
|
/**
|
|
34
34
|
* @typedef {object} PacketSender
|
|
35
35
|
* @property {(
|
|
36
|
+
* match: Vow<IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>>,
|
|
36
37
|
* opts: PacketOptions,
|
|
37
38
|
* ) => Vow<{ eventPattern: Pattern; resultV: Vow<any> }>} sendPacket
|
|
38
39
|
*/
|
|
@@ -241,6 +242,18 @@ export const preparePacketTools = (zone, vowTools) => {
|
|
|
241
242
|
},
|
|
242
243
|
},
|
|
243
244
|
sendPacketWatcher: {
|
|
245
|
+
/**
|
|
246
|
+
* @param {[
|
|
247
|
+
* {
|
|
248
|
+
* resolver: VowResolver<any>;
|
|
249
|
+
* match: Vow<
|
|
250
|
+
* IBCEvent<'acknowledgementPacket'> | IBCEvent<'timeoutPacket'>
|
|
251
|
+
* >;
|
|
252
|
+
* },
|
|
253
|
+
* Remote<PacketSender>,
|
|
254
|
+
* ]} result
|
|
255
|
+
* @param {{ opts: PacketOptions }} ctx
|
|
256
|
+
*/
|
|
244
257
|
onFulfilled([{ match }, sender], ctx) {
|
|
245
258
|
return watch(E(sender).sendPacket(match, ctx.opts));
|
|
246
259
|
},
|
package/tools/ibc-mocks.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { Any } from '@agoric/cosmic-proto/google/protobuf/any.js';
|
|
|
5
5
|
import type { PacketSDKType } from '@agoric/cosmic-proto/ibc/core/channel/v1/channel.js';
|
|
6
6
|
import { RequestQuery, ResponseQuery } from '@agoric/cosmic-proto/tendermint/abci/types.js';
|
|
7
7
|
import type { IBCChannelID, IBCEvent, VTransferIBCEvent } from '@agoric/vats';
|
|
8
|
-
import type {
|
|
8
|
+
import type { CosmosChainAddress, Denom } from '../src/orchestration-api.js';
|
|
9
9
|
interface EncoderCommon<T> {
|
|
10
10
|
encode: (message: T) => {
|
|
11
11
|
finish: () => Uint8Array;
|
|
@@ -62,18 +62,59 @@ export declare const parseOutgoingTxPacket: (b64: string) => TxBody;
|
|
|
62
62
|
* @returns {string}
|
|
63
63
|
*/
|
|
64
64
|
export declare function buildQueryPacketString(msgs: Any[], opts?: Partial<Omit<RequestQuery, 'path' | 'data'>>): string;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Fields that are common to every vtransfer IBC event.
|
|
67
|
+
*/
|
|
68
|
+
type BuildVTransferEventBaseParams = {
|
|
69
|
+
/**
|
|
70
|
+
* defaults to `cosmos1AccAddress` – set to `agoric1fakeLCAAddress` to
|
|
71
|
+
* simulate an outgoing transfer.
|
|
72
|
+
*/
|
|
73
|
+
sender?: CosmosChainAddress['value'] | string;
|
|
74
|
+
/**
|
|
75
|
+
* defaults to `agoric1fakeLCAAddress` – set differently to simulate
|
|
76
|
+
* an outgoing transfer.
|
|
77
|
+
*/
|
|
78
|
+
receiver?: CosmosChainAddress['value'] | string;
|
|
79
|
+
target?: CosmosChainAddress['value'] | string;
|
|
70
80
|
amount?: bigint;
|
|
71
|
-
denom?:
|
|
81
|
+
denom?: Denom;
|
|
72
82
|
destinationChannel?: IBCChannelID;
|
|
73
83
|
sourceChannel?: IBCChannelID;
|
|
84
|
+
/** supports `bigint` or `string` so tests can pass encoded numbers */
|
|
74
85
|
sequence?: PacketSDKType['sequence'] | JsonSafe<PacketSDKType['sequence']>;
|
|
75
86
|
memo?: string;
|
|
76
87
|
};
|
|
88
|
+
/**
|
|
89
|
+
* Parameters allowed for the ACK-carrying events.
|
|
90
|
+
*/
|
|
91
|
+
type VTransferAckParams = BuildVTransferEventBaseParams & {
|
|
92
|
+
event?: 'acknowledgementPacket' | 'writeAcknowledgement';
|
|
93
|
+
/**
|
|
94
|
+
* if present, helper encodes `{ error: acknowledgementError }`
|
|
95
|
+
* instead of the success result
|
|
96
|
+
*/
|
|
97
|
+
acknowledgementError?: string;
|
|
98
|
+
/** override the default `"agoric123"` relayer address */
|
|
99
|
+
relayer?: string;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Parameters allowed for a timeout event (no ack/relayer).
|
|
103
|
+
*/
|
|
104
|
+
type VTransferTimeoutParams = BuildVTransferEventBaseParams & {
|
|
105
|
+
event: 'timeoutPacket';
|
|
106
|
+
acknowledgementError?: never;
|
|
107
|
+
relayer?: never;
|
|
108
|
+
};
|
|
109
|
+
type VTransferParams = VTransferAckParams | VTransferTimeoutParams;
|
|
110
|
+
/** helper to turn param object into correct return */
|
|
111
|
+
type ExtractEvent<P> = P extends {
|
|
112
|
+
event: infer Ev;
|
|
113
|
+
} ? Ev extends undefined ? 'acknowledgementPacket' : Ev : 'acknowledgementPacket';
|
|
114
|
+
type BuildVTransferEventResult<P extends VTransferParams> = VTransferByEvent<ExtractEvent<P>>;
|
|
115
|
+
type VTransferByEvent<E extends VTransferIBCEvent['event']> = Extract<VTransferIBCEvent, {
|
|
116
|
+
event: E;
|
|
117
|
+
}>;
|
|
77
118
|
/**
|
|
78
119
|
* `buildVTransferEvent` can be used with `transferBridge` to simulate incoming
|
|
79
120
|
* and outgoing IBC fungible tokens transfers to a LocalChain account.
|
|
@@ -96,10 +137,8 @@ type BuildVTransferEventParams = {
|
|
|
96
137
|
*
|
|
97
138
|
* XXX integrate vlocalchain and vtransfer ScopedBridgeManagers
|
|
98
139
|
* in test supports.
|
|
99
|
-
*
|
|
100
|
-
* @param {{BuildVTransferEventParams}} args
|
|
101
140
|
*/
|
|
102
|
-
export declare
|
|
141
|
+
export declare function buildVTransferEvent<P extends VTransferParams>(params: P): BuildVTransferEventResult<P>;
|
|
103
142
|
export declare function createMockAckMap(mockMap: Record<string, {
|
|
104
143
|
msg: string;
|
|
105
144
|
ack: string;
|
package/tools/ibc-mocks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibc-mocks.d.ts","sourceRoot":"","sources":["ibc-mocks.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,6CAA6C,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAEzF,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,+CAA+C,CAAC;AAKvD,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EAER,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ibc-mocks.d.ts","sourceRoot":"","sources":["ibc-mocks.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,6CAA6C,CAAC;AAElE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qDAAqD,CAAC;AAEzF,OAAO,EACL,YAAY,EACZ,aAAa,EACd,MAAM,+CAA+C,CAAC;AAKvD,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EAER,iBAAiB,EAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AAG7E,UAAU,aAAa,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK;QACtB,MAAM,EAAE,MAAM,UAAU,CAAC;KAC1B,CAAC;IACF,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAClB,MAAM,CAkBR;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,SAAgE,GAClE,MAAM,CAIR;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EACxC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,IAAI,GAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAQ9B,GACA,MAAM,CAeR;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAC7C,MAAM,CAER;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,KAAK,MAAM,WAEhD,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,GAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,CAAM,GACtD,MAAM,CAER;AAED;;GAEG;AACH,KAAK,6BAA6B,GAAG;IACnC;;;OAGG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IAE9C;;;OAGG;IACH,QAAQ,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IAEhD,MAAM,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,kBAAkB,CAAC,EAAE,YAAY,CAAC;IAClC,aAAa,CAAC,EAAE,YAAY,CAAC;IAE7B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,KAAK,kBAAkB,GAAG,6BAA6B,GAAG;IACxD,KAAK,CAAC,EAAE,uBAAuB,GAAG,sBAAsB,CAAC;IACzD;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,KAAK,sBAAsB,GAAG,6BAA6B,GAAG;IAC5D,KAAK,EAAE,eAAe,CAAC;IACvB,oBAAoB,CAAC,EAAE,KAAK,CAAC;IAC7B,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB,CAAC;AAEF,KAAK,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;AAEnE,sDAAsD;AACtD,KAAK,YAAY,CAAC,CAAC,IAEjB,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAEzB,EAAE,SAAS,SAAS,GAClB,uBAAuB,GACvB,EAAE,GAEJ,uBAAuB,CAAC;AAE9B,KAAK,yBAAyB,CAAC,CAAC,SAAS,eAAe,IAAI,gBAAgB,CAC1E,YAAY,CAAC,CAAC,CAAC,CAChB,CAAC;AAEF,KAAK,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,CAAC,OAAO,CAAC,IAAI,OAAO,CACnE,iBAAiB,EACjB;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CACb,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,eAAe,EAC3D,MAAM,EAAE,CAAC,GACR,yBAAyB,CAAC,CAAC,CAAC,CA4D9B;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,MAOtD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,GAAI,yBAG3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAM,KAAG,OAAO,CACxD,QAAQ,CAAC,qBAAqB,CAAC,CAQ/B,CAAC"}
|
package/tools/ibc-mocks.ts
CHANGED
|
@@ -21,10 +21,7 @@ import type {
|
|
|
21
21
|
} from '@agoric/vats';
|
|
22
22
|
import { LOCALCHAIN_DEFAULT_ADDRESS } from '@agoric/vats/tools/fake-bridge.js';
|
|
23
23
|
import { atob, btoa, decodeBase64, encodeBase64 } from '@endo/base64';
|
|
24
|
-
import type {
|
|
25
|
-
AccountId,
|
|
26
|
-
CosmosChainAddress,
|
|
27
|
-
} from '../src/orchestration-api.js';
|
|
24
|
+
import type { CosmosChainAddress, Denom } from '../src/orchestration-api.js';
|
|
28
25
|
import { makeQueryPacket, makeTxPacket } from '../src/utils/packet.js';
|
|
29
26
|
|
|
30
27
|
interface EncoderCommon<T> {
|
|
@@ -155,22 +152,78 @@ export function buildQueryPacketString(
|
|
|
155
152
|
return btoa(makeQueryPacket(msgs.map(msg => toRequestQueryJson(msg, opts))));
|
|
156
153
|
}
|
|
157
154
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
155
|
+
/**
|
|
156
|
+
* Fields that are common to every vtransfer IBC event.
|
|
157
|
+
*/
|
|
158
|
+
type BuildVTransferEventBaseParams = {
|
|
159
|
+
/**
|
|
160
|
+
* defaults to `cosmos1AccAddress` – set to `agoric1fakeLCAAddress` to
|
|
161
|
+
* simulate an outgoing transfer.
|
|
162
|
+
*/
|
|
163
|
+
sender?: CosmosChainAddress['value'] | string;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* defaults to `agoric1fakeLCAAddress` – set differently to simulate
|
|
167
|
+
* an outgoing transfer.
|
|
168
|
+
*/
|
|
169
|
+
receiver?: CosmosChainAddress['value'] | string;
|
|
170
|
+
|
|
171
|
+
target?: CosmosChainAddress['value'] | string;
|
|
165
172
|
amount?: bigint;
|
|
166
|
-
denom?:
|
|
173
|
+
denom?: Denom;
|
|
167
174
|
destinationChannel?: IBCChannelID;
|
|
168
175
|
sourceChannel?: IBCChannelID;
|
|
169
|
-
|
|
176
|
+
|
|
177
|
+
/** supports `bigint` or `string` so tests can pass encoded numbers */
|
|
170
178
|
sequence?: PacketSDKType['sequence'] | JsonSafe<PacketSDKType['sequence']>;
|
|
171
179
|
memo?: string;
|
|
172
180
|
};
|
|
173
181
|
|
|
182
|
+
/**
|
|
183
|
+
* Parameters allowed for the ACK-carrying events.
|
|
184
|
+
*/
|
|
185
|
+
type VTransferAckParams = BuildVTransferEventBaseParams & {
|
|
186
|
+
event?: 'acknowledgementPacket' | 'writeAcknowledgement';
|
|
187
|
+
/**
|
|
188
|
+
* if present, helper encodes `{ error: acknowledgementError }`
|
|
189
|
+
* instead of the success result
|
|
190
|
+
*/
|
|
191
|
+
acknowledgementError?: string;
|
|
192
|
+
/** override the default `"agoric123"` relayer address */
|
|
193
|
+
relayer?: string;
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Parameters allowed for a timeout event (no ack/relayer).
|
|
198
|
+
*/
|
|
199
|
+
type VTransferTimeoutParams = BuildVTransferEventBaseParams & {
|
|
200
|
+
event: 'timeoutPacket';
|
|
201
|
+
acknowledgementError?: never;
|
|
202
|
+
relayer?: never;
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
type VTransferParams = VTransferAckParams | VTransferTimeoutParams;
|
|
206
|
+
|
|
207
|
+
/** helper to turn param object into correct return */
|
|
208
|
+
type ExtractEvent<P> =
|
|
209
|
+
// event present?
|
|
210
|
+
P extends { event: infer Ev }
|
|
211
|
+
? // undefined means “use default”
|
|
212
|
+
Ev extends undefined
|
|
213
|
+
? 'acknowledgementPacket'
|
|
214
|
+
: Ev
|
|
215
|
+
: // no `event` entry, use default
|
|
216
|
+
'acknowledgementPacket';
|
|
217
|
+
|
|
218
|
+
type BuildVTransferEventResult<P extends VTransferParams> = VTransferByEvent<
|
|
219
|
+
ExtractEvent<P>
|
|
220
|
+
>;
|
|
221
|
+
|
|
222
|
+
type VTransferByEvent<E extends VTransferIBCEvent['event']> = Extract<
|
|
223
|
+
VTransferIBCEvent,
|
|
224
|
+
{ event: E }
|
|
225
|
+
>;
|
|
226
|
+
|
|
174
227
|
/**
|
|
175
228
|
* `buildVTransferEvent` can be used with `transferBridge` to simulate incoming
|
|
176
229
|
* and outgoing IBC fungible tokens transfers to a LocalChain account.
|
|
@@ -193,47 +246,70 @@ type BuildVTransferEventParams = {
|
|
|
193
246
|
*
|
|
194
247
|
* XXX integrate vlocalchain and vtransfer ScopedBridgeManagers
|
|
195
248
|
* in test supports.
|
|
196
|
-
*
|
|
197
|
-
* @param {{BuildVTransferEventParams}} args
|
|
198
249
|
*/
|
|
199
|
-
export
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
250
|
+
export function buildVTransferEvent<P extends VTransferParams>(
|
|
251
|
+
params: P,
|
|
252
|
+
): BuildVTransferEventResult<P> {
|
|
253
|
+
const {
|
|
254
|
+
event = 'acknowledgementPacket',
|
|
255
|
+
sender = 'cosmos1AccAddress',
|
|
256
|
+
receiver = LOCALCHAIN_DEFAULT_ADDRESS,
|
|
257
|
+
target = LOCALCHAIN_DEFAULT_ADDRESS,
|
|
258
|
+
amount = 10n,
|
|
259
|
+
denom = 'uatom',
|
|
260
|
+
destinationChannel = 'channel-0',
|
|
261
|
+
sourceChannel = 'channel-405',
|
|
262
|
+
sequence = 0n,
|
|
263
|
+
memo = '',
|
|
264
|
+
relayer = 'agoric123',
|
|
265
|
+
acknowledgementError,
|
|
266
|
+
} = params satisfies VTransferParams;
|
|
267
|
+
|
|
268
|
+
const base = {
|
|
269
|
+
type: VTRANSFER_IBC_EVENT,
|
|
270
|
+
blockHeight: 0,
|
|
271
|
+
blockTime: 0,
|
|
272
|
+
event,
|
|
273
|
+
target,
|
|
274
|
+
packet: {
|
|
275
|
+
data: btoa(
|
|
276
|
+
JSON.stringify(
|
|
277
|
+
FungibleTokenPacketData.fromPartial({
|
|
278
|
+
amount: String(amount),
|
|
279
|
+
denom,
|
|
280
|
+
sender,
|
|
281
|
+
receiver,
|
|
282
|
+
memo,
|
|
283
|
+
}),
|
|
284
|
+
),
|
|
285
|
+
),
|
|
286
|
+
destination_channel: destinationChannel as IBCChannelID,
|
|
287
|
+
source_channel: sourceChannel as IBCChannelID,
|
|
288
|
+
destination_port: 'transfer',
|
|
289
|
+
source_port: 'transfer',
|
|
290
|
+
// @ts-expect-error – supports `bigint` or `string` so tests can pass encoded numbers
|
|
291
|
+
sequence,
|
|
292
|
+
} satisfies IBCPacket,
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
/** `timeoutPacket` */
|
|
296
|
+
if (event === 'timeoutPacket') {
|
|
297
|
+
return base as BuildVTransferEventResult<P>;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
/** `acknowledgementPacket`, `writeAcknowledgement`*/
|
|
301
|
+
return {
|
|
302
|
+
...base,
|
|
303
|
+
relayer,
|
|
304
|
+
acknowledgement: btoa(
|
|
220
305
|
JSON.stringify(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
sender,
|
|
225
|
-
receiver,
|
|
226
|
-
memo,
|
|
227
|
-
}),
|
|
306
|
+
acknowledgementError
|
|
307
|
+
? { error: acknowledgementError }
|
|
308
|
+
: { result: 'AQ==' },
|
|
228
309
|
),
|
|
229
310
|
),
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
destination_port: 'transfer',
|
|
233
|
-
source_port: 'transfer',
|
|
234
|
-
sequence,
|
|
235
|
-
} as IBCPacket,
|
|
236
|
-
});
|
|
311
|
+
} as BuildVTransferEventResult<P>;
|
|
312
|
+
}
|
|
237
313
|
|
|
238
314
|
export function createMockAckMap(
|
|
239
315
|
mockMap: Record<string, { msg: string; ack: string }>,
|