@cogcoin/client 0.5.15 → 1.0.1
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/README.md +80 -25
- package/dist/app-paths.d.ts +5 -6
- package/dist/app-paths.js +8 -16
- package/dist/art/balance.txt +10 -0
- package/dist/art/welcome.txt +16 -0
- package/dist/bitcoind/bootstrap/controller.d.ts +1 -0
- package/dist/bitcoind/bootstrap/controller.js +53 -1
- package/dist/bitcoind/client/follow-block-times.d.ts +1 -0
- package/dist/bitcoind/client/follow-block-times.js +1 -1
- package/dist/bitcoind/client/internal-types.d.ts +7 -3
- package/dist/bitcoind/client/managed-client.d.ts +4 -2
- package/dist/bitcoind/client/managed-client.js +14 -0
- package/dist/bitcoind/client/sync-engine.js +72 -11
- package/dist/bitcoind/hash-order.d.ts +4 -0
- package/dist/bitcoind/hash-order.js +13 -0
- package/dist/bitcoind/indexer-daemon-main.js +11 -3
- package/dist/bitcoind/normalize.js +3 -2
- package/dist/bitcoind/processing-start-height.d.ts +5 -0
- package/dist/bitcoind/processing-start-height.js +7 -0
- package/dist/bitcoind/progress/constants.d.ts +4 -0
- package/dist/bitcoind/progress/constants.js +4 -0
- package/dist/bitcoind/progress/controller.d.ts +2 -1
- package/dist/bitcoind/progress/controller.js +3 -3
- package/dist/bitcoind/progress/follow-scene.d.ts +6 -2
- package/dist/bitcoind/progress/follow-scene.js +29 -6
- package/dist/bitcoind/progress/formatting.d.ts +1 -0
- package/dist/bitcoind/progress/formatting.js +6 -0
- package/dist/bitcoind/progress/train-scene.js +37 -18
- package/dist/bitcoind/progress/tty-renderer.d.ts +6 -1
- package/dist/bitcoind/progress/tty-renderer.js +8 -4
- package/dist/bitcoind/rpc.d.ts +2 -1
- package/dist/bitcoind/rpc.js +3 -0
- package/dist/bitcoind/types.d.ts +6 -0
- package/dist/bytes.d.ts +1 -0
- package/dist/bytes.js +3 -0
- package/dist/cli/art.d.ts +2 -0
- package/dist/cli/art.js +37 -0
- package/dist/cli/commands/client-admin.d.ts +2 -0
- package/dist/cli/commands/client-admin.js +91 -0
- package/dist/cli/commands/follow.js +0 -2
- package/dist/cli/commands/mining-admin.js +6 -47
- package/dist/cli/commands/mining-read.js +11 -50
- package/dist/cli/commands/mining-runtime.js +142 -5
- package/dist/cli/commands/service-runtime.js +0 -2
- package/dist/cli/commands/status.js +8 -2
- package/dist/cli/commands/sync.js +49 -92
- package/dist/cli/commands/wallet-admin.js +142 -136
- package/dist/cli/commands/wallet-mutation.js +91 -79
- package/dist/cli/commands/wallet-read.js +15 -18
- package/dist/cli/context.js +5 -14
- package/dist/cli/mining-format.d.ts +0 -1
- package/dist/cli/mining-format.js +5 -37
- package/dist/cli/mining-json.d.ts +0 -18
- package/dist/cli/mining-json.js +0 -35
- package/dist/cli/mutation-command-groups.d.ts +1 -2
- package/dist/cli/mutation-command-groups.js +0 -5
- package/dist/cli/mutation-json.d.ts +24 -145
- package/dist/cli/mutation-json.js +30 -136
- package/dist/cli/mutation-resolved-json.d.ts +0 -7
- package/dist/cli/mutation-resolved-json.js +4 -10
- package/dist/cli/mutation-success.d.ts +2 -0
- package/dist/cli/mutation-success.js +11 -1
- package/dist/cli/mutation-text-format.js +1 -3
- package/dist/cli/output.d.ts +1 -1
- package/dist/cli/output.js +254 -231
- package/dist/cli/parse.d.ts +1 -1
- package/dist/cli/parse.js +93 -122
- package/dist/cli/preview-json.d.ts +17 -120
- package/dist/cli/preview-json.js +14 -97
- package/dist/cli/prompt.js +8 -13
- package/dist/cli/read-json.d.ts +15 -37
- package/dist/cli/read-json.js +44 -140
- package/dist/cli/runner.js +10 -13
- package/dist/cli/sync-progress.d.ts +6 -0
- package/dist/cli/sync-progress.js +91 -0
- package/dist/cli/types.d.ts +9 -17
- package/dist/cli/types.js +0 -2
- package/dist/cli/wallet-format.d.ts +1 -0
- package/dist/cli/wallet-format.js +208 -144
- package/dist/cli/workflow-hints.d.ts +3 -3
- package/dist/cli/workflow-hints.js +11 -8
- package/dist/client/default-client.d.ts +3 -1
- package/dist/client/default-client.js +45 -2
- package/dist/client/factory.js +1 -1
- package/dist/client/initialization.js +23 -0
- package/dist/client/persistence.js +5 -5
- package/dist/client/store-adapter.js +1 -0
- package/dist/sqlite/checkpoints.d.ts +1 -0
- package/dist/sqlite/checkpoints.js +7 -0
- package/dist/sqlite/store.js +14 -1
- package/dist/types.d.ts +1 -0
- package/dist/wallet/coin-control.d.ts +41 -12
- package/dist/wallet/coin-control.js +100 -428
- package/dist/wallet/descriptor-normalization.d.ts +1 -3
- package/dist/wallet/descriptor-normalization.js +0 -16
- package/dist/wallet/lifecycle.d.ts +7 -99
- package/dist/wallet/lifecycle.js +513 -968
- package/dist/wallet/managed-core-wallet.d.ts +13 -0
- package/dist/wallet/managed-core-wallet.js +20 -0
- package/dist/wallet/mining/constants.d.ts +5 -12
- package/dist/wallet/mining/constants.js +5 -12
- package/dist/wallet/mining/control.d.ts +1 -13
- package/dist/wallet/mining/control.js +45 -349
- package/dist/wallet/mining/index.d.ts +4 -5
- package/dist/wallet/mining/index.js +2 -3
- package/dist/wallet/mining/runner.d.ts +123 -13
- package/dist/wallet/mining/runner.js +899 -511
- package/dist/wallet/mining/runtime-artifacts.js +23 -3
- package/dist/wallet/mining/sentence-protocol.d.ts +44 -0
- package/dist/wallet/mining/sentence-protocol.js +123 -0
- package/dist/wallet/mining/sentences.d.ts +4 -8
- package/dist/wallet/mining/sentences.js +3 -52
- package/dist/wallet/mining/state.d.ts +11 -6
- package/dist/wallet/mining/state.js +7 -6
- package/dist/wallet/mining/types.d.ts +2 -30
- package/dist/wallet/mining/visualizer.d.ts +31 -3
- package/dist/wallet/mining/visualizer.js +135 -13
- package/dist/wallet/read/context.d.ts +0 -2
- package/dist/wallet/read/context.js +119 -140
- package/dist/wallet/read/filter.js +2 -11
- package/dist/wallet/read/index.d.ts +1 -1
- package/dist/wallet/read/project.js +24 -77
- package/dist/wallet/read/types.d.ts +10 -25
- package/dist/wallet/reset.d.ts +0 -1
- package/dist/wallet/reset.js +60 -138
- package/dist/wallet/root-resolution.d.ts +1 -5
- package/dist/wallet/root-resolution.js +0 -18
- package/dist/wallet/runtime.d.ts +0 -6
- package/dist/wallet/runtime.js +0 -8
- package/dist/wallet/state/client-password-agent.js +208 -0
- package/dist/wallet/state/client-password.d.ts +65 -0
- package/dist/wallet/state/client-password.js +952 -0
- package/dist/wallet/state/crypto.d.ts +1 -20
- package/dist/wallet/state/crypto.js +0 -63
- package/dist/wallet/state/provider.d.ts +23 -11
- package/dist/wallet/state/provider.js +248 -290
- package/dist/wallet/state/storage.d.ts +2 -2
- package/dist/wallet/state/storage.js +48 -16
- package/dist/wallet/tx/anchor.d.ts +3 -28
- package/dist/wallet/tx/anchor.js +349 -1250
- package/dist/wallet/tx/bitcoin-transfer.d.ts +35 -0
- package/dist/wallet/tx/bitcoin-transfer.js +200 -0
- package/dist/wallet/tx/cog.d.ts +5 -1
- package/dist/wallet/tx/cog.js +149 -185
- package/dist/wallet/tx/common.d.ts +61 -8
- package/dist/wallet/tx/common.js +266 -146
- package/dist/wallet/tx/domain-admin.d.ts +3 -1
- package/dist/wallet/tx/domain-admin.js +61 -99
- package/dist/wallet/tx/domain-market.d.ts +5 -1
- package/dist/wallet/tx/domain-market.js +221 -228
- package/dist/wallet/tx/field.d.ts +4 -10
- package/dist/wallet/tx/field.js +83 -924
- package/dist/wallet/tx/identity-selector.d.ts +9 -3
- package/dist/wallet/tx/identity-selector.js +17 -35
- package/dist/wallet/tx/index.d.ts +3 -1
- package/dist/wallet/tx/index.js +2 -1
- package/dist/wallet/tx/register.d.ts +3 -1
- package/dist/wallet/tx/register.js +62 -220
- package/dist/wallet/tx/reputation.d.ts +3 -1
- package/dist/wallet/tx/reputation.js +58 -95
- package/dist/wallet/types.d.ts +8 -122
- package/package.json +5 -5
- package/dist/wallet/archive.d.ts +0 -4
- package/dist/wallet/archive.js +0 -41
- package/dist/wallet/mining/hook-protocol.d.ts +0 -47
- package/dist/wallet/mining/hook-protocol.js +0 -161
- package/dist/wallet/mining/hook-runner.js +0 -52
- package/dist/wallet/mining/hooks.d.ts +0 -38
- package/dist/wallet/mining/hooks.js +0 -520
- package/dist/wallet/state/explicit-lock.d.ts +0 -4
- package/dist/wallet/state/explicit-lock.js +0 -19
- package/dist/wallet/state/session.d.ts +0 -12
- package/dist/wallet/state/session.js +0 -23
- /package/dist/wallet/{mining/hook-runner.d.ts → state/client-password-agent.d.ts} +0 -0
|
@@ -6,7 +6,13 @@ type ReadyWalletMutationContext = WalletReadContext & {
|
|
|
6
6
|
snapshot: NonNullable<WalletReadContext["snapshot"]>;
|
|
7
7
|
model: NonNullable<WalletReadContext["model"]>;
|
|
8
8
|
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export interface ResolvedWalletIdentity {
|
|
10
|
+
index: 0;
|
|
11
|
+
scriptPubKeyHex: string;
|
|
12
|
+
address: string | null;
|
|
13
|
+
observedCogBalance: bigint | null;
|
|
14
|
+
readOnly: false;
|
|
15
|
+
}
|
|
16
|
+
export declare function getCanonicalIdentitySelector(identity: ResolvedWalletIdentity): string;
|
|
17
|
+
export declare function resolveIdentityBySelector(context: ReadyWalletMutationContext, selector: string, errorPrefix: string): ResolvedWalletIdentity;
|
|
12
18
|
export {};
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
+
import { getBalance } from "@cogcoin/indexer/queries";
|
|
1
2
|
import { serializeDomainReg } from "../cogop/index.js";
|
|
3
|
+
function resolveWalletIdentity(context) {
|
|
4
|
+
return {
|
|
5
|
+
index: 0,
|
|
6
|
+
scriptPubKeyHex: context.model.walletScriptPubKeyHex,
|
|
7
|
+
address: context.model.walletAddress,
|
|
8
|
+
observedCogBalance: getBalance(context.snapshot.state, new Uint8Array(Buffer.from(context.model.walletScriptPubKeyHex, "hex"))),
|
|
9
|
+
readOnly: false,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
2
12
|
function normalizeDomainName(value, errorCode) {
|
|
3
13
|
const normalized = value.trim().toLowerCase();
|
|
4
14
|
if (normalized.length === 0) {
|
|
@@ -8,45 +18,17 @@ function normalizeDomainName(value, errorCode) {
|
|
|
8
18
|
return normalized;
|
|
9
19
|
}
|
|
10
20
|
export function getCanonicalIdentitySelector(identity) {
|
|
11
|
-
return identity.
|
|
21
|
+
return identity.address ?? `spk:${identity.scriptPubKeyHex}`;
|
|
12
22
|
}
|
|
13
23
|
export function resolveIdentityBySelector(context, selector, errorPrefix) {
|
|
24
|
+
const walletIdentity = resolveWalletIdentity(context);
|
|
25
|
+
if (walletIdentity.address === null && walletIdentity.scriptPubKeyHex.length === 0) {
|
|
26
|
+
throw new Error(`${errorPrefix}_sender_not_found`);
|
|
27
|
+
}
|
|
14
28
|
const trimmed = selector.trim();
|
|
15
29
|
if (trimmed === "") {
|
|
16
30
|
throw new Error(`${errorPrefix}_sender_selector_missing`);
|
|
17
31
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const identity = context.model.identities.find((entry) => entry.index === index) ?? null;
|
|
21
|
-
if (identity === null) {
|
|
22
|
-
throw new Error(`${errorPrefix}_sender_not_found`);
|
|
23
|
-
}
|
|
24
|
-
return identity;
|
|
25
|
-
}
|
|
26
|
-
if (trimmed.startsWith("domain:")) {
|
|
27
|
-
const domainName = normalizeDomainName(trimmed.slice(7), `${errorPrefix}_sender_selector_invalid_domain`);
|
|
28
|
-
const domain = context.model.domains.find((entry) => entry.name === domainName) ?? null;
|
|
29
|
-
if (domain === null || domain.ownerLocalIndex === null) {
|
|
30
|
-
throw new Error(`${errorPrefix}_sender_not_found`);
|
|
31
|
-
}
|
|
32
|
-
const identity = context.model.identities.find((entry) => entry.index === domain.ownerLocalIndex) ?? null;
|
|
33
|
-
if (identity === null) {
|
|
34
|
-
throw new Error(`${errorPrefix}_sender_not_found`);
|
|
35
|
-
}
|
|
36
|
-
return identity;
|
|
37
|
-
}
|
|
38
|
-
if (trimmed.startsWith("spk:")) {
|
|
39
|
-
const scriptPubKeyHex = trimmed.slice(4).toLowerCase();
|
|
40
|
-
const identity = context.model.identities.find((entry) => entry.scriptPubKeyHex === scriptPubKeyHex) ?? null;
|
|
41
|
-
if (identity === null) {
|
|
42
|
-
throw new Error(`${errorPrefix}_sender_not_found`);
|
|
43
|
-
}
|
|
44
|
-
return identity;
|
|
45
|
-
}
|
|
46
|
-
const normalizedAddress = trimmed.toLowerCase();
|
|
47
|
-
const identity = context.model.identities.find((entry) => entry.address?.toLowerCase() === normalizedAddress) ?? null;
|
|
48
|
-
if (identity === null) {
|
|
49
|
-
throw new Error(`${errorPrefix}_sender_not_found`);
|
|
50
|
-
}
|
|
51
|
-
return identity;
|
|
32
|
+
void normalizeDomainName;
|
|
33
|
+
return walletIdentity;
|
|
52
34
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
export { transferBitcoin, type BitcoinTransferResult, } from "./bitcoin-transfer.js";
|
|
1
2
|
export { extractOpReturnPayloadFromScriptHex, registerDomain, type RegisterDomainResult, } from "./register.js";
|
|
3
|
+
export type { WalletMutationFeeSelectionSource, WalletMutationFeeSummary, } from "./common.js";
|
|
2
4
|
export { buyDomain, parseCogAmountToCogtoshi, sellDomain, transferDomain, type DomainMarketMutationResult, } from "./domain-market.js";
|
|
3
5
|
export { claimCogLock, lockCogToDomain, reclaimCogLock, sendCog, type CogMutationResult, } from "./cog.js";
|
|
4
|
-
export { anchorDomain,
|
|
6
|
+
export { anchorDomain, type AnchorDomainResult, } from "./anchor.js";
|
|
5
7
|
export { clearDomainDelegate, clearDomainEndpoint, clearDomainMiner, setDomainCanonical, setDomainDelegate, setDomainEndpoint, setDomainMiner, type DomainAdminMutationResult, } from "./domain-admin.js";
|
|
6
8
|
export { clearField, createField, setField, type ClearFieldOptions, type CreateFieldOptions, type FieldMutationResult, type FieldValueInputSource, type SetFieldOptions, } from "./field.js";
|
|
7
9
|
export { giveReputation, revokeReputation, type GiveReputationOptions, type ReputationMutationResult, type RevokeReputationOptions, } from "./reputation.js";
|
package/dist/wallet/tx/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
export { transferBitcoin, } from "./bitcoin-transfer.js";
|
|
1
2
|
export { extractOpReturnPayloadFromScriptHex, registerDomain, } from "./register.js";
|
|
2
3
|
export { buyDomain, parseCogAmountToCogtoshi, sellDomain, transferDomain, } from "./domain-market.js";
|
|
3
4
|
export { claimCogLock, lockCogToDomain, reclaimCogLock, sendCog, } from "./cog.js";
|
|
4
|
-
export { anchorDomain,
|
|
5
|
+
export { anchorDomain, } from "./anchor.js";
|
|
5
6
|
export { clearDomainDelegate, clearDomainEndpoint, clearDomainMiner, setDomainCanonical, setDomainDelegate, setDomainEndpoint, setDomainMiner, } from "./domain-admin.js";
|
|
6
7
|
export { clearField, createField, setField, } from "./field.js";
|
|
7
8
|
export { giveReputation, revokeReputation, } from "./reputation.js";
|
|
@@ -6,7 +6,7 @@ import type { WalletPrompter } from "../lifecycle.js";
|
|
|
6
6
|
import { type WalletRuntimePaths } from "../runtime.js";
|
|
7
7
|
import { type WalletSecretProvider } from "../state/provider.js";
|
|
8
8
|
import { openWalletReadContext } from "../read/index.js";
|
|
9
|
-
import { type WalletMutationRpcClient } from "./common.js";
|
|
9
|
+
import { type WalletMutationFeeSummary, type WalletMutationRpcClient } from "./common.js";
|
|
10
10
|
interface WalletRegisterRpcClient extends WalletMutationRpcClient {
|
|
11
11
|
getBlockchainInfo(): Promise<{
|
|
12
12
|
blocks: number;
|
|
@@ -46,10 +46,12 @@ export interface RegisterDomainResult {
|
|
|
46
46
|
txid: string;
|
|
47
47
|
status: "live" | "confirmed";
|
|
48
48
|
reusedExisting: boolean;
|
|
49
|
+
fees: WalletMutationFeeSummary;
|
|
49
50
|
}
|
|
50
51
|
export interface RegisterDomainOptions {
|
|
51
52
|
domainName: string;
|
|
52
53
|
fromIdentity?: string | null;
|
|
54
|
+
feeRateSatVb?: number | null;
|
|
53
55
|
dataDir: string;
|
|
54
56
|
databasePath: string;
|
|
55
57
|
forceRace?: boolean;
|