@agoric/orchestration 0.1.1-dev-43345a5.0 → 0.1.1-dev-2c51185.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/cosmos-api.d.ts +16 -5
- package/src/cosmos-api.d.ts.map +1 -1
- package/src/cosmos-api.ts +15 -4
- package/src/examples/stakeIca.contract.d.ts +2 -0
- package/src/examples/stakeIca.contract.d.ts.map +1 -1
- package/src/exos/README.md +2 -1
- package/src/exos/cosmos-orchestration-account.d.ts +8 -1
- package/src/exos/cosmos-orchestration-account.d.ts.map +1 -1
- package/src/exos/cosmos-orchestration-account.js +23 -3
- package/src/exos/ica-account-kit.d.ts +20 -8
- package/src/exos/ica-account-kit.d.ts.map +1 -1
- package/src/exos/ica-account-kit.js +53 -17
- package/src/exos/remote-chain-facade.d.ts +6 -0
- package/src/exos/remote-chain-facade.d.ts.map +1 -1
- package/src/proposals/start-stakeAtom.d.ts +2 -0
- package/src/proposals/start-stakeAtom.d.ts.map +1 -1
- package/src/proposals/start-stakeOsmo.d.ts +2 -0
- package/src/proposals/start-stakeOsmo.d.ts.map +1 -1
- package/src/typeGuards.d.ts +4 -1
- package/src/typeGuards.d.ts.map +1 -1
- package/src/typeGuards.js +13 -1
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-2c51185.0+2c51185",
|
|
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-2c51185.0+2c51185",
|
|
37
|
+
"@agoric/cosmic-proto": "0.4.1-dev-2c51185.0+2c51185",
|
|
38
|
+
"@agoric/ertp": "0.16.3-dev-2c51185.0+2c51185",
|
|
39
|
+
"@agoric/internal": "0.3.3-dev-2c51185.0+2c51185",
|
|
40
|
+
"@agoric/network": "0.1.1-dev-2c51185.0+2c51185",
|
|
41
|
+
"@agoric/notifier": "0.6.3-dev-2c51185.0+2c51185",
|
|
42
|
+
"@agoric/store": "0.9.3-dev-2c51185.0+2c51185",
|
|
43
|
+
"@agoric/time": "0.3.3-dev-2c51185.0+2c51185",
|
|
44
|
+
"@agoric/vat-data": "0.5.3-dev-2c51185.0+2c51185",
|
|
45
|
+
"@agoric/vats": "0.15.2-dev-2c51185.0+2c51185",
|
|
46
|
+
"@agoric/vow": "0.1.1-dev-2c51185.0+2c51185",
|
|
47
|
+
"@agoric/zoe": "0.26.3-dev-2c51185.0+2c51185",
|
|
48
|
+
"@agoric/zone": "0.2.3-dev-2c51185.0+2c51185",
|
|
49
49
|
"@endo/base64": "^1.0.6",
|
|
50
50
|
"@endo/errors": "^1.2.4",
|
|
51
51
|
"@endo/far": "^1.1.4",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@noble/hashes": "github:paulmillr/noble-hashes#ae060daa6252f3ff2aa2f84e887de0aab491281d"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@agoric/swingset-liveslots": "0.10.3-dev-
|
|
57
|
+
"@agoric/swingset-liveslots": "0.10.3-dev-2c51185.0+2c51185",
|
|
58
58
|
"@chain-registry/client": "^1.47.4",
|
|
59
59
|
"@cosmjs/amino": "^0.32.3",
|
|
60
60
|
"@cosmjs/proto-signing": "^0.32.3",
|
|
@@ -94,5 +94,5 @@
|
|
|
94
94
|
"typeCoverage": {
|
|
95
95
|
"atLeast": 98.1
|
|
96
96
|
},
|
|
97
|
-
"gitHead": "
|
|
97
|
+
"gitHead": "2c5118522c4cde94897aaeac98f6e61beac3a1be"
|
|
98
98
|
}
|
package/src/cosmos-api.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import type { MsgTransfer } from '@agoric/cosmic-proto/ibc/applications/transfer
|
|
|
5
5
|
import type { State as IBCChannelState, Order } from '@agoric/cosmic-proto/ibc/core/channel/v1/channel.js';
|
|
6
6
|
import type { State as IBCConnectionState } from '@agoric/cosmic-proto/ibc/core/connection/v1/connection.js';
|
|
7
7
|
import type { RequestQuery, ResponseQuery } from '@agoric/cosmic-proto/tendermint/abci/types.js';
|
|
8
|
-
import type {
|
|
8
|
+
import type { Payment, Amount } from '@agoric/ertp/src/types.js';
|
|
9
9
|
import type { Port } from '@agoric/network';
|
|
10
10
|
import type { IBCChannelID, IBCConnectionID } from '@agoric/vats';
|
|
11
11
|
import type { TargetApp, TargetRegistration } from '@agoric/vats/src/bridge-target.js';
|
|
@@ -166,12 +166,23 @@ export interface IcaAccount {
|
|
|
166
166
|
* @returns acknowledgement string
|
|
167
167
|
*/
|
|
168
168
|
executeEncodedTx: (msgs: AnyJson[], opts?: Partial<Omit<TxBody, 'messages'>>) => Promise<string>;
|
|
169
|
-
/** get Purse for a brand to .withdraw() a Payment from the account */
|
|
170
|
-
getPurse: (brand: Brand) => Promise<Purse>;
|
|
171
169
|
/**
|
|
172
|
-
*
|
|
170
|
+
* Deactivates the ICA account by closing the ICA channel. The `Port` is
|
|
171
|
+
* persisted so holders can always call `.reactivate()` to re-establish a new
|
|
172
|
+
* channel with the same chain address.
|
|
173
|
+
* CAVEAT: Does not retrieve assets so they may be lost if left.
|
|
174
|
+
* @throws {Error} if connection is not available or already deactivated
|
|
173
175
|
*/
|
|
174
|
-
|
|
176
|
+
deactivate: () => Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Reactivates the ICA account by re-establishing a new channel with the
|
|
179
|
+
* original Port and requested address.
|
|
180
|
+
* If a channel is closed for an unexpected reason, such as a packet timeout,
|
|
181
|
+
* an automatic attempt to re will be made and the holder should not need
|
|
182
|
+
* to call `.reactivate()`.
|
|
183
|
+
* @throws {Error} if connection is currently active
|
|
184
|
+
*/
|
|
185
|
+
reactivate: () => Promise<void>;
|
|
175
186
|
/** @returns the address of the remote channel */
|
|
176
187
|
getRemoteAddress: () => RemoteIbcAddress;
|
|
177
188
|
/** @returns the address of the local channel */
|
package/src/cosmos-api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmos-api.d.ts","sourceRoot":"","sources":["cosmos-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,mBAAmB,EACpB,MAAM,wDAAwD,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yDAAyD,CAAC;AAC3F,OAAO,KAAK,EACV,KAAK,IAAI,eAAe,EACxB,KAAK,EACN,MAAM,qDAAqD,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,IAAI,kBAAkB,EAAE,MAAM,2DAA2D,CAAC;AAC7G,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACd,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"cosmos-api.d.ts","sourceRoot":"","sources":["cosmos-api.ts"],"names":[],"mappings":"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"}
|
package/src/cosmos-api.ts
CHANGED
|
@@ -216,12 +216,23 @@ export interface IcaAccount {
|
|
|
216
216
|
msgs: AnyJson[],
|
|
217
217
|
opts?: Partial<Omit<TxBody, 'messages'>>,
|
|
218
218
|
) => Promise<string>;
|
|
219
|
-
/** get Purse for a brand to .withdraw() a Payment from the account */
|
|
220
|
-
getPurse: (brand: Brand) => Promise<Purse>;
|
|
221
219
|
/**
|
|
222
|
-
*
|
|
220
|
+
* Deactivates the ICA account by closing the ICA channel. The `Port` is
|
|
221
|
+
* persisted so holders can always call `.reactivate()` to re-establish a new
|
|
222
|
+
* channel with the same chain address.
|
|
223
|
+
* CAVEAT: Does not retrieve assets so they may be lost if left.
|
|
224
|
+
* @throws {Error} if connection is not available or already deactivated
|
|
223
225
|
*/
|
|
224
|
-
|
|
226
|
+
deactivate: () => Promise<void>;
|
|
227
|
+
/**
|
|
228
|
+
* Reactivates the ICA account by re-establishing a new channel with the
|
|
229
|
+
* original Port and requested address.
|
|
230
|
+
* If a channel is closed for an unexpected reason, such as a packet timeout,
|
|
231
|
+
* an automatic attempt to re will be made and the holder should not need
|
|
232
|
+
* to call `.reactivate()`.
|
|
233
|
+
* @throws {Error} if connection is currently active
|
|
234
|
+
*/
|
|
235
|
+
reactivate: () => Promise<void>;
|
|
225
236
|
/** @returns the address of the remote channel */
|
|
226
237
|
getRemoteAddress: () => RemoteIbcAddress;
|
|
227
238
|
/** @returns the address of the local channel */
|
|
@@ -38,6 +38,8 @@ export function start(zcf: ZCF<StakeIcaTerms>, privateArgs: {
|
|
|
38
38
|
transferSteps(amount: import("../orchestration-api.js").AmountArg, msg: import("../orchestration-api.js").TransferMsg): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
39
39
|
withdrawRewards(): import("@agoric/vow").Vow<import("../orchestration-api.js").DenomAmount[] extends import("@endo/pass-style").Passable ? import("../orchestration-api.js").DenomAmount[] : import("@agoric/async-flow").HostInterface<import("../orchestration-api.js").DenomAmount[]>>;
|
|
40
40
|
undelegate(delegations: Omit<import("@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js").Delegation, "delegatorAddress">[]): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
41
|
+
deactivate(): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
42
|
+
reactivate(): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
41
43
|
}>>;
|
|
42
44
|
makeAccountInvitationMaker(): Promise<Invitation<ResolvedContinuingOfferResult, undefined>>;
|
|
43
45
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stakeIca.contract.d.ts","sourceRoot":"","sources":["stakeIca.contract.js"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AAEH,yCAAyC;AACzC,mBADW,YAAY,CAAC,OAAO,KAAK,CAAC,CAgBlC;AAEH;;;;;;cAAsD;AAwB/C,2BAVI,GAAG,CAAC,aAAa,CAAC,eAClB;IACV,WAAe,EAAE,OAAO,OAAO,CAAC,CAAC;IACjC,uBAA2B,EAAE,uBAAuB,CAAC;IACrD,WAAe,EAAE,WAAW,CAAC;IAC7B,UAAc,EAAE,UAAU,CAAC;IAC3B,KAAS,EAAE,YAAY,CAAC;CACrB,WACO,OAAO
|
|
1
|
+
{"version":3,"file":"stakeIca.contract.d.ts","sourceRoot":"","sources":["stakeIca.contract.js"],"names":[],"mappings":"AAgBA;;;;;;;GAOG;AAEH,yCAAyC;AACzC,mBADW,YAAY,CAAC,OAAO,KAAK,CAAC,CAgBlC;AAEH;;;;;;cAAsD;AAwB/C,2BAVI,GAAG,CAAC,aAAa,CAAC,eAClB;IACV,WAAe,EAAE,OAAO,OAAO,CAAC,CAAC;IACjC,uBAA2B,EAAE,uBAAuB,CAAC;IACrD,WAAe,EAAE,WAAW,CAAC;IAC7B,UAAc,EAAE,UAAU,CAAC;IAC3B,KAAS,EAAE,YAAY,CAAC;CACrB,WACO,OAAO;;;;;;;;;;;;;;;;;;;;;;GAmGjB;4BArHY;IACZ,OAAW,EAAE,MAAM,CAAC;IACpB,gBAAoB,EAAE,eAAe,CAAC;IACtC,sBAA0B,EAAE,eAAe,CAAC;IAC5C,SAAa,EAAE,MAAM,CAAC;IACtB,UAAc,EAAE,OAAO,CAAC;CACrB;yBAkHU,OAAO,KAAK;6BApJiB,cAAc;4BADhC,kBAAkB;6CAIwB,aAAa;kCAFjD,cAAc;6BAHnB,kBAAkB;mDAII,uBAAuB;qCAF5B,cAAc"}
|
package/src/exos/README.md
CHANGED
|
@@ -19,6 +19,8 @@ export const IcaAccountHolderI: import("@endo/patterns").InterfaceGuard<{
|
|
|
19
19
|
withdrawReward: import("@endo/patterns").MethodGuard;
|
|
20
20
|
withdrawRewards: import("@endo/patterns").MethodGuard;
|
|
21
21
|
undelegate: import("@endo/patterns").MethodGuard;
|
|
22
|
+
deactivate: import("@endo/patterns").MethodGuard;
|
|
23
|
+
reactivate: import("@endo/patterns").MethodGuard;
|
|
22
24
|
getAddress: import("@endo/patterns").MethodGuard;
|
|
23
25
|
getBalance: import("@endo/patterns").MethodGuard;
|
|
24
26
|
getBalances: import("@endo/patterns").MethodGuard;
|
|
@@ -111,7 +113,8 @@ export function prepareCosmosOrchestrationAccountKit(zone: Zone, { chainHub, mak
|
|
|
111
113
|
WithdrawReward(validator: CosmosValidatorAddress): Promise<Invitation<Vow<DenomAmount[]>, undefined>>;
|
|
112
114
|
/** @param {Omit<Delegation, 'delegatorAddress'>[]} delegations */
|
|
113
115
|
Undelegate(delegations: Omit<Delegation, "delegatorAddress">[]): Promise<Invitation<Vow<void>, undefined>>;
|
|
114
|
-
|
|
116
|
+
DeactivateAccount(): Promise<Invitation<Vow<void>, undefined>>;
|
|
117
|
+
ReactivateAccount(): Promise<Invitation<Vow<void>, undefined>>;
|
|
115
118
|
Send(): Promise<Invitation<Vow<void>, {
|
|
116
119
|
toAccount: ChainAddress;
|
|
117
120
|
amount: AmountArg;
|
|
@@ -161,6 +164,10 @@ export function prepareCosmosOrchestrationAccountKit(zone: Zone, { chainHub, mak
|
|
|
161
164
|
withdrawRewards(): Vow<DenomAmount[] extends import("@endo/pass-style").Passable ? DenomAmount[] : import("@agoric/async-flow").HostInterface<DenomAmount[]>>;
|
|
162
165
|
/** @type {HostOf<StakingAccountActions['undelegate']>} */
|
|
163
166
|
undelegate(delegations: Omit<Delegation, "delegatorAddress">[]): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
167
|
+
/** @type {HostOf<IcaAccount['deactivate']>} */
|
|
168
|
+
deactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
169
|
+
/** @type {HostOf<IcaAccount['reactivate']>} */
|
|
170
|
+
reactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
164
171
|
};
|
|
165
172
|
}>;
|
|
166
173
|
export function prepareCosmosOrchestrationAccount(zone: Zone, { chainHub, makeRecorderKit, timerService, vowTools, zcf }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cosmos-orchestration-account.d.ts","sourceRoot":"","sources":["cosmos-orchestration-account.js"],"names":[],"mappings":"AAyDA;;;GAGG;AAEH;;;;;;;;;GASG;AAEH,mCAAmC;AACnC
|
|
1
|
+
{"version":3,"file":"cosmos-orchestration-account.d.ts","sourceRoot":"","sources":["cosmos-orchestration-account.js"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,8 @@ export const IcaAccountHolderI = M.interface('IcaAccountHolder', {
|
|
|
85
85
|
),
|
|
86
86
|
withdrawRewards: M.call().returns(Vow$(M.arrayOf(DenomAmountShape))),
|
|
87
87
|
undelegate: M.call(M.arrayOf(DelegationShape)).returns(VowShape),
|
|
88
|
+
deactivate: M.call().returns(VowShape),
|
|
89
|
+
reactivate: M.call().returns(VowShape),
|
|
88
90
|
});
|
|
89
91
|
|
|
90
92
|
/** @type {{ [name: string]: [description: string, valueShape: Matcher] }} */
|
|
@@ -167,7 +169,8 @@ export const prepareCosmosOrchestrationAccountKit = (
|
|
|
167
169
|
).returns(M.promise()),
|
|
168
170
|
WithdrawReward: M.call(ChainAddressShape).returns(M.promise()),
|
|
169
171
|
Undelegate: M.call(M.arrayOf(DelegationShape)).returns(M.promise()),
|
|
170
|
-
|
|
172
|
+
DeactivateAccount: M.call().returns(M.promise()),
|
|
173
|
+
ReactivateAccount: M.call().returns(M.promise()),
|
|
171
174
|
TransferAccount: M.call().returns(M.promise()),
|
|
172
175
|
Send: M.call().returns(M.promise()),
|
|
173
176
|
SendAll: M.call().returns(M.promise()),
|
|
@@ -358,8 +361,17 @@ export const prepareCosmosOrchestrationAccountKit = (
|
|
|
358
361
|
return watch(this.facets.holder.undelegate(delegations));
|
|
359
362
|
}, 'Undelegate');
|
|
360
363
|
},
|
|
361
|
-
|
|
362
|
-
|
|
364
|
+
DeactivateAccount() {
|
|
365
|
+
return zcf.makeInvitation(seat => {
|
|
366
|
+
seat.exit();
|
|
367
|
+
return watch(this.facets.holder.deactivate());
|
|
368
|
+
}, 'DeactivateAccount');
|
|
369
|
+
},
|
|
370
|
+
ReactivateAccount() {
|
|
371
|
+
return zcf.makeInvitation(seat => {
|
|
372
|
+
seat.exit();
|
|
373
|
+
return watch(this.facets.holder.reactivate());
|
|
374
|
+
}, 'ReactivateAccount');
|
|
363
375
|
},
|
|
364
376
|
Send() {
|
|
365
377
|
/**
|
|
@@ -660,6 +672,14 @@ export const prepareCosmosOrchestrationAccountKit = (
|
|
|
660
672
|
return watch(undelegateV, this.facets.returnVoidWatcher);
|
|
661
673
|
});
|
|
662
674
|
},
|
|
675
|
+
/** @type {HostOf<IcaAccount['deactivate']>} */
|
|
676
|
+
deactivate() {
|
|
677
|
+
return watch(E(this.facets.helper.owned()).deactivate());
|
|
678
|
+
},
|
|
679
|
+
/** @type {HostOf<IcaAccount['reactivate']>} */
|
|
680
|
+
reactivate() {
|
|
681
|
+
return watch(E(this.facets.helper.owned()).reactivate());
|
|
682
|
+
},
|
|
663
683
|
},
|
|
664
684
|
},
|
|
665
685
|
);
|
|
@@ -5,7 +5,8 @@ export const IcaAccountI: import("@endo/patterns").InterfaceGuard<{
|
|
|
5
5
|
getPort: import("@endo/patterns").MethodGuard;
|
|
6
6
|
executeTx: import("@endo/patterns").MethodGuard;
|
|
7
7
|
executeEncodedTx: import("@endo/patterns").MethodGuard;
|
|
8
|
-
|
|
8
|
+
deactivate: import("@endo/patterns").MethodGuard;
|
|
9
|
+
reactivate: import("@endo/patterns").MethodGuard;
|
|
9
10
|
}>;
|
|
10
11
|
export function prepareIcaAccountKit(zone: Zone, { watch, asVow }: VowTools): (chainId: string, port: Port, requestedRemoteAddress: string) => import("@endo/exo").GuardedKit<{
|
|
11
12
|
parseTxPacketWatcher: {
|
|
@@ -30,13 +31,10 @@ export function prepareIcaAccountKit(zone: Zone, { watch, asVow }: VowTools): (c
|
|
|
30
31
|
* @throws {Error} if packet fails to send or an error is returned
|
|
31
32
|
*/
|
|
32
33
|
executeEncodedTx(msgs: AnyJson[], opts?: Omit<TxBody, "messages"> | undefined): Vow<string>;
|
|
33
|
-
/**
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
* @throws {Error} if connection is not available or already closed
|
|
38
|
-
*/
|
|
39
|
-
close(): Vow<void>;
|
|
34
|
+
/** @type {HostOf<IcaAccount['deactivate']>} */
|
|
35
|
+
deactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
36
|
+
/** @type {HostOf<IcaAccount['reactivate']>} */
|
|
37
|
+
reactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
40
38
|
};
|
|
41
39
|
connectionHandler: {
|
|
42
40
|
/**
|
|
@@ -46,8 +44,21 @@ export function prepareIcaAccountKit(zone: Zone, { watch, asVow }: VowTools): (c
|
|
|
46
44
|
*/
|
|
47
45
|
onOpen(connection: Remote<Connection>, localAddr: LocalIbcAddress, remoteAddr: RemoteIbcAddress): Promise<void>;
|
|
48
46
|
/**
|
|
47
|
+
* This handler fires any time the connection (channel) closes. This
|
|
48
|
+
* could be due to external factors (e.g. a packet timeout), or a holder
|
|
49
|
+
* initiated action (`.deactivate()`).
|
|
50
|
+
*
|
|
51
|
+
* Here, if a connection is opened again, we clear the connection and
|
|
52
|
+
* addresses from state as they will change - a new channel will be
|
|
53
|
+
* established if the connection is reopened.
|
|
54
|
+
*
|
|
55
|
+
* If the holder did not initiate the closure, a new connection is
|
|
56
|
+
* established using the original requested remote address. This will
|
|
57
|
+
* result in a new channelID but the ChainAddress will be preserved.
|
|
58
|
+
*
|
|
49
59
|
* @param {Remote<Connection>} _connection
|
|
50
60
|
* @param {unknown} reason
|
|
61
|
+
* @see {@link https://docs.cosmos.network/v0.45/ibc/overview.html#:~:text=In%20ORDERED%20channels%2C%20a%20timeout%20of%20a%20single%20packet%20in%20the%20channel%20closes%20the%20channel.}
|
|
51
62
|
*/
|
|
52
63
|
onClose(_connection: Remote<Connection>, reason: unknown): Promise<void>;
|
|
53
64
|
};
|
|
@@ -61,6 +72,7 @@ export type State = {
|
|
|
61
72
|
requestedRemoteAddress: string;
|
|
62
73
|
remoteAddress: RemoteIbcAddress | undefined;
|
|
63
74
|
chainAddress: ChainAddress | undefined;
|
|
75
|
+
isInitiatingClose: boolean;
|
|
64
76
|
};
|
|
65
77
|
export type IcaAccountKit = ReturnType<ReturnType<typeof prepareIcaAccountKit>>;
|
|
66
78
|
import type { Zone } from '@agoric/base-zone';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ica-account-kit.d.ts","sourceRoot":"","sources":["ica-account-kit.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ica-account-kit.d.ts","sourceRoot":"","sources":["ica-account-kit.js"],"names":[],"mappings":"AA+BA;;;;;;;;;GAWG;AAmBI,2CAHI,IAAI,oBACJ,QAAQ;;QAgCX,0BAA0B;yBAAd,MAAM;;;QAMlB,8BAA8B;sBAAhB,YAAY;;;;;QAyB1B;;;;;;;;;WASG;+BALQ,OAAO,EAAE,gDAEP,IAAI,MAAM,CAAC;QAgBxB,+CAA+C;;QAS/C,+CAA+C;;;;QAiB/C;;;;WAIG;2BAHQ,OAAO,UAAU,CAAC,aAClB,eAAe,cACf,gBAAgB;QAiB3B;;;;;;;;;;;;;;;;WAgBG;6BAHQ,OAAO,UAAU,CAAC,UAClB,OAAO;;GAkBvB;qCAlMW,0BAA0B;oBAiB3B;IACZ,OAAW,EAAE,MAAM,CAAC;IACpB,IAAQ,EAAE,IAAI,CAAC;IACf,UAAc,EAAE,OAAO,UAAU,CAAC,GAAG,SAAS,CAAC;IAC/C,YAAgB,EAAE,eAAe,GAAG,SAAS,CAAC;IAC9C,sBAA0B,EAAE,MAAM,CAAC;IACnC,aAAiB,EAAE,gBAAgB,GAAG,SAAS,CAAC;IAChD,YAAgB,EAAE,YAAY,GAAG,SAAS,CAAC;IAC3C,iBAAqB,EAAE,OAAO,CAAC;CAC5B;4BA0KU,UAAU,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;0BA/M1C,mBAAmB;8BAEF,aAAa;0BADlB,iBAAiB;kCAKT,aAAa;yBAJhB,aAAa;6BAC3B,sBAAsB;4BACvB,8CAA8C;gCAHpC,iBAAiB;4BACZ,aAAa;qCAGD,iCAAiC;sCAAjC,iCAAiC"}
|
|
@@ -8,18 +8,20 @@ import {
|
|
|
8
8
|
ChainAddressShape,
|
|
9
9
|
OutboundConnectionHandlerI,
|
|
10
10
|
Proto3Shape,
|
|
11
|
+
TxBodyOptsShape,
|
|
11
12
|
} from '../typeGuards.js';
|
|
12
13
|
import { findAddressField } from '../utils/address.js';
|
|
13
14
|
import { makeTxPacket, parseTxPacket } from '../utils/packet.js';
|
|
14
15
|
|
|
15
16
|
/**
|
|
17
|
+
* @import {HostOf} from '@agoric/async-flow';
|
|
16
18
|
* @import {Zone} from '@agoric/base-zone';
|
|
17
19
|
* @import {Connection, Port} from '@agoric/network';
|
|
18
20
|
* @import {Remote, Vow, VowTools} from '@agoric/vow';
|
|
19
21
|
* @import {AnyJson} from '@agoric/cosmic-proto';
|
|
20
22
|
* @import {TxBody} from '@agoric/cosmic-proto/cosmos/tx/v1beta1/tx.js';
|
|
21
23
|
* @import {LocalIbcAddress, RemoteIbcAddress} from '@agoric/vats/tools/ibc-utils.js';
|
|
22
|
-
* @import {ChainAddress} from '../types.js';
|
|
24
|
+
* @import {ChainAddress, IcaAccount} from '../types.js';
|
|
23
25
|
*/
|
|
24
26
|
|
|
25
27
|
const trace = makeTracer('IcaAccountKit');
|
|
@@ -34,9 +36,10 @@ export const IcaAccountI = M.interface('IcaAccount', {
|
|
|
34
36
|
getPort: M.call().returns(M.remotable('Port')),
|
|
35
37
|
executeTx: M.call(M.arrayOf(M.record())).returns(VowShape),
|
|
36
38
|
executeEncodedTx: M.call(M.arrayOf(Proto3Shape))
|
|
37
|
-
.optional(
|
|
39
|
+
.optional(TxBodyOptsShape)
|
|
38
40
|
.returns(VowShape),
|
|
39
|
-
|
|
41
|
+
deactivate: M.call().returns(VowShape),
|
|
42
|
+
reactivate: M.call().returns(VowShape),
|
|
40
43
|
});
|
|
41
44
|
|
|
42
45
|
/**
|
|
@@ -48,6 +51,7 @@ export const IcaAccountI = M.interface('IcaAccount', {
|
|
|
48
51
|
* requestedRemoteAddress: string;
|
|
49
52
|
* remoteAddress: RemoteIbcAddress | undefined;
|
|
50
53
|
* chainAddress: ChainAddress | undefined;
|
|
54
|
+
* isInitiatingClose: boolean;
|
|
51
55
|
* }} State
|
|
52
56
|
*/
|
|
53
57
|
|
|
@@ -81,6 +85,7 @@ export const prepareIcaAccountKit = (zone, { watch, asVow }) =>
|
|
|
81
85
|
remoteAddress: undefined,
|
|
82
86
|
chainAddress: undefined,
|
|
83
87
|
localAddress: undefined,
|
|
88
|
+
isInitiatingClose: false,
|
|
84
89
|
}),
|
|
85
90
|
{
|
|
86
91
|
parseTxPacketWatcher: {
|
|
@@ -128,29 +133,39 @@ export const prepareIcaAccountKit = (zone, { watch, asVow }) =>
|
|
|
128
133
|
executeEncodedTx(msgs, opts) {
|
|
129
134
|
return asVow(() => {
|
|
130
135
|
const { connection } = this.state;
|
|
131
|
-
if (!connection)
|
|
136
|
+
if (!connection) {
|
|
137
|
+
throw Fail`Account not available or deactivated.`;
|
|
138
|
+
}
|
|
132
139
|
return watch(
|
|
133
140
|
E(connection).send(makeTxPacket(msgs, opts)),
|
|
134
141
|
this.facets.parseTxPacketWatcher,
|
|
135
142
|
);
|
|
136
143
|
});
|
|
137
144
|
},
|
|
138
|
-
/**
|
|
139
|
-
|
|
140
|
-
*
|
|
141
|
-
* @returns {Vow<void>}
|
|
142
|
-
* @throws {Error} if connection is not available or already closed
|
|
143
|
-
*/
|
|
144
|
-
close() {
|
|
145
|
+
/** @type {HostOf<IcaAccount['deactivate']>} */
|
|
146
|
+
deactivate() {
|
|
145
147
|
return asVow(() => {
|
|
146
|
-
/// TODO #9192 what should the behavior be here? and `onClose`?
|
|
147
|
-
// - retrieve assets?
|
|
148
|
-
// - revoke the port?
|
|
149
148
|
const { connection } = this.state;
|
|
150
|
-
if (!connection) throw Fail`
|
|
149
|
+
if (!connection) throw Fail`Account not available or deactivated.`;
|
|
150
|
+
this.state.isInitiatingClose = true;
|
|
151
151
|
return E(connection).close();
|
|
152
152
|
});
|
|
153
153
|
},
|
|
154
|
+
/** @type {HostOf<IcaAccount['reactivate']>} */
|
|
155
|
+
reactivate() {
|
|
156
|
+
return asVow(() => {
|
|
157
|
+
const { connection, port, requestedRemoteAddress } = this.state;
|
|
158
|
+
if (connection) {
|
|
159
|
+
throw Fail`Account is already active.`;
|
|
160
|
+
}
|
|
161
|
+
return watch(
|
|
162
|
+
E(port).connect(
|
|
163
|
+
requestedRemoteAddress,
|
|
164
|
+
this.facets.connectionHandler,
|
|
165
|
+
),
|
|
166
|
+
);
|
|
167
|
+
});
|
|
168
|
+
},
|
|
154
169
|
},
|
|
155
170
|
connectionHandler: {
|
|
156
171
|
/**
|
|
@@ -174,13 +189,34 @@ export const prepareIcaAccountKit = (zone, { watch, asVow }) =>
|
|
|
174
189
|
});
|
|
175
190
|
},
|
|
176
191
|
/**
|
|
192
|
+
* This handler fires any time the connection (channel) closes. This
|
|
193
|
+
* could be due to external factors (e.g. a packet timeout), or a holder
|
|
194
|
+
* initiated action (`.deactivate()`).
|
|
195
|
+
*
|
|
196
|
+
* Here, if a connection is opened again, we clear the connection and
|
|
197
|
+
* addresses from state as they will change - a new channel will be
|
|
198
|
+
* established if the connection is reopened.
|
|
199
|
+
*
|
|
200
|
+
* If the holder did not initiate the closure, a new connection is
|
|
201
|
+
* established using the original requested remote address. This will
|
|
202
|
+
* result in a new channelID but the ChainAddress will be preserved.
|
|
203
|
+
*
|
|
177
204
|
* @param {Remote<Connection>} _connection
|
|
178
205
|
* @param {unknown} reason
|
|
206
|
+
* @see {@link https://docs.cosmos.network/v0.45/ibc/overview.html#:~:text=In%20ORDERED%20channels%2C%20a%20timeout%20of%20a%20single%20packet%20in%20the%20channel%20closes%20the%20channel.}
|
|
179
207
|
*/
|
|
180
208
|
async onClose(_connection, reason) {
|
|
181
209
|
trace(`ICA Channel closed. Reason: ${reason}`);
|
|
182
|
-
|
|
183
|
-
|
|
210
|
+
this.state.connection = undefined;
|
|
211
|
+
this.state.localAddress = undefined;
|
|
212
|
+
this.state.remoteAddress = undefined;
|
|
213
|
+
if (this.state.isInitiatingClose === true) {
|
|
214
|
+
trace('Account deactivated by holder. Skipping reactivation.');
|
|
215
|
+
this.state.isInitiatingClose = false;
|
|
216
|
+
} else {
|
|
217
|
+
trace('Account closed unexpectedly. Automatically reactivating.');
|
|
218
|
+
void watch(this.facets.account.reactivate());
|
|
219
|
+
}
|
|
184
220
|
},
|
|
185
221
|
},
|
|
186
222
|
},
|
|
@@ -40,6 +40,8 @@ export function prepareRemoteChainFacade(zone: Zone, powers: RemoteChainFacadePo
|
|
|
40
40
|
transferSteps(amount: import("../orchestration-api.js").AmountArg, msg: import("../orchestration-api.js").TransferMsg): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
41
41
|
withdrawRewards(): Vow<import("../orchestration-api.js").DenomAmount[] extends import("@endo/pass-style").Passable ? import("../orchestration-api.js").DenomAmount[] : import("@agoric/async-flow").HostInterface<import("../orchestration-api.js").DenomAmount[]>>;
|
|
42
42
|
undelegate(delegations: Omit<import("@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js").Delegation, "delegatorAddress">[]): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
43
|
+
deactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
44
|
+
reactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
43
45
|
}>>;
|
|
44
46
|
};
|
|
45
47
|
makeICQConnectionQueryWatcher: {
|
|
@@ -70,6 +72,8 @@ export function prepareRemoteChainFacade(zone: Zone, powers: RemoteChainFacadePo
|
|
|
70
72
|
transferSteps(amount: import("../orchestration-api.js").AmountArg, msg: import("../orchestration-api.js").TransferMsg): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
71
73
|
withdrawRewards(): Vow<import("../orchestration-api.js").DenomAmount[] extends import("@endo/pass-style").Passable ? import("../orchestration-api.js").DenomAmount[] : import("@agoric/async-flow").HostInterface<import("../orchestration-api.js").DenomAmount[]>>;
|
|
72
74
|
undelegate(delegations: Omit<import("@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js").Delegation, "delegatorAddress">[]): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
75
|
+
deactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
76
|
+
reactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
73
77
|
}>>;
|
|
74
78
|
};
|
|
75
79
|
makeChildNodeWatcher: {
|
|
@@ -98,6 +102,8 @@ export function prepareRemoteChainFacade(zone: Zone, powers: RemoteChainFacadePo
|
|
|
98
102
|
transferSteps(amount: import("../orchestration-api.js").AmountArg, msg: import("../orchestration-api.js").TransferMsg): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
99
103
|
withdrawRewards(): Vow<import("../orchestration-api.js").DenomAmount[] extends import("@endo/pass-style").Passable ? import("../orchestration-api.js").DenomAmount[] : import("@agoric/async-flow").HostInterface<import("../orchestration-api.js").DenomAmount[]>>;
|
|
100
104
|
undelegate(delegations: Omit<import("@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js").Delegation, "delegatorAddress">[]): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
105
|
+
deactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
106
|
+
reactivate(): Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
101
107
|
}>;
|
|
102
108
|
};
|
|
103
109
|
}>>["public"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-chain-facade.d.ts","sourceRoot":"","sources":["remote-chain-facade.js"],"names":[],"mappings":"AA0OO,+CAHI,IAAI,UACJ,uBAAuB;;;;;;;;;;;;;;;;QA/H1B,4CAA4C;;QAK5C,2CAA2C;;QA4B3C,qCAAqC;;;;QAyBrC;;WAEG;8CADQ,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"remote-chain-facade.d.ts","sourceRoot":"","sources":["remote-chain-facade.js"],"names":[],"mappings":"AA0OO,+CAHI,IAAI,UACJ,uBAAuB;;;;;;;;;;;;;;;;QA/H1B,4CAA4C;;QAK5C,2CAA2C;;QA4B3C,qCAAqC;;;;QAyBrC;;WAEG;8CADQ,CAAC,UAAU,EAAE,aAAa,GAAG,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;QAelD;;;;WAIG;mCAHQ,aAAa,QACb,SAAS,YAAY,CAAC,EAAE,GACtB,IAAI,SAAS,aAAa,CAAC,EAAE,CAAC;;;QAU3C;;;WAGG;kCAFQ,YAAY,WACZ,UAAU;;;;;;;;;;;;;;;;;;;;QAWrB;;;;;;WAMG;+BALQ,OAAO,WAAW,CAAC,6BACnB;YACV,OAAW,EAAE,UAAU,CAAC;YACxB,YAAgB,EAAE,YAAY,CAAC;SAC5B;;;;;;;;;;;;;;;;;;;cA2BX;sCApNY;IACZ,8BAAkC,EAAE,UAAU,CAC9C,wCAA8C,CACzC,CAAC;IACN,aAAiB,EAAE,OAAO,uBAAuB,CAAC,CAAC;IACnD,WAAe,EAAE,OAAO,WAAW,CAAC,CAAC;IACrC,KAAS,EAAE,OAAO,YAAY,CAAC,CAAC;IAChC,QAAY,EAAE,QAAQ,CAAC;CACpB;qCAIS;IACZ,eAAmB,EAAE,eAAe,CAAC;IACrC,cAAkB,EAAE,iBAAiB,CAAC;IACtC,aAAiB,EAAE,aAAa,GAAG,SAAS,CAAC;CAC1C;oCAuMU,UAAU,CAAC,OAAO,wBAAwB,CAAC;gCAC3C,UAAU,CAAC,qBAAqB,CAAC;0BAvOxB,mBAAmB;uCAQ2D,aAAa;yBAHlF,aAAa;kCAHC,+CAA+C;8BADlE,sBAAsB;mCACH,+CAA+C;gCAMQ,aAAa;mCAAb,aAAa;kCAAb,aAAa;4BAJzF,kBAAkB;uDAGS,mCAAmC;6CAD7C,gCAAgC;kCAH3C,cAAc;8BAEb,aAAa;qCAGwD,aAAa"}
|
|
@@ -24,6 +24,8 @@ export function startStakeAtom({ consume: { agoricNames, board, chainStorage, ch
|
|
|
24
24
|
transferSteps(amount: import("../orchestration-api.js").AmountArg, msg: import("../orchestration-api.js").TransferMsg): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
25
25
|
withdrawRewards(): import("@agoric/vow").Vow<import("../orchestration-api.js").DenomAmount[] extends import("@endo/pass-style").Passable ? import("../orchestration-api.js").DenomAmount[] : import("@agoric/async-flow").HostInterface<import("../orchestration-api.js").DenomAmount[]>>;
|
|
26
26
|
undelegate(delegations: Omit<import("@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js").Delegation, "delegatorAddress">[]): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
27
|
+
deactivate(): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
28
|
+
reactivate(): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
27
29
|
}>>;
|
|
28
30
|
makeAccountInvitationMaker(): Promise<Invitation<import("../utils/zoe-tools.js").ResolvedContinuingOfferResult, undefined>>;
|
|
29
31
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-stakeAtom.d.ts","sourceRoot":"","sources":["start-stakeAtom.js"],"names":[],"mappings":"AAyBO,0PAVI,eAAe,GAAG;IAC5B,YAAgB,EAAE;QAClB,OAAa,EAAE;YACf,QAAgB,EAAE,YAAY,CAC9B
|
|
1
|
+
{"version":3,"file":"start-stakeAtom.d.ts","sourceRoot":"","sources":["start-stakeAtom.js"],"names":[],"mappings":"AAyBO,0PAVI,eAAe,GAAG;IAC5B,YAAgB,EAAE;QAClB,OAAa,EAAE;YACf,QAAgB,EAAE,YAAY,CAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA0D,CACjD,CAAC;SACH,CAAC;KACH,CAAC;CACH,iBAwDH;AAGM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BN;mCArG4C,+BAA+B"}
|
|
@@ -24,6 +24,8 @@ export function startStakeOsmo({ consume: { agoricNames, board, chainStorage, ch
|
|
|
24
24
|
transferSteps(amount: import("../orchestration-api.js").AmountArg, msg: import("../orchestration-api.js").TransferMsg): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
25
25
|
withdrawRewards(): import("@agoric/vow").Vow<import("../orchestration-api.js").DenomAmount[] extends import("@endo/pass-style").Passable ? import("../orchestration-api.js").DenomAmount[] : import("@agoric/async-flow").HostInterface<import("../orchestration-api.js").DenomAmount[]>>;
|
|
26
26
|
undelegate(delegations: Omit<import("@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js").Delegation, "delegatorAddress">[]): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
27
|
+
deactivate(): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
28
|
+
reactivate(): import("@agoric/vow").Vow<void extends import("@endo/pass-style").Passable ? import("@endo/pass-style").Passable & void : import("@agoric/async-flow").HostInterface<void>>;
|
|
27
29
|
}>>;
|
|
28
30
|
makeAccountInvitationMaker(): Promise<Invitation<import("../utils/zoe-tools.js").ResolvedContinuingOfferResult, undefined>>;
|
|
29
31
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start-stakeOsmo.d.ts","sourceRoot":"","sources":["start-stakeOsmo.js"],"names":[],"mappings":"AA8BO,0PAfI,eAAe,GAAG;IAC5B,YAAgB,EAAE;QAClB,OAAa,EAAE;YACf,QAAgB,EAAE,YAAY,CAC9B
|
|
1
|
+
{"version":3,"file":"start-stakeOsmo.d.ts","sourceRoot":"","sources":["start-stakeOsmo.js"],"names":[],"mappings":"AA8BO,0PAfI,eAAe,GAAG;IAC5B,YAAgB,EAAE;QAClB,OAAa,EAAE;YACf,QAAgB,EAAE,YAAY,CAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAA0D,CACjD,CAAC;SACH,CAAC;KACH,CAAC;IACN,QAAY,EAAE;QACd,OAAa,EAAE;YACf,SAAiB,EAAE,GAAG,CAAC;SAChB,CAAC;KACH,CAAC;CACH,iBAwDH;AAGM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BN"}
|
package/src/typeGuards.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @import {TypedPattern} from '@agoric/internal';
|
|
3
|
-
* @import {ChainAddress, CosmosAssetInfo, ChainInfo, CosmosChainInfo, DenomAmount
|
|
3
|
+
* @import {ChainAddress, CosmosAssetInfo, ChainInfo, CosmosChainInfo, DenomAmount} from './types.js';
|
|
4
4
|
* @import {Delegation} from '@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js';
|
|
5
|
+
* @import {TxBody} from '@agoric/cosmic-proto/cosmos/tx/v1beta1/tx.js';
|
|
5
6
|
*/
|
|
6
7
|
/**
|
|
7
8
|
* Used for IBC Channel Connections that only send outgoing transactions. If
|
|
@@ -53,6 +54,8 @@ export namespace TimestampProtoShape {
|
|
|
53
54
|
let seconds: import("@endo/patterns").Matcher;
|
|
54
55
|
let nanos: import("@endo/patterns").Matcher;
|
|
55
56
|
}
|
|
57
|
+
/** see {@link TxBody} for more details */
|
|
58
|
+
export const TxBodyOptsShape: import("@endo/patterns").Matcher;
|
|
56
59
|
import type { ChainAddress } from './types.js';
|
|
57
60
|
import type { TypedPattern } from '@agoric/internal';
|
|
58
61
|
import type { Delegation } from '@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js';
|
package/src/typeGuards.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["typeGuards.js"],"names":[],"mappings":"AAIA
|
|
1
|
+
{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["typeGuards.js"],"names":[],"mappings":"AAIA;;;;;GAKG;AAEH;;;;GAIG;AACH;;;GAQE;AAEF,yCAAyC;AACzC,gCADW,aAAa,YAAY,CAAC,CAKnC;;;;;AAQF,uCAAuC;AACvC,8BADW,aAAa,UAAU,CAAC,CAIhC;AAEH,uEAUE;AAEF,iEAA4C;AAC5C,mEAQG;AACH,oEAA+C;AAC/C,sEAYG;AAEH,4CAA4C;AAC5C,mCADW,aAAa,eAAe,CAAC,CASrC;AAEH,4CAA4C;AAC5C,mCADW,aAAa,eAAe,CAAC,CAWtC;AAEF,sCAAsC;AACtC,6BADW,aAAa,SAAS,CAAC,CAG/B;AACH,sEAAuE;AACvE,0DAAqC;AAErC,8DAAsC;AAEtC,wCAAwC;AACxC,+BADW,aAAa,WAAW,CAAC,CACqC;AAEzE,8DAAkE;AAElE,2DAGE;;;;;;AAQF,mBAAmB;AACnB;;;;GAA2E;;;;;AAQ3E,0CAA0C;AAC1C,+DAQE;kCA/IuF,YAAY;kCADtE,kBAAkB;gCAEpB,wDAAwD;qCADI,YAAY;qCAAZ,YAAY;+BAAZ,YAAY;iCAAZ,YAAY"}
|
package/src/typeGuards.js
CHANGED
|
@@ -4,8 +4,9 @@ import { M } from '@endo/patterns';
|
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @import {TypedPattern} from '@agoric/internal';
|
|
7
|
-
* @import {ChainAddress, CosmosAssetInfo, ChainInfo, CosmosChainInfo, DenomAmount
|
|
7
|
+
* @import {ChainAddress, CosmosAssetInfo, ChainInfo, CosmosChainInfo, DenomAmount} from './types.js';
|
|
8
8
|
* @import {Delegation} from '@agoric/cosmic-proto/cosmos/staking/v1beta1/staking.js';
|
|
9
|
+
* @import {TxBody} from '@agoric/cosmic-proto/cosmos/tx/v1beta1/tx.js';
|
|
9
10
|
*/
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -136,3 +137,14 @@ export const ChainFacadeI = M.interface('ChainFacade', chainFacadeMethods);
|
|
|
136
137
|
* from `@agoric/time`
|
|
137
138
|
*/
|
|
138
139
|
export const TimestampProtoShape = { seconds: M.nat(), nanos: M.number() };
|
|
140
|
+
|
|
141
|
+
/** see {@link TxBody} for more details */
|
|
142
|
+
export const TxBodyOptsShape = M.splitRecord(
|
|
143
|
+
{},
|
|
144
|
+
{
|
|
145
|
+
memo: M.string(),
|
|
146
|
+
timeoutHeight: M.bigint(),
|
|
147
|
+
extensionOptions: M.arrayOf(M.any()),
|
|
148
|
+
nonCriticalExtensionOptions: M.arrayOf(M.any()),
|
|
149
|
+
},
|
|
150
|
+
);
|